| // { dg-do assemble } |
| // { dg-options "-fexceptions" } |
| // GROUPS passed exceptions |
| // except file |
| // Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com> |
| // From: willoch@ss670mp.oslo.sgp.slb.com (thorbjorn willoch) |
| // Subject: -fansi-exceptions bug |
| // Date: Mon, 30 Nov 92 11:18:05 GMT |
| |
| extern "C" int printf(const char *, ...); |
| |
| class Vector |
| { |
| int* p; |
| int sz; |
| public: |
| Vector(int s) { p = new int[sz=s]; } |
| ~Vector() {delete [] p; } |
| int size() {return sz; } |
| class Range{}; |
| |
| |
| int& operator[](int i); |
| }; |
| |
| int& Vector::operator[](int i) |
| { |
| if(0<=i && i<sz) return p[i]; |
| throw Range(); |
| } |
| |
| void do_something(Vector& v) |
| { |
| int i = v[v.size()+10]; |
| } |
| |
| int |
| main() |
| { |
| Vector v(10); |
| |
| try |
| { |
| do_something(v); |
| } |
| |
| catch (Vector::Range) |
| { |
| printf("Range error exception\n"); |
| } |
| } |