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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [eh/] [uncaught1.C] - Diff between revs 154 and 816

Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
// PR libstdc++/10606
// PR libstdc++/10606
// { dg-do run }
// { dg-do run }
// { dg-options "-fuse-cxa-get-exception-ptr" { target powerpc*-*-darwin* } }
// { dg-options "-fuse-cxa-get-exception-ptr" { target powerpc*-*-darwin* } }
#include 
#include 
#include 
#include 
struct Check {
struct Check {
  int obj1, obj2;
  int obj1, obj2;
  bool state;
  bool state;
};
};
static Check const data[] = {
static Check const data[] = {
  { 0, 0, false },      // construct [0]
  { 0, 0, false },      // construct [0]
  { 1, 0, true  },      // [1] = [0]
  { 1, 0, true  },      // [1] = [0]
  { 0, 0, true  },      // destruct [0]
  { 0, 0, true  },      // destruct [0]
  { 2, 1, true  },      // [2] = [1]
  { 2, 1, true  },      // [2] = [1]
  { 2, 2, true  },      // destruct [2]
  { 2, 2, true  },      // destruct [2]
  { 3, 1, true  },      // [3] = [1]
  { 3, 1, true  },      // [3] = [1]
  { 3, 3, false },      // destruct [3]
  { 3, 3, false },      // destruct [3]
  { 1, 1, false },      // destruct [1]
  { 1, 1, false },      // destruct [1]
  { 9, 9, false }       // end-of-data
  { 9, 9, false }       // end-of-data
};
};
static int pos = 0;
static int pos = 0;
static void test(int obj1, int obj2, bool state)
static void test(int obj1, int obj2, bool state)
{
{
  if (obj1 != data[pos].obj1) abort ();
  if (obj1 != data[pos].obj1) abort ();
  if (obj2 != data[pos].obj2) abort ();
  if (obj2 != data[pos].obj2) abort ();
  if (state != data[pos].state) abort ();
  if (state != data[pos].state) abort ();
  pos++;
  pos++;
}
}
struct S {
struct S {
  int id;
  int id;
  S ();
  S ();
  S (const S &);
  S (const S &);
  ~S ();
  ~S ();
};
};
static int next_id = 0;
static int next_id = 0;
S::S()
S::S()
  : id (next_id++)
  : id (next_id++)
{
{
  test (id, id, std::uncaught_exception ());
  test (id, id, std::uncaught_exception ());
}
}
S::S(const S &x)
S::S(const S &x)
  : id (next_id++)
  : id (next_id++)
{
{
  test (id, x.id, std::uncaught_exception ());
  test (id, x.id, std::uncaught_exception ());
}
}
S::~S()
S::~S()
{
{
  test (id, id, std::uncaught_exception ());
  test (id, id, std::uncaught_exception ());
}
}
extern void foo (S *);
extern void foo (S *);
int main()
int main()
{
{
  try
  try
    {
    {
      try
      try
        {
        {
          S s0;
          S s0;
          throw s0;     // s1 is the exception object
          throw s0;     // s1 is the exception object
        }
        }
      catch (S s2)
      catch (S s2)
        {
        {
          throw;
          throw;
        }
        }
    }
    }
  catch (S s3)
  catch (S s3)
    {
    {
    }
    }
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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