ChuanqiXu9 wrote:

> I see, so because we no longer allow inconsistent options when importing, we 
> now issue a lot of error diagnostics. But for many of the options, 
> differences between TUs should have no impact on modules anyway, and so those 
> errors are false positives. Is that about correct?

Yes.

> If I'm right, then what about a different way forward: update the individual 
> options to specify whether it is an error, a warning, or silently fine for 
> the option to be inconsistent across module boundaries, the emit diagnostics 
> (or not) as appropriate for each option. It's more up-front work, but it 
> means we stop issue false positive errors without losing diagnostic fidelity. 
> (Note, we may find we want to reorganize Options.td so it's easier for us to 
> specify "this entire block of options are ones for which module inconsistency 
> is an error".)

The problem may be about the amount of work. Although I am not sure how far we 
can make it in practice, it is technically doable.

---

Some other thoughts about false-positive error diagnostics. I am wondering, if 
we don't want false-positive error diagnostics at all, then we have to do what 
I proposed in this PR (to downgrade errors to warnings for inconsistent flags). 
Otherwise, we can always construct at least one example that it is 
false-positive to diagnose the inconsistency. e.g.,

```
/// m1.cppm
export module m1;
// eof

// m2.cpp
import m1;
```

then is it really matter to compile `m1.cppm` with `-std=c++23` and import it 
to `m2.cpp` which is compiled as `-std=c++20`? I don't think so as far as I 
know. So is it a false-positive error diagnostic? I think yes. And `-std=` may 
be the most impactful options, if we can construct cases for `-std=`, then we 
can construct cases for other flags too. Then, if we can't tolerant false 
positive error diagnostics, we should emit warnings instead for all the flags.











https://github.com/llvm/llvm-project/pull/117840
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to