https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95798
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Summary|Initialization code --- |[10/11 Regression] |suboptimal |Initialization code --- | |suboptimal Last reconfirmed| |2020-06-22 CC| |jakub at gcc dot gnu.org, | |rdapp at gcc dot gnu.org Target Milestone|--- |10.2 Ever confirmed|0 |1 --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The 9 -> 10 regression started with r10-2806-gdf7d46d925c7baca7bf9961aee900876d8aef225 since which the IL is much larger and the resulting code less efficient. The testcase as written is just weird, it is an expensive check whether the program is called with multiple of 128 arguments >= 1024 arguments (otherwise it invokes UB). Adjusted testcase that is more meaningful: void bar (unsigned long long *, int); void foo (int y, unsigned long long z) { unsigned long long x[1024]; unsigned long long i = y % 127; __builtin_memset (x, -1, sizeof (x)); x[i] = 0; x[i + 1] = 0; x[i + 2] = 0; x[i + 3] = 0; x[i + 4] = 0; x[i + 5] = 0; x[i + 6] = 0; x[i + 7] = 0; bar (x, y); }