re PR c++/60517 (warning/error for taking address of member of a temporary object)
[official-gcc.git] / gcc / testsuite / c-c++-common / addrtmp.c
blob3b8140cf80557196ca2c712c8253748e3cd7019f
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
4 typedef struct A { int a,b; } A;
5 int*g(int*x){return x;}
6 int*f1(){
7 A x[2]={{1,2},{3,4}};
8 return g(&x[1].a); // { dg-warning "returns address of local variable" }
10 int*f2(int n){
11 A x[2]={{1,2},{3,4}};
12 return n?0:g(&x[1].a); // { dg-warning "may return address of local variable" }
14 A y[2]={{1,2},{3,4}};
15 int*h(){
16 return g(&y[1].a);
18 int*j(int n){
19 A x[2]={{1,2},{3,4}};
20 int*p=g(&y[1].a);
21 if(n==1)p=g(&x[1].a);
22 if(n==2)p=g(&x[0].b);
23 return p; // { dg-warning "may return address of local variable" }
25 int*s()
27 static int i;
28 return &i;