| /* { dg-lto-do run } */ |
| /* { dg-lto-options { { -O3 -flto -fno-early-inlining -fdump-ipa-cgraph} } } */ |
| __attribute__ ((used)) |
| short *ptr_init, **ptr=&ptr_init; |
| |
| __attribute__ ((used)) |
| struct a { |
| int *aptr; |
| /* On ARM va_list is an anonymous structure containing pointer. |
| This disable ODR TBAA on it. */ |
| short b; |
| } a, *aptr=&a; |
| |
| void |
| write_ptr () |
| { |
| *aptr = a; |
| } |
| |
| __attribute__ ((used)) |
| void |
| test () |
| { |
| *ptr = (short int *)0; |
| write_ptr (); |
| if (!__builtin_constant_p (*ptr == (void *)0)) |
| __builtin_abort (); |
| } |
| int |
| main() |
| { |
| test (); |
| return 0; |
| } |
| /* On ARM the testcase used to fail because struct a got in conflict with builtin |
| va_list type. Check that this does not happen. */ |
| /* { dg-final { scan-wpa-ipa-dump-not "ODR and non-ODR type conflict" "cgraph" } } */ |