mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-16 04:20:26 +08:00
re PR middle-end/11414 (Segementation fault compiling csets.adb)
PR middle-end/11414 * loop.c (load_mems): Use redirect_jump to forward jumps from the original loop end label to the new "loop sink" block's label. From-SVN: r72876
This commit is contained in:
parent
9ab791c044
commit
1b24cd79cb
@ -1,3 +1,9 @@
|
||||
2003-10-23 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/11414
|
||||
* loop.c (load_mems): Use redirect_jump to forward jumps from
|
||||
the original loop end label to the new "loop sink" block's label.
|
||||
|
||||
2003-10-23 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR middle-end/12705
|
||||
|
18
gcc/loop.c
18
gcc/loop.c
@ -10005,20 +10005,12 @@ load_mems (const struct loop *loop)
|
||||
}
|
||||
}
|
||||
|
||||
/* Now, we need to replace all references to the previous exit
|
||||
label with the new one. */
|
||||
if (label != NULL_RTX && end_label != NULL_RTX)
|
||||
{
|
||||
/* Now, we need to replace all references to the previous exit
|
||||
label with the new one. */
|
||||
replace_label_data rr;
|
||||
rr.r1 = end_label;
|
||||
rr.r2 = label;
|
||||
rr.update_label_nuses = true;
|
||||
|
||||
for (p = loop->start; p != loop->end; p = NEXT_INSN (p))
|
||||
{
|
||||
for_each_rtx (&p, replace_label, &rr);
|
||||
}
|
||||
}
|
||||
for (p = loop->start; p != loop->end; p = NEXT_INSN (p))
|
||||
if (GET_CODE (p) == JUMP_INSN && JUMP_LABEL (p) == end_label)
|
||||
redirect_jump (p, label, false);
|
||||
|
||||
cselib_finish ();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user