|
@@ -26,7 +26,7 @@ unit nppcmat;
|
|
interface
|
|
interface
|
|
|
|
|
|
uses
|
|
uses
|
|
- node,nmat;
|
|
|
|
|
|
+ node,nmat,ncgmat;
|
|
|
|
|
|
type
|
|
type
|
|
tppcmoddivnode = class(tmoddivnode)
|
|
tppcmoddivnode = class(tmoddivnode)
|
|
@@ -44,7 +44,7 @@ interface
|
|
procedure pass_generate_code;override;
|
|
procedure pass_generate_code;override;
|
|
end;
|
|
end;
|
|
|
|
|
|
- tppcnotnode = class(tnotnode)
|
|
|
|
|
|
+ tppcnotnode = class(tcgnotnode)
|
|
procedure pass_generate_code;override;
|
|
procedure pass_generate_code;override;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -513,31 +513,11 @@ implementation
|
|
procedure tppcnotnode.pass_generate_code;
|
|
procedure tppcnotnode.pass_generate_code;
|
|
|
|
|
|
var
|
|
var
|
|
- hl : tasmlabel;
|
|
|
|
tmpreg: tregister;
|
|
tmpreg: tregister;
|
|
begin
|
|
begin
|
|
if is_boolean(resultdef) then
|
|
if is_boolean(resultdef) then
|
|
begin
|
|
begin
|
|
- { if the location is LOC_JUMP, we do the secondpass after the
|
|
|
|
- labels are allocated
|
|
|
|
- }
|
|
|
|
- if left.expectloc=LOC_JUMP then
|
|
|
|
- begin
|
|
|
|
- hl:=current_procinfo.CurrTrueLabel;
|
|
|
|
- current_procinfo.CurrTrueLabel:=current_procinfo.CurrFalseLabel;
|
|
|
|
- current_procinfo.CurrFalseLabel:=hl;
|
|
|
|
- secondpass(left);
|
|
|
|
-
|
|
|
|
- if left.location.loc<>LOC_JUMP then
|
|
|
|
- internalerror(2012081303);
|
|
|
|
-
|
|
|
|
- maketojumpbool(current_asmdata.CurrAsmList,left,lr_load_regvars);
|
|
|
|
- hl:=current_procinfo.CurrTrueLabel;
|
|
|
|
- current_procinfo.CurrTrueLabel:=current_procinfo.CurrFalseLabel;
|
|
|
|
- current_procinfo.CurrFalseLabel:=hl;
|
|
|
|
- location.loc:=LOC_JUMP;
|
|
|
|
- end
|
|
|
|
- else
|
|
|
|
|
|
+ if not handle_locjump then
|
|
begin
|
|
begin
|
|
secondpass(left);
|
|
secondpass(left);
|
|
case left.location.loc of
|
|
case left.location.loc of
|