URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 154 |
Rev 816 |
// PR middle-end/15054
|
// PR middle-end/15054
|
// This used to abort due to overlapping stack temporaries.
|
// This used to abort due to overlapping stack temporaries.
|
|
|
// { dg-do run }
|
// { dg-do run }
|
// { dg-options "-O" }
|
// { dg-options "-O" }
|
|
|
extern "C" void abort (void);
|
extern "C" void abort (void);
|
|
|
struct pointer
|
struct pointer
|
{
|
{
|
void* ptr;
|
void* ptr;
|
|
|
pointer(void* x = 0) : ptr(x) {}
|
pointer(void* x = 0) : ptr(x) {}
|
pointer(const pointer& x) : ptr(x.ptr) {}
|
pointer(const pointer& x) : ptr(x.ptr) {}
|
};
|
};
|
|
|
struct element
|
struct element
|
{
|
{
|
int canary;
|
int canary;
|
|
|
element() : canary(123) { }
|
element() : canary(123) { }
|
~element() { pointer(); if (canary != 123) abort (); }
|
~element() { pointer(); if (canary != 123) abort (); }
|
};
|
};
|
|
|
inline pointer
|
inline pointer
|
insert(const element& x)
|
insert(const element& x)
|
{
|
{
|
return pointer(new element(x));
|
return pointer(new element(x));
|
}
|
}
|
|
|
int
|
int
|
main (void)
|
main (void)
|
{
|
{
|
insert(element());
|
insert(element());
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.