http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48836
--- Comment #1 from Jan Hubicka <hubicka at gcc dot gnu.org> 2011-04-30
16:32:30 UTC ---
The reason why we conclude updating is needed is redirecting of callees:
#0 0x00000000006abdd4 in bitmap_element_link (head=0x7ffff539b760,
bit=Unhandled dwarf expression opcode 0xf3
) at ../../gcc/bitmap.c:431
#1 bitmap_set_bit (head=0x7ffff539b760, bit=Unhandled dwarf expression opcode
0xf3
) at ../../gcc/bitmap.c:653
#2 0x0000000000a7225a in finalize_ssa_defs (stmt=0x7ffff349a720) at
../../gcc/tree-ssa-operands.c:463
#3 finalize_ssa_stmt_operands (stmt=0x7ffff349a720) at
../../gcc/tree-ssa-operands.c:566
#4 build_ssa_operands (stmt=0x7ffff349a720) at
../../gcc/tree-ssa-operands.c:1078
#5 update_stmt_operands (stmt=0x7ffff349a720) at
../../gcc/tree-ssa-operands.c:1137
#6 0x0000000000b9fe63 in cgraph_redirect_edge_call_stmt_to_callee
(e=0x7ffff30f1548) at ../../gcc/cgraphunit.c:2209
#7 0x0000000000bb47d3 in inline_transform (node=Unhandled dwarf expression
opcode 0xf3
) at ../../gcc/ipa-inline-transform.c:305
We are probably right that update_ssa TODO should be dropped with aliasing on.
This patch fixes the problem, but I am not sure it is the best approach around.
Index: ipa-inline-transform.c
===================================================================
--- ipa-inline-transform.c (revision 173216)
+++ ipa-inline-transform.c (working copy)
@@ -45,6 +45,7 @@
#include "ipa-prop.h"
#include "ipa-inline.h"
#include "tree-inline.h"
+#include "tree-pass.h"
int ncalls_inlined;
int nfunctions_inlined;
@@ -305,6 +306,9 @@
cgraph_redirect_edge_call_stmt_to_callee (e);
if (!e->inline_failed || warn_inline)
inline_p = true;
+ /* Redirecting edges might lead to a need for vops to be recomputed. */
+ if (need_ssa_update_p (cfun))
+ todo |= TODO_update_ssa_only_virtuals;
}
if (inline_p)