Browse Source

* fixed browcol
+ -ar to show regalloc info in .s file

peter 26 years ago
parent
commit
ac80a9af26
3 changed files with 29 additions and 36 deletions
  1. 12 5
      compiler/browcol.pas
  2. 6 2
      compiler/globtype.pas
  3. 11 29
      compiler/popt386.pas

+ 12 - 5
compiler/browcol.pas

@@ -948,7 +948,10 @@ procedure CreateBrowserCol;
                    SetVType(Symbol,GetDefinitionStr(definition));
                ProcessDefIfStruct(definition);
                MemInfo.Addr:=address;
-               MemInfo.LocalAddr:=localaddress;
+               if assigned(localvarsym) then
+                 MemInfo.LocalAddr:=localvarsym^.address
+               else
+                 MemInfo.LocalAddr:=0;
                MemInfo.Size:=getsize;
                MemInfo.PushSize:=getpushsize;
                Symbol^.SetMemInfo(MemInfo);
@@ -1094,7 +1097,7 @@ begin
         InsertSymbolCollection(P^.Items);
     end;
 end;
-function SearchObjectForSymbol(O: PSymbol): PObjectSymbol;
+function SearchObjectForSym(O: PSymbol): PObjectSymbol;
 var I,Idx: sw_integer;
     OS,P: PObjectSymbol;
 begin
@@ -1105,7 +1108,7 @@ begin
       if OS^.Symbol=O then
         begin P:=OS; Break; end;
     end;
-  SearchObjectForSymbol:=P;
+  SearchObjectForSym:=P;
 end;
 procedure BuildTree;
 var I: sw_integer;
@@ -1119,7 +1122,7 @@ begin
       if Symbol^.Ancestor=nil then
         Parent:=ObjectsSymbol
       else
-        Parent:=SearchObjectForSymbol(Symbol^.Ancestor);
+        Parent:=SearchObjectForSym(Symbol^.Ancestor);
       if Parent<>nil then
         begin
           New(OS, Init(Parent, Symbol));
@@ -1217,7 +1220,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.11  1999-04-08 10:17:42  peter
+  Revision 1.12  1999-04-10 16:15:00  peter
+    * fixed browcol
+    + -ar to show regalloc info in .s file
+
+  Revision 1.11  1999/04/08 10:17:42  peter
     + objects support
 
   Revision 1.8  1999/03/03 01:38:11  pierre

+ 6 - 2
compiler/globtype.pas

@@ -66,7 +66,7 @@ interface
          { debugger }
          cs_gdb_dbx,cs_gdb_gsym,cs_gdb_heaptrc,
          { assembling }
-         cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source,
+         cs_asm_leave,cs_asm_extern,cs_asm_pipe,cs_asm_source,cs_asm_regalloc,
          { linking }
          cs_link_extern,cs_link_shared,cs_link_static,cs_link_deffile
        );
