diff --git a/compiler/sparcgen/aoptcpu.pas b/compiler/sparcgen/aoptcpu.pas index 8330abbed6..804c44da1b 100644 --- a/compiler/sparcgen/aoptcpu.pas +++ b/compiler/sparcgen/aoptcpu.pas @@ -25,6 +25,8 @@ unit aoptcpu; {$i fpcdefs.inc} +{ $define DEBUG_AOPTCPU} + Interface uses @@ -40,6 +42,7 @@ unit aoptcpu; var AllUsedRegs: TAllUsedRegs): Boolean; function RegLoadedWithNewValue(reg : tregister; hp : tai) : boolean; override; function InstructionLoadsFromReg(const reg : TRegister; const hp : tai) : boolean; override; + procedure DebugMsg(const s : string;p : tai); End; Implementation @@ -153,6 +156,18 @@ unit aoptcpu; end; +{$ifdef DEBUG_AOPTCPU} + procedure TCpuAsmOptimizer.DebugMsg(const s: string;p : tai); + begin + asml.insertbefore(tai_comment.Create(strpnew(s)), p); + end; +{$else DEBUG_AOPTCPU} + procedure TCpuAsmOptimizer.DebugMsg(const s: string;p : tai);inline; + begin + end; +{$endif DEBUG_AOPTCPU} + + function TCpuAsmOptimizer.TryRemoveMov(var p: tai; opcode: TAsmOp): boolean; var next,hp1: tai; @@ -211,6 +226,7 @@ unit aoptcpu; { finally get rid of the mov } taicpu(p).loadreg(2,taicpu(next).oper[1]^.reg); + DebugMsg('Peephole OpMov2Op done',p); asml.remove(next); next.free; end; @@ -252,6 +268,7 @@ unit aoptcpu; if not RegUsedAfterInstruction(taicpu(p).oper[2]^.reg,next2,TmpUsedRegs) then begin taicpu(next2).loadreg(0,taicpu(p).oper[0]^.reg); + DebugMsg('Peephole SLLSRxSTH2STH done',next2); asml.remove(p); asml.remove(next); p.free;