111
|
1 // PR target/70245
|
|
2 // { dg-do run }
|
|
3 // { dg-additional-sources "pr70245-aux.cc" }
|
|
4 // { dg-options "-O2" }
|
|
5 // { dg-additional-options "-fPIC" { target fpic } }
|
|
6 // { dg-additional-options "-march=i386 -mtune=atom" { target ia32 } }
|
|
7
|
|
8 #include "pr70245.h"
|
|
9
|
|
10 struct A *a, *i;
|
|
11 int b, c, e, l;
|
|
12 F d;
|
|
13
|
|
14 static A *
|
|
15 foo (B *x, int *y, int *z)
|
|
16 {
|
|
17 unsigned char *f = (unsigned char *) fn3 (y);
|
|
18 D *g = (D *) f;
|
|
19 A *h;
|
|
20 if (e || a || c || b || g->d)
|
|
21 return 0;
|
|
22 h = (A *) fn4 ();
|
|
23 __builtin_memcpy (h, a, sizeof (A));
|
|
24 h->a1 = *(D *) f;
|
|
25 if (d)
|
|
26 {
|
|
27 d (h, x, f + g->d, z);
|
|
28 if (*z)
|
|
29 fn2 ();
|
|
30 }
|
|
31 return h;
|
|
32 }
|
|
33
|
|
34 static A *
|
|
35 bar (B *x, int *y)
|
|
36 {
|
|
37 int *j = fn1 (x->b, y);
|
|
38 if (*y > 0)
|
|
39 return 0;
|
|
40 i = foo (x, j, y);
|
|
41 return i;
|
|
42 }
|
|
43
|
|
44 B k;
|
|
45
|
|
46 void
|
|
47 baz (int x)
|
|
48 {
|
|
49 if (x)
|
|
50 bar (0, 0);
|
|
51 bar (&k, &l);
|
|
52 }
|