* expr.c (operand): Handle the "~", "-", and "!" operators applied
to bignums. * gas/arm/bignum1.s: New test. * gas/arm/arm.exp: Run it.
This commit is contained in:
parent
32dbff569c
commit
b2221023d3
5 changed files with 41 additions and 0 deletions
|
@ -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
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)
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
Normal file
1
gas/testsuite/gas/arm/bignum1.s
Normal file
|
@ -0,0 +1 @@
|
|||
.8byte -9223372036854775808
|
Loading…
Reference in a new issue