URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 301 |
Rev 384 |
// PR middle-end/15054
|
// PR middle-end/15054
|
|
|
// { dg-do run }
|
// { dg-do run }
|
// { dg-options "-O2" }
|
// { dg-options "-O2" }
|
|
|
extern "C" void abort (void);
|
extern "C" void abort (void);
|
|
|
void
|
void
|
__attribute__((noinline))
|
__attribute__((noinline))
|
check (long x, long y)
|
check (long x, long y)
|
{
|
{
|
if (x != y)
|
if (x != y)
|
abort ();
|
abort ();
|
}
|
}
|
|
|
struct A
|
struct A
|
{
|
{
|
A() : a(2) { check (a, 2); }
|
A() : a(2) { check (a, 2); }
|
~A() { check (a, 2); }
|
~A() { check (a, 2); }
|
private:
|
private:
|
long a;
|
long a;
|
};
|
};
|
|
|
class B {
|
class B {
|
long b;
|
long b;
|
B& operator =(const B& );
|
B& operator =(const B& );
|
public:
|
public:
|
B (long p) : b(p) { check (b, 6); }
|
B (long p) : b(p) { check (b, 6); }
|
B (const B& p) : b(p.b) { check (b, 6); }
|
B (const B& p) : b(p.b) { check (b, 6); }
|
~B () { check (b, 6); A obj; check (b, 6); }
|
~B () { check (b, 6); A obj; check (b, 6); }
|
B foo() { return B(*this); }
|
B foo() { return B(*this); }
|
};
|
};
|
|
|
int main ()
|
int main ()
|
{
|
{
|
B o(6);
|
B o(6);
|
o.foo().foo();
|
o.foo().foo();
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.