-
- Downloads
diagnostic: add permerror variants with opt
In the discussion of promoting some pedwarns to be errors by default, rather than move them all into -fpermissive it seems to me to make sense to support DK_PERMERROR with an option flag. This way will also work with -fpermissive, but users can also still use -Wno-error=narrowing to downgrade that specific diagnostic rather than everything affected by -fpermissive. So, for diagnostics that we want to make errors by default we can just change the pedwarn call to permerror. The tests check desired behavior for such a permerror in a system header with various flags. The patch preserves the existing permerror behavior of ignoring -w and system headers by default, but respecting them when downgraded to a warning by -fpermissive. This seems similar to but a bit better than the approach of forcing -pedantic-errors that I previously used for -Wnarrowing: specifically, in that now -w by itself is not enough to silence the -Wnarrowing error (integer-pack2.C). gcc/ChangeLog: * doc/invoke.texi: Move -fpermissive to Warning Options. * diagnostic.cc (update_effective_level_from_pragmas): Remove redundant system header check. (diagnostic_report_diagnostic): Move down syshdr/-w check. (diagnostic_impl): Handle DK_PERMERROR with an option number. (permerror): Add new overloads. * diagnostic-core.h (permerror): Declare them. gcc/cp/ChangeLog: * typeck2.cc (check_narrowing): Use permerror. gcc/testsuite/ChangeLog: * g++.dg/ext/integer-pack2.C: Add -fpermissive. * g++.dg/diagnostic/sys-narrow.h: New test. * g++.dg/diagnostic/sys-narrow1.C: New test. * g++.dg/diagnostic/sys-narrow1a.C: New test. * g++.dg/diagnostic/sys-narrow1b.C: New test. * g++.dg/diagnostic/sys-narrow1c.C: New test. * g++.dg/diagnostic/sys-narrow1d.C: New test. * g++.dg/diagnostic/sys-narrow1e.C: New test. * g++.dg/diagnostic/sys-narrow1f.C: New test. * g++.dg/diagnostic/sys-narrow1g.C: New test. * g++.dg/diagnostic/sys-narrow1h.C: New test. * g++.dg/diagnostic/sys-narrow1i.C: New test.
Showing
- gcc/cp/typeck2.cc 3 additions, 7 deletionsgcc/cp/typeck2.cc
- gcc/diagnostic-core.h 3 additions, 0 deletionsgcc/diagnostic-core.h
- gcc/diagnostic.cc 43 additions, 24 deletionsgcc/diagnostic.cc
- gcc/doc/invoke.texi 14 additions, 8 deletionsgcc/doc/invoke.texi
- gcc/testsuite/g++.dg/diagnostic/sys-narrow.h 2 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow.h
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1.C 4 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1a.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1a.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1b.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1b.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1c.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1c.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1d.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1d.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1e.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1e.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1f.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1f.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1g.C 5 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1g.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1h.C 6 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1h.C
- gcc/testsuite/g++.dg/diagnostic/sys-narrow1i.C 6 additions, 0 deletionsgcc/testsuite/g++.dg/diagnostic/sys-narrow1i.C
- gcc/testsuite/g++.dg/ext/integer-pack2.C 1 addition, 1 deletiongcc/testsuite/g++.dg/ext/integer-pack2.C
Loading
Please register or sign in to comment