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