8sa1-gcc/gcc/testsuite/g++.old-deja/g++.other/dyncast5.C
Zack Weinberg d2b51b106a Relative to g++.dg/special:
* conpr-1.C, conpr-2.C, conpr-3.C: Include stdlib.h.

	Relative to g++.old-deja:
	* g++.brendan/complex1.C, g++.jason/optimize2.C,
	g++.mike/p9732b.C, g++.other/addrof1.C, g++.other/dyncast5.C,
	g++.other/init5.C, g++.other/init7.C, g++.other/union2.C,
	g++.pt/vbase1.C, g++.robertl/eb14.C, g++.robertl/eh990323-1.C,
	g++.robertl/eh990323-2.C, g++.robertl/eh990323-3.C,
	g++.robertl/eh990323-4.C, g++.robertl/eh990323-5.C,
	g++.robertl/ice990323-2.C: Prototype exit and/or abort.

	* g++.brendan/nest21.C, g++.eh/rethrow3.C, g++.jason/init3.C,
	g++.law/arm15.C, g++.law/cvt2.C, g++.law/visibility17.C,
	g++.mike/eh23.C, g++.mike/eh25.C, g++.mike/eh34.C,
	g++.mike/eh48.C, g++.mike/eh55.C, g++.mike/p2736.C,
	g++.oliva/new1.C, g++.other/align.C, g++.robertl/eb39.C,
	g++.robertl/eb54.C, g++.robertl/eb63.C: Include stdlib.h
	and/or string.h.

	* g++.other/goto1.C: Update expectations for error messages.

From-SVN: r34226
2000-05-28 05:38:02 +00:00

38 lines
714 B
C

// Copyright (C) 1999 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 6 Jun 1999 <nathan@acm.org>
// dynamic cast can only cast to public unambiguous bases
extern "C" void abort ();
struct A {virtual ~A(){} int m; };
struct B {virtual ~B(){} int m; };
struct C1 : A {int m;};
struct C2 : A {int m;};
// A is ambiguous, but private in one branch
struct D1 : B, C1, private C2 {int m;};
// A is ambiguous, and public in both branches
struct D2 : B, C1, C2 {int m;};
void fn(B *bd1, B *bd2)
{
A *ad1;
A *ad2;
ad1 = dynamic_cast<A *>(bd1);
if(ad1) abort();
ad2 = dynamic_cast<A *>(bd2);
if(ad2) abort();
}
int main()
{
D1 d1;
D2 d2;
fn((B *)&d1, (B *)&d2);
return 0;
}