re PR c++/47503 ([C++0x] ICE: in adjust_temp_type, at cp/semantics.c:5876 with -fno-elide-constructors)
PR c++/47503 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy. From-SVN: r170330
This commit is contained in:
parent
e67401c78f
commit
06a85dd37f
@ -1,3 +1,8 @@
|
||||
2011-02-19 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/47503
|
||||
* semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
|
||||
|
||||
2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/47795
|
||||
|
@ -6019,6 +6019,10 @@ cxx_eval_call_expression (const constexpr_call *old_call, tree t,
|
||||
return t;
|
||||
}
|
||||
|
||||
/* Shortcut trivial copy constructor/op=. */
|
||||
if (call_expr_nargs (t) == 2 && trivial_fn_p (fun))
|
||||
return convert_from_reference (get_nth_callarg (t, 1));
|
||||
|
||||
/* If in direct recursive call, optimize definition search. */
|
||||
if (old_call != NULL && old_call->fundef->decl == fun)
|
||||
new_call.fundef = old_call->fundef;
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-02-19 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/cpp0x/regress/no-elide1.C: New.
|
||||
|
||||
2011-02-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR tree-optimization/46620
|
||||
|
14
gcc/testsuite/g++.dg/cpp0x/regress/no-elide1.C
Normal file
14
gcc/testsuite/g++.dg/cpp0x/regress/no-elide1.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR c++/47503
|
||||
// { dg-options "-std=c++0x -fno-elide-constructors" }
|
||||
|
||||
struct A
|
||||
{
|
||||
int i;
|
||||
A ();
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
A a;
|
||||
B (A &aa) : a (aa) { }
|
||||
};
|
Loading…
Reference in New Issue
Block a user