https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105197
Bug ID: 105197 Summary: [12 Regression] SVE: wrong code with -O -ftree-vectorize Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- The following C code: unsigned char arr_7[9][3]; unsigned char (*main_arr_7)[3] = arr_7; int main() { char arr_2[9]; int arr_6[9]; int x; unsigned i; for (i = 0; i < 9; ++i) { arr_2[i] = 21; arr_6[i] = 6; } for (i = arr_2[8] - 21; i < 2; i++) x = arr_6[i] ? (main_arr_7[8][i] ? main_arr_7[8][i] : 8) : (char)arr_6[i]; if (x != 8) __builtin_abort (); } appears to be miscompiled with -march=armv8.2-a+sve -O -ftree-vectorize. The issue doesn't seem to occur with GCC 11.