summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/i386/popt386.pas14
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;