diff options
author | Richard Stallman <rms@gnu.org> | 1993-04-11 18:46:06 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-04-11 18:46:06 +0000 |
commit | a66a10c7075ee4056c1ce30f32d415612f3dd8c3 (patch) | |
tree | 921912f547c6795e195ee78698f79064d43b0ba6 /gcc | |
parent | c8cfe1f62b3678d548e6003f0d077aedb640b339 (diff) | |
download | gcc-a66a10c7075ee4056c1ce30f32d415612f3dd8c3.zip gcc-a66a10c7075ee4056c1ce30f32d415612f3dd8c3.tar.gz gcc-a66a10c7075ee4056c1ce30f32d415612f3dd8c3.tar.bz2 |
(can_combine_p): Don't move an UNSPEC_VOLATILE.
From-SVN: r4085
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/combine.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index a33bcc1..86f920c 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -825,10 +825,12 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc) If the insns are adjacent, a use can't cross a set even though we think it might (this can happen for a sequence of insns each setting the same destination; reg_last_set of that register might point to - a NOTE). Also, don't move a volatile asm across any other insns. */ + a NOTE). Also, don't move a volatile asm or UNSPEC_VOLATILE across + any other insns. */ || (! all_adjacent && (use_crosses_set_p (src, INSN_CUID (insn)) - || (GET_CODE (src) == ASM_OPERANDS && MEM_VOLATILE_P (src)))) + || (GET_CODE (src) == ASM_OPERANDS && MEM_VOLATILE_P (src)) + || GET_CODE (src) == UNSPEC_VOLATILE)) /* If there is a REG_NO_CONFLICT note for DEST in I3 or SUCC, we get better register allocation by not doing the combine. */ || find_reg_note (i3, REG_NO_CONFLICT, dest) |