| /* { dg-options "-O2 -fno-ipa-icf" } */ |
| |
| void runtime_error (void) __attribute__ ((noreturn)); |
| void compiletime_error (void) __attribute__ ((noreturn, error (""))); |
| |
| static void |
| compiletime_check_equals_1 (int *x, int y) |
| { |
| int __p = *x != y; |
| if (__builtin_constant_p (__p) && __p) |
| compiletime_error (); |
| if (__p) |
| runtime_error (); |
| } |
| |
| static void |
| compiletime_check_equals_2 (int *x, int y) |
| { |
| int __p = *x != y; |
| if (__builtin_constant_p (__p) && __p) |
| compiletime_error (); /* { dg-error "call to" } */ |
| if (__p) |
| runtime_error (); |
| } |
| |
| void |
| foo (int *x) |
| { |
| compiletime_check_equals_1 (x, 5); |
| compiletime_check_equals_2 (x, 10); |
| } |