diff --git a/compiler/m68k/aoptcpu.pas b/compiler/m68k/aoptcpu.pas index 8245985098..12b0dda88e 100644 --- a/compiler/m68k/aoptcpu.pas +++ b/compiler/m68k/aoptcpu.pas @@ -570,8 +570,12 @@ unit aoptcpu; end; { CMP #0, equals to TST , just shorter and TST is more flexible anyway } A_CMP,A_CMPI: - if (taicpu(p).oper[0]^.typ = top_const) and - (taicpu(p).oper[0]^.val = 0) then + if ((taicpu(p).oper[0]^.typ = top_const) and + (taicpu(p).oper[0]^.val = 0)) and + ((taicpu(p).oper[1]^.typ = top_ref) or + ((taicpu(p).oper[1]^.typ = top_reg) and + not (isaddressregister(taicpu(p).oper[1]^.reg) and + not (CPUM68K_HAS_TSTAREG in cpu_capabilities[current_settings.cputype])))) then begin DebugMsg('Optimizer: CMP #0 to TST',p); taicpu(p).opcode:=A_TST;