* 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:
Mark Mitchell 2004-08-11 02:11:58 +00:00
parent 32dbff569c
commit b2221023d3
5 changed files with 41 additions and 0 deletions

View file

@ -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):

View file

@ -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)
{

View file

@ -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.

View file

@ -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"

View file

@ -0,0 +1 @@
.8byte -9223372036854775808