annotate gcc/testsuite/g++.old-deja/g++.law/except3.C @ 131:84e7813d76e9

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