mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-01 08:42:33 +02:00
ARM: avoid some range check errors, while running a compiler compiled with -CR
git-svn-id: trunk@33257 -
This commit is contained in:
parent
96f331038d
commit
e0c21b6f8b
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user