This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/27218] [4.1/4.2 regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1515, inlining produces non-gimple
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Apr 2006 08:44:58 -0000
- Subject: [Bug tree-optimization/27218] [4.1/4.2 regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1515, inlining produces non-gimple
- References: <bug-27218-12387@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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