ARM: avoid some range check errors, while running a compiler compiled with -CR

git-svn-id: trunk@33257 -
This commit is contained in:
Károly Balogh 2016-03-16 10:08:44 +00:00
parent 96f331038d
commit e0c21b6f8b
3 changed files with 8 additions and 8 deletions

View File

@ -2779,15 +2779,15 @@ implementation
function MakeRegList(reglist: tcpuregisterset): word;
var
i, w: word;
i, w: integer;
begin
result:=0;
w:=1;
w:=0;
for i:=RS_R0 to RS_R15 do
begin
if i in reglist then
result:=result or w;
w:=w shl 1
result:=result or (1 shl w);
inc(w);
end;
end;
@ -2980,9 +2980,9 @@ implementation
bytes:=bytes or (((oper[0]^.ref^.offset-8) shr 2) and $ffffff);
if (opcode<>A_BL) or (condition<>C_None) then
objdata.writereloc(bytes,4,currsym,RELOC_RELATIVE_24)
objdata.writereloc(aint(bytes),4,currsym,RELOC_RELATIVE_24)
else
objdata.writereloc(bytes,4,currsym,RELOC_RELATIVE_CALL);
objdata.writereloc(aint(bytes),4,currsym,RELOC_RELATIVE_CALL);
exit;
end;

View File

@ -814,7 +814,7 @@ implementation
ordconstn:
begin
{$ifdef ARM}
if not(is_shifter_const(tordconstnode(p).value.svalue,dummy)) then
if not(is_shifter_const(aint(tordconstnode(p).value.svalue),dummy)) then
result:=2;
{$endif ARM}
exit;

View File

@ -864,7 +864,7 @@ implementation
if (reltype in [RELOC_RELATIVE_24,RELOC_RELATIVE_CALL]) and
(p.objsection=CurrObjSec) then
begin
data:=(data and $ff000000) or (((((data and $ffffff) shl 2)+(symaddr-CurrObjSec.Size)) shr 2) and $FFFFFF); // TODO: Check overflow
data:=aint((data and $ff000000) or (((((data and $ffffff) shl 2)+(symaddr-CurrObjSec.Size)) shr 2) and $FFFFFF)); // TODO: Check overflow
end
else
{$endif ARM}