annotate gcc/testsuite/g++.dg/opt/pr70245.C @ 131:84e7813d76e9

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