Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.c-torture/execute/pr22141-2.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* PR middle-end/22141 */ extern void abort (void); struct S { struct T { char a; char b; char c; char d; } t; } u __attribute__((aligned)); struct U { struct S s[4]; }; void __attribute__((noinline)) c1 (struct T *p) { if (p->a != 1 || p->b != 2 || p->c != 3 || p->d != 4) abort (); __builtin_memset (p, 0xaa, sizeof (*p)); } void __attribute__((noinline)) c2 (struct S *p) { c1 (&p->t); } void __attribute__((noinline)) c3 (struct U *p) { c2 (&p->s[2]); } void __attribute__((noinline)) f1 (void) { u = (struct S) { { 1, 2, 3, 4 } }; } void __attribute__((noinline)) f2 (void) { u.t.a = 1; u.t.b = 2; u.t.c = 3; u.t.d = 4; } void __attribute__((noinline)) f3 (void) { u.t.d = 4; u.t.b = 2; u.t.a = 1; u.t.c = 3; } void __attribute__((noinline)) f4 (void) { struct S v __attribute__((aligned)); v.t.a = 1; v.t.b = 2; v.t.c = 3; v.t.d = 4; c2 (&v); } void __attribute__((noinline)) f5 (struct S *p) { p->t.a = 1; p->t.c = 3; p->t.d = 4; p->t.b = 2; } void __attribute__((noinline)) f6 (void) { struct U v __attribute__((aligned)); v.s[2].t.a = 1; v.s[2].t.b = 2; v.s[2].t.c = 3; v.s[2].t.d = 4; c3 (&v); } void __attribute__((noinline)) f7 (struct U *p) { p->s[2].t.a = 1; p->s[2].t.c = 3; p->s[2].t.d = 4; p->s[2].t.b = 2; } int main (void) { struct U w __attribute__((aligned)); f1 (); c2 (&u); f2 (); c1 (&u.t); f3 (); c2 (&u); f4 (); f5 (&u); c2 (&u); f6 (); f7 (&w); c3 (&w); return 0; }