* config/tc-mips.c (load_address): Cast X_add_number to valueT
authorIan Lance Taylor <ian@airs.com>
Mon, 15 Apr 1996 16:28:19 +0000 (16:28 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 15 Apr 1996 16:28:19 +0000 (16:28 +0000)
before comparing against MAX_GPREL_OFFSET, so that negative
numbers are handled correctly.
(macro): Likewise.

gas/ChangeLog
gas/config/tc-mips.c

index 520ea708f03e66fe440c05ac2d176e6dfd111b73..d6f0815a81ece0faa2a3803a1d0403faa074afb5 100644 (file)
@@ -1,3 +1,10 @@
+Mon Apr 15 12:26:33 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-mips.c (load_address): Cast X_add_number to valueT
+       before comparing against MAX_GPREL_OFFSET, so that negative
+       numbers are handled correctly.
+       (macro): Likewise.
+
 Thu Apr 11 12:39:02 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * config/tc-sparc.c (last_insn): New static variable.
index 19b271dc4dae9db2a3aaec2780d1d4ccad3f5adb..61f38dc729ec97e50fea0d5a4cfd89edca26c165 100644 (file)
@@ -1993,7 +1993,8 @@ load_address (counter, reg, ep)
           lui          $reg,<sym>              (BFD_RELOC_HI16_S)
           addiu        $reg,$reg,<sym>         (BFD_RELOC_LO16)
         If we have an addend, we always use the latter form.  */
-      if (ep->X_add_number != 0 || nopic_need_relax (ep->X_add_symbol))
+      if ((valueT) ep->X_add_number >= MAX_GPREL_OFFSET
+          || nopic_need_relax (ep->X_add_symbol))
        p = NULL;
       else
        {
@@ -2860,7 +2861,7 @@ macro (ip)
               addiu    $tempreg,$tempreg,<sym> (BFD_RELOC_LO16)
             If we have a constant, we need two instructions anyhow,
             so we may as well always use the latter form.  */
-         if (offset_expr.X_add_number != 0
+         if ((valueT) offset_expr.X_add_number >= MAX_GPREL_OFFSET
              || nopic_need_relax (offset_expr.X_add_symbol))
            p = NULL;
          else
@@ -3571,7 +3572,7 @@ macro (ip)
             With a constant we always use the latter case.  */
          if (breg == 0)
            {
-             if (offset_expr.X_add_number != 0
+             if ((valueT) offset_expr.X_add_number >= MAX_GPREL_OFFSET
                  || nopic_need_relax (offset_expr.X_add_symbol))
                p = NULL;
              else
@@ -3595,7 +3596,7 @@ macro (ip)
            }
          else
            {
-             if (offset_expr.X_add_number != 0
+             if ((valueT) offset_expr.X_add_number >= MAX_GPREL_OFFSET
                  || nopic_need_relax (offset_expr.X_add_symbol))
                p = NULL;
              else
@@ -4000,7 +4001,7 @@ macro (ip)
             If there is a base register, we add it to $at after the
             lui instruction.  If there is a constant, we always use
             the last case.  */
-         if (offset_expr.X_add_number != 0
+         if ((valueT) offset_expr.X_add_number >= MAX_GPREL_OFFSET
              || nopic_need_relax (offset_expr.X_add_symbol))
            {
              p = NULL;