1 // { dg-do assemble } 2 // { dg-options "-fexceptions" } 3 // GROUPS passed exceptions 4 // except file 5 // Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com> 6 // From: willoch@ss670mp.oslo.sgp.slb.com (thorbjorn willoch) 7 // Subject: -fansi-exceptions bug 8 // Date: Mon, 30 Nov 92 11:18:05 GMT 9 10 extern "C" int printf(const char *, ...); 11 12 class Vector 13 { 14 int* p; 15 int sz; 16 public: Vector(int s)17 Vector(int s) { p = new int[sz=s]; } ~Vector()18 ~Vector() {delete [] p; } size()19 int size() {return sz; } 20 class Range{}; 21 22 23 int& operator[](int i); 24 }; 25 26 int& Vector::operator[](int i) 27 { 28 if(0<=i && i<sz) return p[i]; 29 throw Range(); 30 } 31 do_something(Vector & v)32void do_something(Vector& v) 33 { 34 int i = v[v.size()+10]; 35 } 36 37 int main()38main() 39 { 40 Vector v(10); 41 42 try 43 { 44 do_something(v); 45 } 46 47 catch (Vector::Range) 48 { 49 printf("Range error exception\n"); 50 } 51 } 52