diff --git a/compiler/m68k/cgcpu.pas b/compiler/m68k/cgcpu.pas index b6cebaa9a3..369210d875 100644 --- a/compiler/m68k/cgcpu.pas +++ b/compiler/m68k/cgcpu.pas @@ -1804,7 +1804,15 @@ unit cgcpu; pasbool8,pasbool16,pasbool32,pasbool64]))) then cond:=C_VC else - cond:=C_CC; + begin + { MUL/DIV always sets the overflow flag, and never the carry flag } + { Note/Fixme: This still doesn't cover the ColdFire, where none of these opcodes + set either the overflow or the carry flag. So CF must be handled in other ways. } + if taicpu(list.last).opcode in [A_MULU,A_MULS,A_DIVS,A_DIVU,A_DIVUL,A_DIVSL] then + cond:=C_VC + else + cond:=C_CC; + end; ai:=Taicpu.Op_Sym(A_Bxx,S_NO,hl); ai.SetCondition(cond); ai.is_jmp:=true;