36 lines
587 B
C
36 lines
587 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-O2" } */
|
|
|
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
#define REV_ENDIANNESS __attribute__((scalar_storage_order("big-endian")))
|
|
#else
|
|
#define REV_ENDIANNESS __attribute__((scalar_storage_order("little-endian")))
|
|
#endif
|
|
|
|
struct X { int *p; } REV_ENDIANNESS;
|
|
|
|
struct X x;
|
|
|
|
struct X __attribute__((noinline)) foo (int *p)
|
|
{
|
|
struct X x;
|
|
x.p = p;
|
|
return x;
|
|
}
|
|
|
|
void __attribute((noinline)) bar (void)
|
|
{
|
|
*x.p = 1;
|
|
}
|
|
|
|
extern void abort (void);
|
|
|
|
int main (void)
|
|
{
|
|
int i = 0;
|
|
x = foo(&i);
|
|
bar();
|
|
if (i != 1)
|
|
abort ();
|
|
return 0;
|
|
}
|