atetubou wrote: Thank you for the detailed reviews, Hans and Nico. You are both exactly right about the hermeticity concern.
Addressing Hermeticity (Hans's concern): I have updated the patch to avoid breaking the diagnostic hermeticity established in e37391c. Instead of checking the SuppressSystemWarnings bit of the current DiagState, I introduced a new `ForceSystemWarnings` flag in DiagnosticsEngine that lives outside of the DiagState mechanism. * ForceSystemWarnings is global and non-hermetic: It is not saved to or restored from PCMs. * It is intended strictly for intentional, temporary overrides like the one in SemaAvailability. * Preserving Isolation: Command-line flags like -Wsystem-headers only modify the initial DiagState. When Clang enters code from a module, the module's own DiagState is restored, preserving its build-time configuration. Since -Wsystem-headers does not touch ForceSystemWarnings, it will not incorrectly resurface unrelated system warnings inside the module. ShowInSystemHeader & Expanded Testing (Nico's suggestion): I have expanded the test GH170429.cpp to include a case for -Wdelete-non-virtual-dtor (which has ShowInSystemHeader set) as suggested. The test now explicitly verifies three scenarios: 1. Targeted fix: deprecated warnings from system modules are shown during user-triggered instantiation (via the RAII override). 2. Consistency: Warnings with ShowInSystemHeader continue to be emitted as expected. 3. Hermeticity Verification: Unrelated warnings suppressed during module build (e.g., -Wextra-semi) remain suppressed even when the user compiles with -Wsystem-headers, ensuring we don't undo the effect of e37391c. https://github.com/llvm/llvm-project/pull/180684 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
