1 // PR target/70245
2 // { dg-do compile }
3 // { dg-options "" }
4 
5 #include "pr70245.h"
6 
7 D m;
8 A n, o;
9 int p, q;
10 
11 int *
fn1(char * x,int * y)12 fn1 (char *x, int *y)
13 {
14   *y = 0;
15   return &p;
16 }
17 
18 void
fn2()19 fn2 ()
20 {
21   __builtin_abort ();
22 }
23 
24 void *
fn3(int * x)25 fn3 (int *x)
26 {
27   *x = 0;
28   return (void *) &m;
29 }
30 
31 void *
fn4()32 fn4 ()
33 {
34   a = &o;
35   o.a1.d = 9;
36   m.d = sizeof (D);
37   __builtin_memcpy (o.a2.c, "abcdefghijklmnop", 16);
38   return (void *) &n;
39 }
40 
41 void
fn5(A * x,B * y,unsigned char * z,int * w)42 fn5 (A *x, B *y, unsigned char *z, int *w)
43 {
44   if (x != &n || y != &k || z != (unsigned char *) (&m + 1))
45     __builtin_abort ();
46   q++;
47 }
48 
49 int
main()50 main ()
51 {
52   d = fn5;
53   baz (0);
54   if (q != 1)
55     __builtin_abort ();
56 }
57