diff options
author | Ken Raeburn <raeburn@cygnus> | 1992-09-04 23:25:16 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@cygnus> | 1992-09-04 23:25:16 +0000 |
commit | e53ab768f4d2face41ca483a832ce46ccd34db09 (patch) | |
tree | c65a40aab082128e1fb8ff6f52cde991d259906e /gas | |
parent | 8005788cd1953745d42217ff91b271b4d074d06f (diff) | |
download | gdb-e53ab768f4d2face41ca483a832ce46ccd34db09.zip gdb-e53ab768f4d2face41ca483a832ce46ccd34db09.tar.gz gdb-e53ab768f4d2face41ca483a832ce46ccd34db09.tar.bz2 |
from p3: +0.0 is a small integer, at least for moveq
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-m68k.c | 27 |
2 files changed, 23 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index e984634..a31cf32 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 a0109be..e243362 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; |