https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117201
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- unsigned char a = 193; unsigned char *b = &a; void foo (void) { unsigned char c[] = { 0, 2, 1, 1, 2, 1, 2, 2, 6, 2, 1, 1, 1, 1, 2, 2, 0, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 4, 8, 8, 3, 3, 1, 1, 5, 4, 1, 1, 1, 0, 5, 5, 9, 4, 8, 8, 7, 0, 1, 1 }; } int main () { unsigned char c[] = { 193, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 5, 2, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 4, 2, 2, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 5, 3, 3, 1, 0, 1, 0, 0, 1, 0, 1, 0 }; if (b[0] != c[0]) __builtin_abort (); } I think the bug is during WPA stage, it streams in 2 RAW_DATA_CSTs (one for each CONSTRUCTOR), but streams out just one.