Disable checkpointer call when handling left of prefetch node

git-svn-id: trunk@34559 -
This commit is contained in:
pierre 2016-09-24 07:34:10 +00:00
parent c36faacd57
commit fe4e2956c6
3 changed files with 18 additions and 0 deletions

View File

@ -380,10 +380,16 @@ implementation
var var
ref : treference; ref : treference;
r : tregister; r : tregister;
checkpointer_used : boolean;
begin begin
if not(GenerateThumbCode) and (CPUARM_HAS_EDSP in cpu_capabilities[current_settings.cputype]) then if not(GenerateThumbCode) and (CPUARM_HAS_EDSP in cpu_capabilities[current_settings.cputype]) then
begin begin
{ do not call Checkpointer for left node }
checkpointer_used:=(cs_checkpointer in current_settings.localswitches);
exclude(current_settings.localswitches,cs_checkpointer);
secondpass(left); secondpass(left);
if checkpointer_used then
include(current_settings.localswitches,cs_checkpointer);
case left.location.loc of case left.location.loc of
LOC_CREFERENCE, LOC_CREFERENCE,
LOC_REFERENCE: LOC_REFERENCE:

View File

@ -205,8 +205,14 @@ implementation
procedure tgppcinlinenode.second_prefetch; procedure tgppcinlinenode.second_prefetch;
var var
r: tregister; r: tregister;
checkpointer_used : boolean;
begin begin
{ do not call Checkpointer for left node }
checkpointer_used:=(cs_checkpointer in current_settings.localswitches);
exclude(current_settings.localswitches,cs_checkpointer);
secondpass(left); secondpass(left);
if checkpointer_used then
include(current_settings.localswitches,cs_checkpointer);
case left.location.loc of case left.location.loc of
LOC_CREFERENCE, LOC_CREFERENCE,
LOC_REFERENCE: LOC_REFERENCE:

View File

@ -591,12 +591,18 @@ implementation
var var
ref : treference; ref : treference;
r : tregister; r : tregister;
checkpointer_used : boolean;
begin begin
{$if defined(i386) or defined(i8086)} {$if defined(i386) or defined(i8086)}
if current_settings.cputype>=cpu_Pentium3 then if current_settings.cputype>=cpu_Pentium3 then
{$endif i386 or i8086} {$endif i386 or i8086}
begin begin
{ do not call Checkpointer for left node }
checkpointer_used:=(cs_checkpointer in current_settings.localswitches);
exclude(current_settings.localswitches,cs_checkpointer);
secondpass(left); secondpass(left);
if checkpointer_used then
include(current_settings.localswitches,cs_checkpointer);
case left.location.loc of case left.location.loc of
LOC_CREFERENCE, LOC_CREFERENCE,
LOC_REFERENCE: LOC_REFERENCE: