FSF GCC merge 02/23/03
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.eh / ia64-1.C
blobec022641e27ad3f1680ffa9c9a23751e8db6fb96
1 // Special g++ Options: -O2
3 #include <exception>
5 using namespace std;
7 extern "C" void abort();
9 int i_0, i_1, i_2, i_3, i_4, i_5, i_6, i_7, i_8, i_9;
10 int j_0, j_1, j_2, j_3, j_4, j_5, j_6, j_7, j_8, j_9;
11 int k_0, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9;
12 int l_0, l_1, l_2, l_3, l_4, l_5, l_6, l_7, l_8, l_9;
13 #define A(x,y,n) register int *x##n = &y##_##n;
14 #define B(x,y) \
15   A(x,y,0) A(x,y,1) A(x,y,2) A(x,y,3) A(x,y,4) \
16   A(x,y,5) A(x,y,6) A(x,y,7) A(x,y,8) A(x,y,9)
17 #define C(x,n) asm volatile ("" : "=r" (x##n) : "0" (x##n));
18 #define D(x) \
19   C(x,0) C(x,1) C(x,2) C(x,3) C(x,4) \
20   C(x,5) C(x,6) C(x,7) C(x,8) C(x,9)
21 #define E(x,y,n) if (x##n != &y##_##n) abort ();
22 #define F(x,y) \
23   E(x,y,0) E(x,y,1) E(x,y,2) E(x,y,3) E(x,y,4) \
24   E(x,y,5) E(x,y,6) E(x,y,7) E(x,y,8) E(x,y,9)
26 void bar(long a0, long a1, long a2, long a3, long a4)
30 void foo(long a0, long a1, long a2, long a3, long a4)
32   A(p,l,0) A(p,l,1) A(p,l,2)
33   C(p,0) C(p,1) C(p,2)
34   bar (0, 1, 2, 3, 4);
35   if (a0 == 0)
36     throw exception();
37   C(p,0) C(p,1) C(p,2)
38   E(p,l,0) E(p,l,1) E(p,l,2)
41 void test(void)
43   A(p,l,0) A(p,l,1) A(p,l,2) A(p,l,3) A(p,l,4) A(p,l,5) A(p,l,6)
44   C(p,0) C(p,1) C(p,2) C(p,3) C(p,4) C(p,5) C(p,6)
45   try {
46     foo(0, 1, 2, 3, 4);
47   } catch (exception) {}
48   C(p,0) C(p,1) C(p,2) C(p,3) C(p,4) C(p,5) C(p,6)
49   E(p,l,0) E(p,l,1) E(p,l,2) E(p,l,3) E(p,l,4) E(p,l,5) E(p,l,6)
52 int main()
54   B(x,i)
55   B(y,j)
56   B(z,k)
57   A(p,l,0) A(p,l,1) A(p,l,2) A(p,l,3)
58   D(x)
59   D(y)
60   D(z)
61   C(p,0) C(p,1) C(p,2) C(p,3)
62   test();
63   D(x)
64   D(y)
65   D(z)
66   C(p,0) C(p,1) C(p,2) C(p,3)
67   F(x,i)
68   F(y,j)
69   F(z,k)
70   E(p,l,0) E(p,l,1) E(p,l,2) E(p,l,3)
71   return 0;