diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-12-21 18:45:42 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-12-21 18:45:42 +0000 |
commit | d591d8f4e887e313e618584b9f2cded555c52eb0 (patch) | |
tree | 95e966fb737c1c67c251c68038e0faa29412c116 /gcc/stmt.c | |
parent | 5e477c3507c5c02d2bb96ac492128ee197fec26c (diff) | |
download | gcc-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.c | 6 |
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))); |