Browse Source

* moved skipinstr from daopt386 to aasm
* fixed crashing bug with -dreplacereg in csopt386.pas

Jonas Maebe 25 years ago
parent
commit
38b993f7dc
3 changed files with 23 additions and 18 deletions
  1. 11 5
      compiler/aasm.pas
  2. 7 2
      compiler/csopt386.pas
  3. 5 11
      compiler/daopt386.pas

+ 11 - 5
compiler/aasm.pas

@@ -74,15 +74,17 @@ unit aasm;
        tcpuflags = (cf_64bitaddr);
        tcpuflagset = set of tcpuflags;
 
-{$ifdef newcg}
+{ ait_* types which don't result in executable code or which don't influence   }
+{ the way the program runs/behaves, but which may be encountered by the        }
+{ optimizer (= if it's sometimes added to the exprasm list). Update if you add }
+{ a new ait type!                                                              }
     const
-      SkipInstr = [ait_comment, ait_symbol
+      SkipInstr = [ait_comment, ait_symbol,ait_force_line,ait_section
 {$ifdef GDB}
                    ,ait_stabs, ait_stabn, ait_stab_function_name
 {$endif GDB}
                    ,ait_regalloc, ait_tempalloc
   ];
-{$endif newcg}
 
 
   { asm symbol functions }
@@ -1044,7 +1046,11 @@ uses
 end.
 {
   $Log$
-  Revision 1.74  2000-01-23 16:31:38  peter
+  Revision 1.75  2000-01-28 15:15:31  jonas
+     * moved skipinstr from daopt386 to aasm
+     * fixed crashing bug with -dreplacereg in csopt386.pas
+
+  Revision 1.74  2000/01/23 16:31:38  peter
     * fixed uninited asmsymbol.typ var
 
   Revision 1.73  2000/01/19 22:53:57  florian
@@ -1142,4 +1148,4 @@ end.
   Revision 1.48  1999/05/28 09:11:39  peter
     * also count ref when asmlabel^.name is used
 
-}
+}

+ 7 - 2
compiler/csopt386.pas

@@ -691,7 +691,8 @@ begin
   while tmpResult and not sequenceEnd do
     begin
       tmpResult :=
-        getNextInstruction(endP,endP);
+        getNextInstruction(endP,endP) and
+        (endP^.typ = ait_instruction);
       if tmpresult and not assigned(endP^.optInfo) then
         begin
           hp := new(pai_asm_comment,init(strpnew('next no optinfo')));
@@ -1170,7 +1171,11 @@ End.
 
 {
  $Log$
- Revision 1.41  2000-01-23 11:11:37  michael
+ Revision 1.42  2000-01-28 15:15:31  jonas
+    * moved skipinstr from daopt386 to aasm
+    * fixed crashing bug with -dreplacereg in csopt386.pas
+
+ Revision 1.41  2000/01/23 11:11:37  michael
  + Fixes from Jonas.
 
  Revision 1.40  2000/01/22 16:10:06  jonas

+ 5 - 11
compiler/daopt386.pas

@@ -96,16 +96,6 @@ Function FindLabel(L: PasmLabel; Var hp: Pai): Boolean;
 
 Const
 
-{ait_* types which don't result in executable code or which don't influence
- the way the program runs/behaves}
-
-  SkipInstr = [ait_comment, ait_symbol
-{$ifdef GDB}
-  ,ait_stabs, ait_stabn, ait_stab_function_name
-{$endif GDB}
-  ,ait_regalloc, ait_tempalloc
-  ];
-
 {Possible register content types}
   con_Unknown = 0;
   con_ref = 1;
@@ -2131,7 +2121,11 @@ End.
 
 {
  $Log$
- Revision 1.79  2000-01-22 16:08:06  jonas
+ Revision 1.80  2000-01-28 15:15:31  jonas
+    * moved skipinstr from daopt386 to aasm
+    * fixed crashing bug with -dreplacereg in csopt386.pas
+
+ Revision 1.79  2000/01/22 16:08:06  jonas
    * better handling of exit(func_result) (no release of register that
      holds the function result added)
    * several other small improvements for reg allocation fixes