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:
Jason Merrill 2011-02-19 17:39:50 -05:00 committed by Jason Merrill
parent e67401c78f
commit 06a85dd37f
4 changed files with 27 additions and 0 deletions

View File

@ -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

View File

@ -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;

View File

@ -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

View 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) { }
};