comparison gcc/testsuite/c-c++-common/addrtmp.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 /* { dg-add-options bind_pic_locally } */
4
5 typedef struct A { int a,b; } A;
6 int*g(int*x){return x;}
7 int*f1(){
8 A x[2]={{1,2},{3,4}};
9 return g(&x[1].a); // { dg-warning "returns address of local variable" }
10 }
11 int*f2(int n){
12 A x[2]={{1,2},{3,4}};
13 return n?0:g(&x[1].a); // { dg-warning "may return address of local variable" }
14 }
15 A y[2]={{1,2},{3,4}};
16 int*h(){
17 return g(&y[1].a);
18 }
19 int*j(int n){
20 A x[2]={{1,2},{3,4}};
21 int*p=g(&y[1].a);
22 if(n==1)p=g(&x[1].a);
23 if(n==2)p=g(&x[0].b);
24 return p; // { dg-warning "may return address of local variable" }
25 }
26 int*s()
27 {
28 static int i;
29 return &i;
30 }