1 // { dg-do run  }
2 // Bug: catching pointers by reference doesn't work right.
3 
4 extern "C" int printf (const char *, ...);
5 
6 struct E {
7   int x;
EE8   E(int i) { x = i; }
9 };
10 
main()11 int main()
12 {
13   try {
14     E *p = new E(5);
15     throw p;
16   }
17 
18   catch (E *&e) {
19     printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e);
20     printf ("(__SIZE_TYPE__)e: %d ( != 5 ?)\n", (__SIZE_TYPE__)e);
21     printf ("            e->x: %d ( == 5 ?)\n", e->x);
22     return !((__SIZE_TYPE__)e != 5 && e->x == 5);
23   }
24   return 2;
25 }
26