https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111647
Bug ID: 111647 Summary: g++ accepts different c++ on -fchecking= anf checking=2 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org Target Milestone: --- Encountered when was reducing PR111642 where `make bootstrap4` fails. Reduced example: // $ cat rtl-tests.cc.cc struct poly_int { template <typename...> constexpr poly_int() : poly_int() {} }; template <int> void run() { poly_int(); } Here is the mismatch between -fchecking=0 and -fchecking=2: $ /tmp/gb/./prev-gcc/xg++ -B/tmp/gb/./prev-gcc/ -c rtl-tests.cc.cc -o bug -fchecking=0 $ /tmp/gb/./prev-gcc/xg++ -B/tmp/gb/./prev-gcc/ -c rtl-tests.cc.cc -o bug -fchecking=2 rtl-tests.cc.cc: In instantiation of ‘constexpr poly_int::poly_int() [with <template-parameter-1-1> = {}]’: rtl-tests.cc.cc:4:39: required from here rtl-tests.cc.cc:2:58: error: constructor delegates to itself 2 | template <typename...> constexpr poly_int() : poly_int() {} | I think it's an invalid code (clang rejects it as well), but I'm not sure. AFAIU all -fchecking= options should handle it identically. gcc is from r14-4339-geaa41a6dc127d8 $ /tmp/gb/./prev-gcc/xg++ -B/tmp/gb/./prev-gcc/ -v Reading specs from /tmp/gb/./prev-gcc/specs COLLECT_GCC=/tmp/gb/./prev-gcc/xg++ COLLECT_LTO_WRAPPER=/tmp/gb/./prev-gcc/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib --enable-languages=c,c++ CC='gcc -O1 -g0' CXX='g++ -O1 -g0' Thread model: posix Supported LTO compression algorithms: zlib gcc version 14.0.0 20230929 (experimental) (GCC)