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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [init/] [ctor1.C] - Diff between revs 149 and 154

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;
}
}
 
 

powered by: WebSVN 2.1.0

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