https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107751
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reduced testcase (removes the templates, also now able to compile as C): typedef const int T1; typedef const int T2; void std_equal(T1* a1, T1* a2, T2* b1); void f() { int a[3] = {1, 2, 3}; T1* x = a; T2* y = a; std_equal(x, x+3, y); }