Browse Source

* fix for webbug 1066/1126

Jonas Maebe 25 years ago
parent
commit
f88e80bced
2 changed files with 16 additions and 6 deletions
  1. 8 5
      compiler/i386/daopt386.pas
  2. 8 1
      compiler/i386/n386cal.pas

+ 8 - 5
compiler/i386/daopt386.pas

@@ -984,7 +984,7 @@ Begin
       End;}
   Until Not(Assigned(Current)) Or
         (Current^.typ <> ait_Marker) Or
-        not(Pai_Marker(Current)^.Kind in [NoPropInfoStart,NoPropInfoEnd]);
+        not(Pai_Marker(Current)^.Kind in [NoPropInfoStart{,NoPropInfoEnd}]);
   Next := Current;
   If Assigned(Current) And
      Not((Current^.typ In SkipInstr) or
@@ -1025,7 +1025,7 @@ Begin
       End;}
   Until Not(Assigned(Current)) Or
         (Current^.typ <> ait_Marker) Or
-        not(Pai_Marker(Current)^.Kind in [NoPropInfoStart,NoPropInfoEnd]);
+        not(Pai_Marker(Current)^.Kind in [NoPropInfoStart{,NoPropInfoEnd}]);
   If Not(Assigned(Current)) or
      (Current^.typ In SkipInstr) or
      ((Current^.typ = ait_label) And
@@ -1051,10 +1051,10 @@ Begin
     OldP := P;
     If (P^.typ in SkipInstr) Or
        ((P^.typ = ait_marker) And
-        (Pai_Marker(P)^.Kind = AsmBlockEnd)) Then
+        (Pai_Marker(P)^.Kind in [AsmBlockEnd,inlinestart,inlineend])) Then
       GetNextInstruction(P, P)
     Else If ((P^.Typ = Ait_Marker) And
-        (Pai_Marker(P)^.Kind = NoPropInfoStart)) Then
+        (Pai_Marker(P)^.Kind = nopropinfostart)) Then
    {a marker of the NoPropInfoStart can't be the first instruction of a
     paasmoutput list}
       GetNextInstruction(Pai(P^.Previous),P);
@@ -2443,7 +2443,10 @@ End.
 
 {
   $Log$
-  Revision 1.7  2000-11-17 15:22:04  jonas
+  Revision 1.8  2000-11-23 13:26:33  jonas
+    * fix for webbug 1066/1126
+
+  Revision 1.7  2000/11/17 15:22:04  jonas
     * fixed another bug in allocregbetween (introduced by the previous fix)
       ("merged")
 

+ 8 - 1
compiler/i386/n386cal.pas

@@ -1507,9 +1507,13 @@ implementation
           ps:=para_size;
           make_global:=false; { to avoid warning }
           genentrycode(inlineentrycode,proc_names,make_global,0,ps,nostackframe,true);
+          if po_assembler in aktprocsym^.definition^.procoptions then
+            inlineentrycode^.insert(new(pai_marker,init(asmblockstart)));
           exprasmlist^.concatlist(inlineentrycode);
           secondpass(inlinetree);
           genexitcode(inlineexitcode,0,false,true);
+          if po_assembler in aktprocsym^.definition^.procoptions then
+            inlineexitcode^.concat(new(pai_marker,init(asmblockend)));
           exprasmlist^.concatlist(inlineexitcode);
 
           dispose(inlineentrycode,done);
@@ -1585,7 +1589,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.9  2000-11-22 15:12:06  jonas
+  Revision 1.10  2000-11-23 13:26:34  jonas
+    * fix for webbug 1066/1126
+
+  Revision 1.9  2000/11/22 15:12:06  jonas
     * fixed inline-related problems (partially "merges")
 
   Revision 1.8  2000/11/17 09:54:58  florian