From e53ab768f4d2face41ca483a832ce46ccd34db09 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Fri, 4 Sep 1992 23:25:16 +0000 Subject: [PATCH] from p3: +0.0 is a small integer, at least for moveq --- gas/ChangeLog | 5 +++++ gas/config/tc-m68k.c | 27 ++++++++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index e9846340f8e..a31cf32c65e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index a0109be3d1b..e2433620df5 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -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]; - - 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) { + 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) { seg(exp)=SEG_ABSOLUTE; adds(exp)=0; subs(exp)=0; -- 2.30.2