1 /* As bconstp-1.c, but with the __builtin_constant_p calls inside 2 __builtin_choose_expr. */ 3 /* { dg-do compile } */ 4 5 /* This test checks that builtin_constant_p can be used safely in 6 initializers for static data. The macro X() defined below should 7 be an acceptable initializer expression no matter how complex its 8 argument is. */ 9 10 extern int a; 11 extern int b; 12 13 extern int foo(void); 14 extern int bar(void); 15 16 #define X(exp) (__builtin_choose_expr(1, __builtin_constant_p(exp), 1) ? (exp) : -1) 17 18 const short tests[] = { 19 X(0), 20 X(a), 21 X(0 && a), 22 X(a && b), 23 X(foo()), 24 X(0 && foo()), 25 X(a && foo()), 26 X(foo() && bar()) 27 }; 28