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