URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 154 |
Rev 816 |
// PR c++/8186
|
// PR c++/8186
|
|
|
// Bug: In f, convert_for_arg_passing wrapped the A TARGET_EXPR in an
|
// Bug: In f, convert_for_arg_passing wrapped the A TARGET_EXPR in an
|
// ADDR_EXPR for passing by invisible ref. stabilize_throw_expr copied the
|
// ADDR_EXPR for passing by invisible ref. stabilize_throw_expr copied the
|
// resulting pointer into a temporary. cp_convert_parm_for_inlining then
|
// resulting pointer into a temporary. cp_convert_parm_for_inlining then
|
// dereferences it and tries to initialize B::am with the INDIRECT_REF,
|
// dereferences it and tries to initialize B::am with the INDIRECT_REF,
|
// which calls for a bitwise copy. Which is broken.
|
// which calls for a bitwise copy. Which is broken.
|
|
|
// { dg-options "-O" }
|
// { dg-options "-O" }
|
|
|
struct A
|
struct A
|
{
|
{
|
A();
|
A();
|
A(const A&);
|
A(const A&);
|
A& operator=(const A&);
|
A& operator=(const A&);
|
};
|
};
|
|
|
struct B {
|
struct B {
|
A am;
|
A am;
|
B(A a) { am = a; }
|
B(A a) { am = a; }
|
};
|
};
|
|
|
void f ()
|
void f ()
|
{
|
{
|
throw B(A());
|
throw B(A());
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.