------- Additional Comments From dpatel at apple dot com 2004-11-18 02:33
-------
Subject: Re: ICE in do_jump, at dojump.c:274
Andrew,
You can try following to fix tree level if-conversion. I have not
tested it completely yet.
-
Devang
Index: tree-if-conv.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-if-conv.c,v
retrieving revision 2.19
diff -Idpatel.pbxuser -c -3 -p -r2.19 tree-if-conv.c
*** tree-if-conv.c 16 Nov 2004 20:02:48 -0000 2.19
--- tree-if-conv.c 18 Nov 2004 02:32:03 -0000
*************** add_to_dst_predicate_list (struct loop *
*** 639,645 ****
new_cond = unshare_expr (cond);
else
{
! tree tmp_stmt;
/* new_cond == prev_cond AND cond */
tree tmp = build (TRUTH_AND_EXPR, boolean_type_node,
unshare_expr (prev_cond), cond);
--- 639,655 ----
new_cond = unshare_expr (cond);
else
{
! tree tmp_stmt = NULL_TREE;
! tree tmp_stmts1 = NULL_TREE;
! tree tmp_stmts2 = NULL_TREE;
! prev_cond = force_gimple_operand (unshare_expr (prev_cond),
&tmp_stmts1, true, NULL);
! if (tmp_stmts1)
! bsi_insert_before (bsi, tmp_stmts1, BSI_SAME_STMT);
!
! cond = force_gimple_operand (unshare_expr (cond), &tmp_stmts2,
true, NULL);
! if (tmp_stmts2)
! bsi_insert_before (bsi, tmp_stmts2, BSI_SAME_STMT);
!
/* new_cond == prev_cond AND cond */
tree tmp = build (TRUTH_AND_EXPR, boolean_type_node,
unshare_expr (prev_cond), cond);
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18308