// { dg-do run } | |
// { dg-options "-O3" } | |
/* PR c++/28139: disjoint alias sets for the store from | |
expand_start_catch_block than for loading P result in P being loaded | |
before it is initialized for sh-elf. */ | |
extern "C" { | |
void exit (int) __attribute__ ((noreturn)); | |
} | |
int i_glob = 42; | |
int *p0 = &i_glob; | |
typedef int **ipp; | |
void | |
g (int i) | |
{ | |
if (!i_glob) | |
exit ((__SIZE_TYPE__) & i); | |
} | |
static void | |
h () | |
{ | |
throw &p0; | |
} | |
int | |
main() | |
{ | |
g (42); | |
try | |
{ | |
h (); | |
} | |
catch (const ipp &p) | |
{ | |
if (**p != 42) | |
exit (1); | |
} | |
return 0; | |
} |