On Wed, Jun 10, 2026 at 11:50 AM <[email protected]> wrote: > > > > On Jun 10, 2026, at 3:58 AM, Richard Biener <[email protected]> > wrote: > > + int m_saved; > > +}; > > On Tue, Jun 9, 2026 at 9:45 PM Sammy Al Hashemi <[email protected]> wrote: > > > The -Wstrict-aliasing warning was gated on flag_strict_aliasing, so > > passing -fno-strict-aliasing silenced the warning even when explicitly > > requested with -Wstrict-aliasing. The warning analysis is purely > > type-based and does not depend on the optimization being active, so > > temporarily enable flag_strict_aliasing around the alias set query > > calls to get meaningful results for the warning. > > > gcc/c-family/ChangeLog: > > > * c-warn.cc (strict_aliasing_warning): Remove guard on > > flag_strict_aliasing. Temporarily enable it via RAII around > > alias set queries so the warning fires independently. > > > gcc/ChangeLog: > > > * doc/invoke.texi (-Wstrict-aliasing): Document that the > > warning now works independently of -fstrict-aliasing. > > > gcc/testsuite/ChangeLog: > > > * c-c++-common/Wstrict-aliasing2-with-fno.c: New test. > > * c-c++-common/Wstrict-aliasing3-with-fno.c: New test. > > > Signed-off-by: Sammy Al Hashemi <[email protected]> > > --- > > Thanks for your feedback, I'm still new to contributing here so I > > appreciate it. > > > Changes from v2: > > - Added RAII class (auto_override_flag) to save/restore > > flag_strict_aliasing > > - Filled in ChangeLog descriptions > > > gcc/c-family/c-warn.cc | 28 +++++++++++++++++-- > > gcc/doc/invoke.texi | 16 +++++++---- > > .../c-c++-common/Wstrict-aliasing2-with-fno.c | 12 ++++++++ > > .../c-c++-common/Wstrict-aliasing3-with-fno.c | 12 ++++++++ > > 4 files changed, 60 insertions(+), 8 deletions(-) > > create mode 100644 gcc/testsuite/c-c++-common/Wstrict-aliasing2-with-fno.c > > create mode 100644 gcc/testsuite/c-c++-common/Wstrict-aliasing3-with-fno.c > > > diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc > > index 1767d2dc090..072c16f9b64 100644 > > --- a/gcc/c-family/c-warn.cc > > +++ b/gcc/c-family/c-warn.cc > > @@ -685,6 +685,27 @@ warn_if_unused_value (const_tree exp, location_t locus, > bool quiet) > > } > > } > > > +/* RAII guard to temporarily override an integer flag, restoring its > > + original value when the guard goes out of scope. */ > > +class auto_override_flag > > +{ > > +public: > > + auto_override_flag (int &flag, int new_value) > > + : m_flag (flag), m_saved (flag) > > + { > > + m_flag = new_value; > > + } > > + > > + ~auto_override_flag () > > + { > > + m_flag = m_saved; > > + } > > + > > +private: > > + int &m_flag; > > + int m_saved; > > +}; > > > Somehow I think we already have such class, in the C++ frontend? > > > If it’s there I’m happy to make the switch. I’m still new to the codebase and > would be curious if there is a general spot where common utilities like this > belong.
For now you can place it in c-common.h since it is only used for the C++ front-end and the common parts of C/C++ front-ends. Otherwise system.h might be an ok place for common utils that don't fit other places; that maybe a new header file might be useful. Thanks, Andrea
