OSDN Git Service

2010-12-09 Martin Jambor <mjambor@suse.cz>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / tree-ssa / pr46734.C
1 /* { dg-do compile } */
2 /* { dg-options "-O -fipa-sra" } */
3
4 struct A
5 {
6   int *p;
7   A() {p = (int *) -1;}
8   ~A() {if (p && p != (int *) -1) *p = 0;}
9 };
10
11 struct B
12 {
13   A a;
14   char data[23];
15   B() : a() {data[0] = 0;}
16 };
17
18 extern A ga;
19 extern int *gi;
20 extern void *gz;
21 extern B *gb;
22
23 static int * __attribute__ ((noinline)) foo (B *b, void *z)
24 {
25   __builtin_memcpy (gz, z, 28);
26   ga = b->a;
27   return b->a.p;
28 }
29
30 int *bar (B *b, void *z)
31 {
32   gb = b;
33   return foo (b, z);
34 }