re PR tree-optimization/27218 (ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1515, inlining produces non-gimple)

2006-04-24  Andrew Pinski  <pinskia@gcc.gnu.org>
	Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27218
	* tree-inline.c (expand_call_inline): Strip useless type
	conversions for the return slot address.

	* g++.dg/tree-ssa/pr27218.C: New testcase.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r113218
This commit is contained in:
Andrew Pinski 2006-04-24 01:17:42 -07:00 committed by Richard Biener
parent 0162f1556e
commit 72fa5e06ab
4 changed files with 31 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2006-04-24 Andrew Pinski <pinskia@gcc.gnu.org>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/27218
* tree-inline.c (expand_call_inline): Strip useless type
conversions for the return slot address.
2006-04-24 Richard Guenther <rguenther@suse.de>
* cfgloop.h (struct loops): Remove unused field array. Reorder

View file

@ -1,3 +1,9 @@
2006-04-24 Andrew Pinski <pinskia@gcc.gnu.org>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/27218
* g++.dg/tree-ssa/pr27218.C: New testcase.
2006-04-23 Mark Mitchell <mark@codesourcery.com>
PR c++/26912

View file

@ -0,0 +1,17 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
struct Vector
{
double _x, _y;
};
typedef Vector Point;
Vector d;
static inline Vector f(void)
{
return d;
}
void add_duck (void)
{
new Point (f());
}

View file

@ -2073,6 +2073,7 @@ expand_call_inline (basic_block bb, tree stmt, tree *tp, void *data)
if (CALL_EXPR_RETURN_SLOT_OPT (t))
{
return_slot_addr = build_fold_addr_expr (modify_dest);
STRIP_USELESS_TYPE_CONVERSION (return_slot_addr);
modify_dest = NULL;
}
}