Hybrid EVRP and testcases
[gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / forwprop-29.c
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 }