OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.eh/] [catch11.C] - Blame information for rev 823

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
// { dg-do run  }
2
// Copyright (C) 2000 Free Software Foundation, Inc.
3
// Contributed by Nathan Sidwell 24 May 2000 
4
 
5
// we should be able to catch a base a virtual, provided it is accessible by at
6
// least one public path
7
// -- public, << private, == virtual
8
// E<
9
// +--C==A
10
// +<
11
 
12
struct A {};
13
struct B : virtual A {};
14
struct C : virtual A {};
15
struct D : virtual A {};
16
struct E : private B, public C, private D {};
17
 
18
extern "C" void abort ();
19
 
20
void fne (E *e)
21
{
22
  throw e;
23
}
24
 
25
void check(E *e)
26
{
27
  int caught;
28
 
29
  caught = 0;
30
  try { fne(e); }
31
  catch(A *p) { caught = 1; if (p != e) abort();}
32
  catch(...) { abort(); }
33
  if (!caught) abort();
34
 
35
  caught = 0;
36
  try { fne(e); }
37
  catch(B *p) { abort ();}
38
  catch(...) { caught = 1; }
39
  if (!caught) abort();
40
 
41
  caught = 0;
42
  try { fne(e); }
43
  catch(C *p) { caught = 1; if (p != e) abort();}
44
  catch(...) { abort(); }
45
  if (!caught) abort();
46
 
47
  caught = 0;
48
  try { fne(e); }
49
  catch(D *p) { abort ();}
50
  catch(...) { caught = 1; }
51
  if (!caught) abort();
52
 
53
  return;
54
}
55
 
56
int main ()
57
{
58
  E e;
59
 
60
  check (&e);
61
  check ((E *)0);
62
 
63
  return 0;
64
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.