The following trivial patch seems to fix it. Index: tree-ssa-threadedge.c =================================================================== --- tree-ssa-threadedge.c (revision 192749) +++ tree-ssa-threadedge.c (working copy) @@ -743,7 +743,7 @@ safe to thread this edge. */ if (e->flags & EDGE_DFS_BACK) { - if (cond_arg_set_in_bb (e, e->dest, 1)) + if (cond_arg_set_in_bb (e, e->dest)) goto fail; }
@@ -787,7 +787,7 @@ of threading without having to re-run DOM or VRP. */ if (dest && ((e->flags & EDGE_DFS_BACK) == 0 - || ! cond_arg_set_in_bb (taken_edge, e->dest, 2))) + || ! cond_arg_set_in_bb (taken_edge, e->dest))) { /* We don't want to thread back to a block we have already visited. This may be overly conservative. */ @@ -846,7 +846,7 @@ do { if ((e->flags & EDGE_DFS_BACK) == 0 - || ! cond_arg_set_in_bb (e3, e->dest, 3)) + || ! cond_arg_set_in_bb (e3, e->dest)) e2 = thread_around_empty_block (e3, dummy_cond, handle_dominating_asserts, Sharad On Tue, Oct 23, 2012 at 4:48 PM, Sharad Singhai <sing...@google.com> wrote: > The trunk seems to be broken at r192749 due to this patch. > > ../../srctrunk/gcc/tree-ssa-threadedge.c: In function ‘void > thread_across_edge(gimple_statement_d*, edge_def*, bool, > vec_t<tree_node*>**, tree_node* (*)(gimple_statement_d*, > gimple_statement_d*))’: > ../../srctrunk/gcc/tree-ssa-threadedge.c:583: error: too many > arguments to function ‘bool cond_arg_set_in_bb(edge_def*, > basic_block_def*)’ > ../../srctrunk/gcc/tree-ssa-threadedge.c:746: error: at this point in file > ../../srctrunk/gcc/tree-ssa-threadedge.c:583: error: too many > arguments to function ‘bool cond_arg_set_in_bb(edge_def*, > basic_block_def*)’ > ../../srctrunk/gcc/tree-ssa-threadedge.c:790: error: at this point in file > ../../srctrunk/gcc/tree-ssa-threadedge.c:583: error: too many > arguments to function ‘bool cond_arg_set_in_bb(edge_def*, > basic_block_def*)’ > ../../srctrunk/gcc/tree-ssa-threadedge.c:849: error: at this point in file > make: *** [tree-ssa-threadedge.o] Error 1 > > Sharad