summaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-12-21 18:45:42 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-12-21 18:45:42 +0000
commitd591d8f4e887e313e618584b9f2cded555c52eb0 (patch)
tree95e966fb737c1c67c251c68038e0faa29412c116 /gcc/stmt.c
parent5e477c3507c5c02d2bb96ac492128ee197fec26c (diff)
downloadgcc-d591d8f4e887e313e618584b9f2cded555c52eb0.tar.gz
(expand_asm_operands): Make sure input operands are valid constants if
they are constants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8682 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 4d3ed87e4f0..3c8ef3720b1 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1492,6 +1492,12 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
XVECEXP (body, 3, i) /* argvec */
= expand_expr (TREE_VALUE (tail), NULL_RTX, VOIDmode, 0);
+ if (CONSTANT_P (XVECEXP (body, 3, i))
+ && ! general_operand (XVECEXP (body, 3, i),
+ TYPE_MODE (TREE_TYPE (TREE_VALUE (tail)))))
+ XVECEXP (body, 3, i)
+ = force_reg (TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))),
+ XVECEXP (body, 3, i));
XVECEXP (body, 4, i) /* constraints */
= gen_rtx (ASM_INPUT, TYPE_MODE (TREE_TYPE (TREE_VALUE (tail))),
TREE_STRING_POINTER (TREE_PURPOSE (tail)));