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/config | |
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/config')
-rw-r--r-- | gas/config/tc-m68k.c | 27 |
1 files changed, 18 insertions, 9 deletions
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; |