https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65396
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The testcase from PR 93415 shows this can produce wrong code too: template <bool B> void f (int); template <bool B = true> void f (int) {} template <bool B = true> void f (char) { __builtin_abort (); } int main () { f (0); return 0; }