aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-12-21 13:45:42 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-12-21 13:45:42 -0500
commit76ebc969d32ea4ad8a7fd7a98a30f093906b2847 (patch)
tree95e966fb737c1c67c251c68038e0faa29412c116 /gcc/stmt.c
parentaa10adffdef31a38317e845dd7dfb89e0fcf02a4 (diff)
downloadgcc-76ebc969d32ea4ad8a7fd7a98a30f093906b2847.zip
gcc-76ebc969d32ea4ad8a7fd7a98a30f093906b2847.tar.gz
gcc-76ebc969d32ea4ad8a7fd7a98a30f093906b2847.tar.bz2
(expand_asm_operands): Make sure input operands are valid constants if
they are constants. From-SVN: r8682
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 4d3ed87..3c8ef37 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)));