mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-24 11:35:31 +08:00
re PR rtl-optimization/23299 ("classic" GCSE caused miscompilation)
PR rtl-optimization/23299 * g++.dg/opt/pr23299.C: New test. From-SVN: r103148
This commit is contained in:
parent
f60c951c84
commit
7c83bbb109
@ -1,3 +1,8 @@
|
||||
2005-08-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/23299
|
||||
* g++.dg/opt/pr23299.C: New test.
|
||||
|
||||
2005-08-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* gcc.dg/special/weak-1.c: xfail 32-bit hppa*-*-hpux*.
|
||||
|
63
gcc/testsuite/g++.dg/opt/pr23299.C
Normal file
63
gcc/testsuite/g++.dg/opt/pr23299.C
Normal file
@ -0,0 +1,63 @@
|
||||
// PR rtl-optimization/23299
|
||||
// { dg-do run }
|
||||
// { dg-options "-Os" }
|
||||
|
||||
extern "C" void abort ();
|
||||
|
||||
struct A
|
||||
{
|
||||
virtual int a () {}
|
||||
};
|
||||
struct B : public A
|
||||
{
|
||||
virtual int b () {}
|
||||
};
|
||||
struct C : public A
|
||||
{
|
||||
virtual int c () {}
|
||||
};
|
||||
struct D
|
||||
{
|
||||
D () { d = 64; }
|
||||
~D ();
|
||||
int d;
|
||||
};
|
||||
|
||||
int x;
|
||||
D::~D ()
|
||||
{
|
||||
x |= 1;
|
||||
if (d != 64)
|
||||
abort ();
|
||||
}
|
||||
|
||||
struct E : public B, public C
|
||||
{
|
||||
E () {}
|
||||
virtual int c ();
|
||||
~E ();
|
||||
D dv;
|
||||
};
|
||||
|
||||
E::~E ()
|
||||
{
|
||||
int r = c ();
|
||||
}
|
||||
|
||||
int
|
||||
E::c ()
|
||||
{
|
||||
if (x > 10)
|
||||
throw 1;
|
||||
x |= 2;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
{
|
||||
E e;
|
||||
}
|
||||
if (x != 3)
|
||||
abort ();
|
||||
}
|
Loading…
Reference in New Issue
Block a user