Browse Source

* expr.c (operand): Handle the "~", "-", and "!" operators applied

to bignums.

	* gas/arm/bignum1.s: New test.
	* gas/arm/arm.exp: Run it.
jimb-rda-nptl-branch
Mark Mitchell 22 years ago
parent
commit
b2221023d3
  1. 5
      gas/ChangeLog
  2. 29
      gas/expr.c
  3. 5
      gas/testsuite/ChangeLog
  4. 1
      gas/testsuite/gas/arm/arm.exp
  5. 1
      gas/testsuite/gas/arm/bignum1.s

5
gas/ChangeLog

@ -1,3 +1,8 @@
2004-08-10 Mark Mitchell <mark@codesourcery.com>
* expr.c (operand): Handle the "~", "-", and "!" operators applied
to bignums.
2004-08-06 Paul Brook <paul@codesourcery.com>
* config/tc-arm.c (md_apply_fix3, tc_gen_reloc, arm_parse_reloc):

29
gas/expr.c

@ -1076,6 +1076,35 @@ operand (expressionS *expressionP)
else
generic_floating_point_number.sign = 'N';
}
else if (expressionP->X_op == O_big
&& expressionP->X_add_number > 0)
{
int i;
if (c == '~' || c == '-')
{
for (i = 0; i < expressionP->X_add_number; ++i)
generic_bignum[i] = ~generic_bignum[i];
if (c == '-')
for (i = 0; i < expressionP->X_add_number; ++i)
{
generic_bignum[i] += 1;
if (generic_bignum[i])
break;
}
}
else if (c == '!')
{
int nonzero = 0;
for (i = 0; i < expressionP->X_add_number; ++i)
{
if (generic_bignum[i])
nonzero = 1;
generic_bignum[i] = 0;
}
generic_bignum[0] = nonzero;
}
}
else if (expressionP->X_op != O_illegal
&& expressionP->X_op != O_absent)
{

5
gas/testsuite/ChangeLog

@ -1,3 +1,8 @@
2004-08-10 Mark Mitchell <mark@codesourcery.com>
* gas/arm/bignum1.s: New test.
* gas/arm/arm.exp: Run it.
2004-08-06 Paul Brook <paul@codesourcery.com>
* gas/arm/pic.s,d: Test RELABS and SBREL relocations.

1
gas/testsuite/gas/arm/arm.exp

@ -35,6 +35,7 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
gas_test "immed.s" "" $stdoptlist "immediate expressions"
gas_test "float.s" "-mcpu=arm7tdmi -mfpu=fpa" $stdoptlist "Core floating point instructions"
gas_test "offset.s" "" $stdoptlist "OFFSET_IMM regression"
gas_test "bignum1.s" "" $stdoptlist "bignums"
run_dump_test "armv1"
run_dump_test "arch5tej"

1
gas/testsuite/gas/arm/bignum1.s

@ -0,0 +1 @@
.8byte -9223372036854775808
Loading…
Cancel
Save