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 10extern int a; 11extern int b; 12 13extern int foo(void); 14extern int bar(void); 15 16#define X(exp) (__builtin_choose_expr(1, __builtin_constant_p(exp), 1) ? (exp) : -1) 17 18const 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