https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119153
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2025-09-02 --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. There are 2 different "constant" pools inside GCC. At least on aarch64 the 2 constants could be the same. There will always be one copy on the stack though. because you could have: ``` template <std::size_t N> void g( int const (&il)[N], std::initializer_list<int>); void t() { g({3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}, {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}); } ``` So the first argument and the address of the initializer_list's data can't be the same.