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.