Patrick Palka <ppa...@redhat.com> writes: > On Wed, 2 Oct 2024, Jonathan Wakely wrote: > >> I think we should do this. >> >> Tested x86_64-linux. >> >> -- >8 -- >> >> Too many users don't know about -D_GLIBCXX_ASSERTIONS and so are missing >> valuable checks for C++ standard library preconditions. This change >> enables libstdc++ assertions by default when compiling with -O0 so that >> we diagnose more bugs by default. >> >> When users enable optimization we don't add the assertions by default >> (because they have non-zero overhead) so they still need to enable them >> manually. >> >> For users who really don't want the assertions even in unoptimized >> builds, defining _GLIBCXX_NO_ASSERTIONS will prevent them from being >> enabled automatically. >> >> libstdc++-v3/ChangeLog: >> >> PR libstdc++/112808 >> * doc/xml/manual/using.xml (_GLIBCXX_ASSERTIONS): Document >> implicit definition for -O0 compilation. >> (_GLIBCXX_NO_ASSERTIONS): Document. >> * doc/html/manual/using_macros.html: Regenerate. >> * include/bits/c++config [!__OPTIMIZE__] (_GLIBCXX_ASSERTIONS): >> Define for unoptimized builds. > > LGTM. At -O0 the additional overhead of the assertions would be > relatively small compared to the overhead of -O0 itself.
On that note, maybe we could add a __OPTIMIZE_DEBUG__ or similar so that we can do a similar thing for -Og (which some use for their development cycle). -- Arsen Arsenović
signature.asc
Description: PGP signature