@@ -108,7 +108,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.4  1999-03-26 00:05:30  peter
+  Revision 1.5  1999-04-10 16:15:01  peter
+    * fixed browcol
+    + -ar to show regalloc info in .s file
+
+  Revision 1.4  1999/03/26 00:05:30  peter
     * released valintern
     + deffile is now removed when compiling is finished
     * ^( compiles now correct

+ 11 - 29
compiler/popt386.pas

@@ -394,10 +394,7 @@ Begin
                     Then
                       Begin
                         New(TmpRef);
-                        TmpRef^.segment := R_DEFAULT_SEG;
-                        TmpRef^.symbol := nil;
-                        TmpRef^.is_immediate := false;
-                        TmpRef^.offset := 0;
+                        Reset_reference(TmpRef^);
                         Case Longint(Pai386(p)^.op1) Of
                           3: Begin
                              {imul 3, reg1, reg2 to
@@ -461,10 +458,7 @@ Begin
                                     hp1^.fileinfo := p^.fileinfo;
                                     InsertLLItem(AsmL,p, p^.next, hp1);
                                     New(TmpRef);
-                                    TmpRef^.segment := R_DEFAULT_SEG;
-                                    TmpRef^.symbol := nil;
-                                    TmpRef^.is_immediate := false;
-                                    TmpRef^.offset := 0;
+                                    Reset_reference(TmpRef^);
                                     TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
                                     TmpRef^.ScaleFactor := 2;
                                     If (Pai386(p)^.op3t = Top_Reg)
@@ -567,10 +561,7 @@ Begin
                                      hp1^.fileinfo := p^.fileinfo;
                                      InsertLLItem(AsmL,p, p^.next, hp1);
                                      New(TmpRef);
-                                     TmpRef^.segment := R_DEFAULT_SEG;
-                                     TmpRef^.symbol := nil;
-                                     TmpRef^.is_immediate := false;
-                                     TmpRef^.offset := 0;
+                                     Reset_reference(TmpRef^);
                                      TmpRef^.Index := TRegister(twowords(Pai386(p)^.op2).Word1);
                                      If (Pai386(p)^.op3t = Top_Reg)
                                        Then
@@ -1120,13 +1111,8 @@ Begin
                          Pai386(p)^.op2 := Pai386(p)^.op1;
                          Pai386(p)^.opxt := top_ref + top_reg shl 4;
                          New(TmpRef);
-                         TmpRef^.segment := R_DEFAULT_SEG;
+                         Reset_reference(TmpRef^);
                          TmpRef^.base := R_ESP;
-                         TmpRef^.index := R_NO;
-                         TmpRef^.scalefactor := 1;
-                         TmpRef^.symbol := nil;
-                         TmpRef^.is_immediate := false;
-                         TmpRef^.offset := 0;
                          Pai386(p)^.op1 := Pointer(TmpRef);
                          hp1 := Pai(p^.next);
                          AsmL^.Remove(hp1);
@@ -1162,13 +1148,9 @@ Begin
                         TmpBool2 := False; {have we found an add/sub which could be
                                             integrated in the lea?}
                         New(TmpRef);
-                        TmpRef^.segment := R_DEFAULT_SEG;
-                        TmpRef^.base := R_NO;
+                        Reset_reference(TmpRef^);
                         TmpRef^.index := TRegister(Pai386(p)^.op2);
                         TmpRef^.scalefactor := 1 shl Longint(Pai386(p)^.op1);
-                        TmpRef^.symbol := nil;
-                        TmpRef^.is_immediate := false;
-                        TmpRef^.offset := 0;
                         While TmpBool1 And
                               GetNextInstruction(p, hp1) And
                               (Pai(hp1)^.typ = ait_instruction) And
@@ -1246,13 +1228,9 @@ Begin
                              "shl $3, %reg" to "lea (,%reg,8), %reg}
                                  Begin
                                    New(TmpRef);
-                                   TmpRef^.segment := R_DEFAULT_SEG;
-                                   TmpRef^.base := R_NO;
+                                   Reset_reference(TmpRef^);
                                    TmpRef^.index := TRegister(Pai386(p)^.op2);
                                    TmpRef^.scalefactor := 1 shl Longint(Pai386(p)^.op1);
-                                   TmpRef^.symbol := nil;
-                                   TmpRef^.is_immediate := false;
-                                   TmpRef^.offset := 0;
                                    hp1 := new(Pai386,op_ref_reg(A_LEA,S_L,TmpRef, TRegister(Pai386(p)^.op2)));
                                    hp1^.fileinfo := p^.fileinfo;
                                    InsertLLItem(AsmL,p^.previous, p^.next, hp1);
@@ -1613,7 +1591,11 @@ End.
 
 {
  $Log$
- Revision 1.41  1999-04-09 08:33:05  peter
+ Revision 1.42  1999-04-10 16:15:04  peter
+   * fixed browcol
+   + -ar to show regalloc info in .s file
+
+ Revision 1.41  1999/04/09 08:33:05  peter
    * fixed mov reg,treg;mov treg,x bug
 
  Revision 1.40  1999/03/29 16:02:50  peter