from p3: +0.0 is a small integer, at least for moveq

This commit is contained in:
Ken Raeburn 1992-09-04 23:25:16 +00:00
parent 8005788cd1
commit e53ab768f4
2 changed files with 22 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Fri Sep 4 18:20:56 1992 Ken Raeburn (raeburn@cygnus.com)
* config/tc-m68k.c (get_num, case SEG_BIG): If only small integers
including zero are accepted, pass +0.0.
Sun Aug 30 21:24:46 1992 Ian Lance Taylor (ian@cygnus.com)
* Makefile.in: map "as" through program_transform_name when

View File

@ -3732,15 +3732,24 @@ int ok;
}
break;
case SEG_BIG:
if(ok==80 && offs(exp)<0) { /* HACK! Turn it into a long */
LITTLENUM_TYPE words[6];
if (offs (exp) < 0 /* flonum */
&& (ok == 80 /* no bignums */
|| (ok > 10 /* small-int ranges including 0 ok */
/* If we have a flonum zero, a zero integer should
do as well (e.g., in moveq). */
&& generic_floating_point_number.exponent == 0
&& generic_floating_point_number.low[0] == 0)))
{
/* HACK! Turn it into a long */
LITTLENUM_TYPE words[6];
gen_to_words(words,2,8L);/* These numbers are magic! */
seg(exp)=SEG_ABSOLUTE;
adds(exp)=0;
subs(exp)=0;
offs(exp)=words[1]|(words[0]<<16);
} else if(ok!=0) {
gen_to_words(words,2,8L);/* These numbers are magic! */
seg(exp)=SEG_ABSOLUTE;
adds(exp)=0;
subs(exp)=0;
offs(exp)=words[1]|(words[0]<<16);
}
else if(ok!=0) {
seg(exp)=SEG_ABSOLUTE;
adds(exp)=0;
subs(exp)=0;