------- Comment #5 from rguenth at gcc dot gnu dot org 2006-04-20 08:44 -------
(gdb) call debug_generic_expr(stmt)
*(struct VectorD.1984 *) D.2012 = dD.1989
that's not gimple. We trip over that in into-ssa.
(gdb) call debug_bb_n(2)
;; basic block 2, loop depth 0, count 0
;; prev block 0, next block 1
;; pred: ENTRY (fallthru)
;; succ: EXIT
<bb 2>:
D.2013 = operator new (16);
D.2012 = (struct Point *) D.2013;
*(struct Vector *) D.2012 = d;
return;
We gimplified that to
void add_duck() ()
{
struct Point * D.2012;
void * D.2013;
D.2013 = operator new (16);
D.2012 = (struct Point *) D.2013;
try
{
*D.2012 = f () [return slot optimization];
}
catch
{
operator delete (D.2012);
}
}
but after inlining we get
void add_duck() ()
{
void * D.2013;
struct Point * D.2012;
<bb 2>:
D.2013 = operator new (16);
D.2012 = (struct Point *) D.2013;
*(struct Vector *) D.2012 = d;
return;
}
So inlining produces the non-gimple trees.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu dot
| |org
GCC build triplet|i486-linux-gnu |
GCC host triplet|i486-linux-gnu |
GCC target triplet|i486-linux-gnu |
Summary|[4.1/4.2 regression] ICE in |[4.1/4.2 regression] ICE in
|get_indirect_ref_operands, |get_indirect_ref_operands,
|at tree-ssa-operands.c:1515 |at tree-ssa-operands.c:1515,
| |inlining produces non-gimple
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27218