diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 13:45:42 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-12-21 13:45:42 -0500 |
commit | 76ebc969d32ea4ad8a7fd7a98a30f093906b2847 (patch) | |
tree | 95e966fb737c1c67c251c68038e0faa29412c116 /gcc/stmt.c | |
parent | aa10adffdef31a38317e845dd7dfb89e0fcf02a4 (diff) | |
download | gcc-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.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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))); |