Fix factor_out_conditional_operation heuristics for constants
[official-gcc.git] / gcc / testsuite / gcc.dg / ipa / ipa-sra-8.c
blobdd5c5d0c32b4d539fdd1bc7548b88c8031eb0402
1 /* { dg-do run } */
2 /* { dg-options "-O3" } */
4 typedef unsigned int myint __attribute__((aligned(1)));
6 typedef struct S {
7 unsigned a, b, c;
8 } SS;
10 typedef SS __attribute__((aligned(1))) SSS;
13 static unsigned int __attribute__ ((noinline))
14 get_a (SSS s)
16 return s.a;
19 static int __attribute__ ((noinline, noclone))
20 foo (SSS *p)
22 int r = (int) get_a(*p) + 2;
23 return r;
26 char buf[512];
28 static SSS * __attribute__ ((noinline, noclone))
29 get_sss (void)
31 return (SSS *)(buf + 1);
34 int
35 main(int argc, char *argv[])
37 SSS *p = get_sss();
38 if (foo(p) != 2)
39 __builtin_abort ();
40 return 0;