https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105438
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- So the 2 following functions are merged: void _Z9configureILi7EEvRAT__Kii.part.0<7> (const int[7] & in, const int nrows) { ... void _Z9configureILi2EEvRAT__Kii.part.0<2> (const int[2] & in, const int nrows) { ... which have a different argument in. However I don't think one can't end with a wrong code as nrows argument would be different in: _Z9configureILi7EEvRAT__Kii.part.0<7> (&longer, 7); _Z9configureILi2EEvRAT__Kii.part.0<2> (&shorter, 2); I was unable to come up with a code that would be miscompiled.