https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111720
--- Comment #14 from Li Pan <pan2.li at intel dot com> --- Looks like option -fmerge-all-constants doesn't work for this case, as well as RISC-V. For RISC-V, the CLOBBER exists after tree gimple. void test (vuint8m1_t *out) { uint8_t arr[32] = {1, 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9, 1, 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9}; *out = *(vuint8m1_t *)arr; } void test (vuint8m1_t * out) { uint8_t arr[32]; try { arr = "\x01\x02\x07\x01\x03\x04\x05\x03\x01\x00\x01\x02\x04\x04\t\t\x01\x02\x07\x01\x03\x04\x05\x03\x01\x00\x01\x02\x04\x04\t\t"; arr.0_1 = &arr; _2 = MEM[(vuint8m1_t *)arr.0_1]; *out = _2; } finally { arr = {CLOBBER(eol)}; } }