Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr35833.c
blob2e740f29f84137ed03e84dea07cd91de77bc7485
1 /* { dg-do run } */
2 /* { dg-options "-ftree-vrp" } */
4 struct S {struct S *field;};
5 struct S True, False, Z;
6 static inline int f(void) {return 1;}
7 static inline int g(struct S **obj) {
8 return f() && *obj == &Z;
10 struct S **h(struct S **x) {
11 if (x)
12 return g(x) ? &True.field : &False.field;
13 else
14 return &True.field;
16 extern void abort (void);
17 int main()
19 if (h(&False.field) != &False.field)
20 abort ();
21 return 0;