1 // { dg-do run }
2 // { dg-options "-O3" }
3 /* PR c++/28139: disjoint alias sets for the store from
4    expand_start_catch_block than for loading P result in P being loaded
5    before it is initialized for sh-elf.  */
6 
7 extern "C" {
8 void exit (int) __attribute__ ((noreturn));
9 }
10 
11 int i_glob = 42;
12 int *p0 = &i_glob;
13 typedef int **ipp;
14 
15 void
g(int i)16 g (int i)
17 {
18   if (!i_glob)
19     exit ((__SIZE_TYPE__) & i);
20 }
21 
22 static void
h()23 h ()
24 {
25   throw &p0;
26 }
27 
28 int
main()29 main()
30 {
31   g (42);
32   try
33     {
34      h ();
35     }
36   catch (const ipp &p)
37     {
38       if (**p != 42)
39 	exit (1);
40     }
41   return 0;
42 }
43