diff options
author | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-05-15 18:06:41 +0000 |
---|---|---|
committer | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-05-15 18:06:41 +0000 |
commit | 643a56d46222b88ab8d3aa77e50c310687b12d1d (patch) | |
tree | fdb107abc88c9127fa8686d41cfd2514177a90b7 /compiler/aoptbase.pas | |
parent | 82aafe830580d66448c0b7eb5ac7a2aa26468263 (diff) | |
download | fpc-643a56d46222b88ab8d3aa77e50c310687b12d1d.tar.gz |
* fixes some issues with reg. allocation information
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@21303 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/aoptbase.pas')
-rw-r--r-- | compiler/aoptbase.pas | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler/aoptbase.pas b/compiler/aoptbase.pas index 0ac9cca969..42360616e1 100644 --- a/compiler/aoptbase.pas +++ b/compiler/aoptbase.pas @@ -47,7 +47,7 @@ unit aoptbase; constructor create; virtual; destructor destroy;override; { returns true if register Reg is used by instruction p1 } - Function RegInInstruction(Reg: TRegister; p1: tai): Boolean; + Function RegInInstruction(Reg: TRegister; p1: tai): Boolean;virtual; { returns true if register Reg occurs in operand op } Function RegInOp(Reg: TRegister; const op: toper): Boolean; { returns true if register Reg is used in the reference Ref } @@ -201,12 +201,12 @@ unit aoptbase; Current := Tai(Current.previous); While Assigned(Current) And (((Current.typ = ait_Marker) And - Not(Tai_Marker(Current).Kind in [mark_AsmBlockEnd,mark_NoPropInfoEnd])) or + Not(Tai_Marker(Current).Kind in [mark_AsmBlockEnd{,mark_NoPropInfoEnd}])) or (Current.typ In SkipInstr) or ((Current.typ = ait_label) And labelCanBeSkipped(Tai_Label(Current)))) Do Current := Tai(Current.previous); - If Assigned(Current) And +{ If Assigned(Current) And (Current.typ = ait_Marker) And (Tai_Marker(Current).Kind = mark_NoPropInfoEnd) Then Begin @@ -214,10 +214,10 @@ unit aoptbase; ((Current.typ <> ait_Marker) Or (Tai_Marker(Current).Kind <> mark_NoPropInfoStart)) Do Current := Tai(Current.previous); - End; + End; } Until Not(Assigned(Current)) Or (Current.typ <> ait_Marker) Or - (Tai_Marker(Current).Kind <> mark_NoPropInfoStart); + not(tai_Marker(current).Kind in [mark_NoPropInfoStart,mark_NoPropInfoEnd]); If Not(Assigned(Current)) or (Current.typ In SkipInstr) or ((Current.typ = ait_label) And |