From 0dee786d4c542bb4427b12dcff2eef924a2a441e Mon Sep 17 00:00:00 2001 From: jonas Date: Sun, 29 Apr 2012 22:27:00 +0000 Subject: * i386 version of fix from r21113 git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@21127 3ad0048d-3df7-0310-abae-a5850022a9f2 --- compiler/i386/popt386.pas | 14 +++++++++++--- 1 file 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; -- cgit v1.2.1