Browse Source

* avoid spurious range errors due to longint+qword expressions (results in
both values getting converted to a qword, which causes a range error
in case the longint is smaller than 0)

git-svn-id: trunk@21621 -

Jonas Maebe 13 years ago
parent
commit
313e976256
1 changed files with 6 additions and 0 deletions
  1. 6 0
      compiler/x86/aasmcpu.pas

+ 6 - 0
compiler/x86/aasmcpu.pas

@@ -1038,8 +1038,11 @@ implementation
                         begin
                           currsym:=objdata.symbolref(ref^.symbol);
                           l:=ref^.offset;
+{$push}
+{$r-}
                           if assigned(currsym) then
                             inc(l,currsym.address);
+{$pop}
                           { when it is a forward jump we need to compensate the
                             offset of the instruction since the previous time,
                             because the symbol address is then still using the
@@ -2212,8 +2215,11 @@ implementation
               begin
                 getvalsym(c-40);
                 data:=currval-insend;
+{$push}
+{$r-}
                 if assigned(currsym) then
                  inc(data,currsym.address);
+{$pop}
                 if (data>127) or (data<-128) then
                  Message1(asmw_e_short_jmp_out_of_range,tostr(data));
                 objdata.writebytes(data,1);