43 lines
565 B
C
43 lines
565 B
C
// { 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;
|
|
}
|