[ARM] Fix 32-bit host build failure.
authorJiong Wang <jiong.wang@arm.com>
Tue, 15 Jul 2014 09:15:43 +0000 (10:15 +0100)
committerJiong Wang <jiong.wang@arm.com>
Tue, 15 Jul 2014 09:15:43 +0000 (10:15 +0100)
  gas/
    * config/tc-arm.c (add_to_lit_pool): Use "inst.operands[1].imm" for * sign
    extension.  Casting the type of imm1 and imm2 to offsetT.  Fix one logic
    error when checking X_op.

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

index 9f5a8af41728031729d9ddef3acb1d4fbd38a101..512bd031f9cc3ad429d247ca56d0cec57a0757a2 100644 (file)
@@ -1,3 +1,9 @@
+2014-07-15  Jiong Wang  <jiong.wang@arm.com>
+
+       * config/tc-arm.c (add_to_lit_pool): Use "inst.operands[1].imm" for
+       sign extension.  Casting the type of imm1 and imm2 to offsetT.  Fix
+       one logic error when checking X_op.
+
 2014-07-14  Andreas Schwab  <schwab@linux-m68k.org>
 
        * config/tc-m68k.c (md_convert_frag_1): Don't complain with
index 2f132380bc3a91375cbf0147d376fea7cb1f7f4d..7fb8b23bd06bacb4854df33aff5a1424b96ea61f 100644 (file)
@@ -3198,7 +3198,7 @@ add_to_lit_pool (unsigned int nbytes)
       imm1 = inst.operands[1].imm;
       imm2 = (inst.operands[1].regisimm ? inst.operands[1].reg
               : inst.reloc.exp.X_unsigned ? 0
-              : ((int64_t)(imm1)) >> 32);
+              : ((int64_t) inst.operands[1].imm) >> 32);
       if (target_big_endian)
        {
          imm1 = imm2;
@@ -3237,11 +3237,11 @@ add_to_lit_pool (unsigned int nbytes)
               && !(pool_size & 0x7)
               && ((entry + 1) != pool->next_free_entry)
               && (pool->literals[entry].X_op == O_constant)
-              && (pool->literals[entry].X_add_number == imm1)
+              && (pool->literals[entry].X_add_number == (offsetT) imm1)
               && (pool->literals[entry].X_unsigned
                   == inst.reloc.exp.X_unsigned)
               && (pool->literals[entry + 1].X_op == O_constant)
-              && (pool->literals[entry + 1].X_add_number == imm2)
+              && (pool->literals[entry + 1].X_add_number == (offsetT) imm2)
               && (pool->literals[entry + 1].X_unsigned
                   == inst.reloc.exp.X_unsigned))
        break;
@@ -3275,8 +3275,8 @@ add_to_lit_pool (unsigned int nbytes)
 
             We also check to make sure the literal operand is a
             constant number.  */
-         if (!(inst.reloc.exp.X_op == O_constant)
-             || (inst.reloc.exp.X_op == O_big))
+         if (!(inst.reloc.exp.X_op == O_constant
+               || inst.reloc.exp.X_op == O_big))
            {
              inst.error = _("invalid type for literal pool");
              return FAIL;