diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2004-09-28 23:29:02 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2004-09-28 23:29:02 +0000 |
commit | 2f39b6caf61637fe3656c1b63b316dc3af6f3028 (patch) | |
tree | 2ac40772304a0e5a5f796356ffe7f8326d39ef03 /gcc/cse.c | |
parent | b0b324b07fc46746d3eada8cc27d6000a3756bed (diff) | |
download | gcc-2f39b6caf61637fe3656c1b63b316dc3af6f3028.zip gcc-2f39b6caf61637fe3656c1b63b316dc3af6f3028.tar.gz gcc-2f39b6caf61637fe3656c1b63b316dc3af6f3028.tar.bz2 |
cse.c (cse_insn): Avoid creating direct non-local jumps.
* cse.c (cse_insn): Avoid creating direct non-local jumps.
* combine.c (can_combine_p): Likewise.
* local-alloc. (update_equiv_regs): Likewise.
From-SVN: r88258
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -5395,6 +5395,11 @@ cse_insn (rtx insn, rtx libcall_insn) || (GET_CODE (trial) == LABEL_REF && ! condjump_p (insn)))) { + /* Don't substitute non-local labels, this confuses CFG. */ + if (GET_CODE (trial) == LABEL_REF + && LABEL_REF_NONLOCAL_P (trial)) + continue; + SET_SRC (sets[i].rtl) = trial; cse_jumps_altered = 1; break; |