diff options
author | James Van Artsdalen <jrv@gnu.org> | 1992-03-19 06:13:20 +0000 |
---|---|---|
committer | James Van Artsdalen <jrv@gnu.org> | 1992-03-19 06:13:20 +0000 |
commit | 997de79c1436b537f9473d66f4041628c3356ca7 (patch) | |
tree | 8b297f15d30c5f20370d4d6a2a5f60741ba140b8 | |
parent | f4ce55dfedb75cf7e1fe8a9d6992ae2dfe9432e9 (diff) | |
download | gcc-997de79c1436b537f9473d66f4041628c3356ca7.zip gcc-997de79c1436b537f9473d66f4041628c3356ca7.tar.gz gcc-997de79c1436b537f9473d66f4041628c3356ca7.tar.bz2 |
*** empty log message ***
From-SVN: r520
-rw-r--r-- | gcc/config/i386/i386.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6aed00d..3fdd406 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -31,6 +31,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "tree.h" #include "flags.h" +#ifdef EXTRA_CONSTRAINT +/* If EXTRA_CONSTRAINT is defined, then the 'S' + constraint in REG_CLASS_FROM_LETTER will no longer work, and various + asm statements that need 'S' for class SIREG will break. */ + #error EXTRA_CONSTRAINT conflicts with S constraint letter +#endif + #define AT_BP(mode) (gen_rtx (MEM, (mode), frame_pointer_rtx)) extern FILE *asm_out_file; @@ -318,7 +325,12 @@ output_move_double (operands) if (GET_CODE (operands[1]) == CONST_DOUBLE) split_double (operands[1], &operands[1], &latehalf[1]); else if (CONSTANT_P (operands[1])) - latehalf[1] = const0_rtx; + { + if (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) < 0) + latehalf[1] = constm1_rtx; + else + latehalf[1] = const0_rtx; + } } else latehalf[1] = operands[1]; @@ -791,11 +803,6 @@ function_epilogue (file, size) else output_asm_insn ("ret %1", xops); } - else if (current_function_returns_struct) - { - xops[0] = gen_rtx (CONST_INT, VOIDmode, 4); - output_asm_insn ("ret %0", xops); - } else output_asm_insn ("ret", xops); } |