aboutsummaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-06-12 17:25:16 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-06-12 15:25:16 +0000
commit04864a4677563e47ce9adf9467f91ad42b41c0a0 (patch)
treec7e337bb6237fdae9b67cab57c4825e6ad43ae26 /gcc/simplify-rtx.c
parent2c1a24210c495aa26a6e2cf90bd2260b2ba18afe (diff)
downloadgcc-04864a4677563e47ce9adf9467f91ad42b41c0a0.zip
gcc-04864a4677563e47ce9adf9467f91ad42b41c0a0.tar.gz
gcc-04864a4677563e47ce9adf9467f91ad42b41c0a0.tar.bz2
simplify-rtx.c (simplify_subreg): Allow volatile memory to be subregged in case we don't have move instruction.
* simplify-rtx.c (simplify_subreg): Allow volatile memory to be subregged in case we don't have move instruction. From-SVN: r43261
Diffstat (limited to 'gcc/simplify-rtx.c')
-rw-r--r--gcc/simplify-rtx.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 3450f7b1..b2123c1 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2409,7 +2409,11 @@ simplify_subreg (outermode, op, innermode, byte)
if (GET_CODE (op) == MEM
&& ! mode_dependent_address_p (XEXP (op, 0))
- && ! MEM_VOLATILE_P (op)
+ /* Allow splitting of volatile memory references in case we don't
+ have instruction to move the whole thing. */
+ && (! MEM_VOLATILE_P (op)
+ || (mov_optab->handlers[(int) innermode].insn_code
+ == CODE_FOR_nothing))
&& GET_MODE_SIZE (outermode) <= GET_MODE_SIZE (GET_MODE (op)))
{
rtx new;