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; 8 E(int i) { x = i; } 9 }; 10 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