/* { dg-do run } */ /* { dg-options "-O" } */ /* The following are testcases for native_interpret_int, native_interpret_complex and native_interpret_vector decoding pieces of a string constant encoded by native_encode_string. */ extern void abort (void); /* We should fold all reads from xconstant and eliminate it, removing the reference to blah which cannot be resolved at link time. */ extern int blah; static const struct { int *y; const char x[32] __attribute__((aligned(32))); } xconstant = { &blah, "01234567899876543210123456789000" }; typedef int v4si __attribute__((vector_size(16))); int main() { if (sizeof (int) != 4) return 0; if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) { if (*(int *)&xconstant.x[4] != 0x34353637) abort (); if ((*(v4si *)&xconstant.x[16])[1] != 0x31323334) abort (); if (__imag (*(_Complex int *)&xconstant.x[8]) != 0x37363534) abort (); } else if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) { if (*(int *)&xconstant.x[4] != 0x37363534) abort (); if ((*(v4si *)&xconstant.x[16])[1] != 0x34333231) abort (); if (__imag (*(_Complex int *)&xconstant.x[8]) != 0x34353637) abort (); } return 0; }