re PR target/12676 (m68k.c: LP64 bug)
authorAndreas Schwab <schwab@suse.de>
Wed, 22 Oct 2003 21:27:27 +0000 (21:27 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Wed, 22 Oct 2003 21:27:27 +0000 (21:27 +0000)
PR target/12676
* config/m68k/m68k.c (output_addsi3): Fix range check to work on
LP64 platforms.

From-SVN: r72823

gcc/ChangeLog
gcc/config/m68k/m68k.c

index 853980ad26ecface7ac1a9875437b9ebcc57031f..a3df896b9c20e3574a6ae70d33e508e3bf51b444 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-22  Andreas Schwab  <schwab@suse.de>
+
+       PR target/12676
+       * config/m68k/m68k.c (output_addsi3): Fix range check to work on
+       LP64 platforms.
+
 2003-10-22  Jan Hubicka  <jh@suse.cz>
 
        * dwarf2out.c (dwarf2out_abstract_function): Use DW_AT to check presence of DW_AT_inline.
index 55949a3dfa5bbd4239f7e4f13a71bc5fb4a75c07..e42f2e5ddad5866a1270fef02307bab871d75a51 100644 (file)
@@ -2464,7 +2464,7 @@ output_addsi3 (rtx *operands)
       /* These insns can result from reloads to access
         stack slots over 64k from the frame pointer.  */
       if (GET_CODE (operands[2]) == CONST_INT
-         && INTVAL (operands[2]) + 0x8000 >= (unsigned) 0x10000)
+         && (INTVAL (operands[2]) < -32768 || INTVAL (operands[2]) > 32767))
         return "move%.l %2,%0\n\tadd%.l %1,%0";
 #ifdef SGS
       if (GET_CODE (operands[2]) == REG)