This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Update JUMP_LABEL in combiner
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 22 Jul 2003 20:17:18 +0200
- Subject: [PATCH] Update JUMP_LABEL in combiner
Hello,
I encountered the following problem during my work on rtlopt-branch
(i.e. I don't have a mainline testcase, and I don't know whether it is
not handled somewhere): In combiner, tablejump is simplified to
simplejump. The created simplejump does not have JUMP_LABEL set,
and therefore purge_all_dead_edges removes all the edges from the block,
leading to an incorrect cfg.
Zdenek
* combine.c (try_combine): Set JUMP_LABEL for newly created
unconditional jump.
Index: combine.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/combine.c,v
retrieving revision 1.310.2.14
diff -c -3 -p -r1.310.2.14 combine.c
*** combine.c 18 Mar 2003 20:56:55 -0000 1.310.2.14
--- combine.c 22 Jul 2003 18:03:50 -0000
*************** try_combine (i3, i2, i1, new_direct_jump
*** 2840,2845 ****
--- 2840,2846 ----
if (returnjump_p (i3) || any_uncondjump_p (i3))
{
*new_direct_jump_p = 1;
+ mark_jump_label (PATTERN (i3), i3, 0);
if ((temp = next_nonnote_insn (i3)) == NULL_RTX
|| GET_CODE (temp) != BARRIER)