diff options
-rw-r--r-- | compiler/i386/popt386.pas | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/compiler/i386/popt386.pas b/compiler/i386/popt386.pas index a7bbfe0434..41ee651b1a 100644 --- a/compiler/i386/popt386.pas +++ b/compiler/i386/popt386.pas @@ -637,12 +637,20 @@ begin because it can never be executed} if (taicpu(p).opcode = A_JMP) then begin - while GetNextInstruction(p, hp1) and + hp2:=p; + while GetNextInstruction(hp2, hp1) and (hp1.typ <> ait_label) do if not(hp1.typ in ([ait_label,ait_align]+skipinstr)) then begin - asml.remove(hp1); - hp1.free; + { don't kill start/end of assembler block, + no-line-info-start/end etc } + if hp1.typ<>ait_marker then + begin + asml.remove(hp1); + hp1.free; + end + else + hp2:=hp1; end else break; end; |