URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
// { dg-do run }
|
// { dg-do run }
|
|
|
// Copyright (C) 2002 Free Software Foundation, Inc.
|
// Copyright (C) 2002 Free Software Foundation, Inc.
|
// Contributed by Nathan Sidwell 12 Oct 2002
|
// Contributed by Nathan Sidwell 12 Oct 2002
|
|
|
// From WindRiver SPR 80797
|
// From WindRiver SPR 80797
|
// We were inadvertently SAVE_EXPRing volatile arrays during delete[]
|
// We were inadvertently SAVE_EXPRing volatile arrays during delete[]
|
|
|
struct A
|
struct A
|
{
|
{
|
A *ptr;
|
A *ptr;
|
static int ok;
|
static int ok;
|
|
|
A () {ptr = this;}
|
A () {ptr = this;}
|
~A () {ok = ptr == this;}
|
~A () {ok = ptr == this;}
|
};
|
};
|
int A::ok = -1;
|
int A::ok = -1;
|
|
|
struct B
|
struct B
|
{
|
{
|
B *ptr;
|
B *ptr;
|
static int ok;
|
static int ok;
|
|
|
B () {ptr = this;}
|
B () {ptr = this;}
|
~B () {ok = ptr == this;}
|
~B () {ok = ptr == this;}
|
};
|
};
|
int B::ok = -1;
|
int B::ok = -1;
|
|
|
struct C
|
struct C
|
{
|
{
|
A volatile a;
|
A volatile a;
|
B volatile b[1];
|
B volatile b[1];
|
|
|
C ();
|
C ();
|
};
|
};
|
|
|
C::C ()
|
C::C ()
|
{
|
{
|
throw 1;
|
throw 1;
|
}
|
}
|
|
|
int main ()
|
int main ()
|
{
|
{
|
try
|
try
|
{
|
{
|
C c;
|
C c;
|
}
|
}
|
catch (...)
|
catch (...)
|
{
|
{
|
if (A::ok != 1)
|
if (A::ok != 1)
|
return 1;
|
return 1;
|
if (B::ok != 1)
|
if (B::ok != 1)
|
return 2;
|
return 2;
|
return 0;
|
return 0;
|
}
|
}
|
return 3;
|
return 3;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.