blob: 3de0175e70a7eb7a050d85f6ffe36fd972c1f0b2 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-add-options bind_pic_locally } */
typedef struct A { int a,b; } A;
int*g(int*x){return x;}
int*f1(){
A x[2]={{1,2},{3,4}};
return g(&x[1].a); // { dg-warning "returns address of local variable" }
}
int*f2(int n){
A x[2]={{1,2},{3,4}};
return n?0:g(&x[1].a); // { dg-warning "may return address of local variable" }
}
A y[2]={{1,2},{3,4}};
int*h(){
return g(&y[1].a);
}
int*j(int n){
A x[2]={{1,2},{3,4}};
int*p=g(&y[1].a);
if(n==1)p=g(&x[1].a);
if(n==2)p=g(&x[0].b);
return p; // { dg-warning "may return address of local variable" }
}
int*s()
{
static int i;
return &i;
}