111
|
1 /* { dg-options "-O2 -fno-ipa-icf" } */
|
|
2
|
|
3 void runtime_error (void) __attribute__ ((noreturn));
|
|
4 void compiletime_error (void) __attribute__ ((noreturn, error ("")));
|
|
5
|
|
6 static void
|
|
7 compiletime_check_equals_1 (int *x, int y)
|
|
8 {
|
|
9 int __p = *x != y;
|
|
10 if (__builtin_constant_p (__p) && __p)
|
|
11 compiletime_error ();
|
|
12 if (__p)
|
|
13 runtime_error ();
|
|
14 }
|
|
15
|
|
16 static void
|
|
17 compiletime_check_equals_2 (int *x, int y)
|
|
18 {
|
|
19 int __p = *x != y;
|
|
20 if (__builtin_constant_p (__p) && __p)
|
|
21 compiletime_error (); /* { dg-error "call to" } */
|
|
22 if (__p)
|
|
23 runtime_error ();
|
|
24 }
|
|
25
|
|
26 void
|
|
27 foo (int *x)
|
|
28 {
|
|
29 compiletime_check_equals_1 (x, 5);
|
|
30 compiletime_check_equals_2 (x, 10);
|
|
31 }
|