This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/18308] ICE in do_jump, at dojump.c:274
- From: "dpatel at apple dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Nov 2004 02:33:57 -0000
- Subject: [Bug tree-optimization/18308] ICE in do_jump, at dojump.c:274
- References: <20041105130101.18308.reichelt@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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