Browse Source

* Fixed internalerror 7843 issue

daniel 22 years ago
parent
commit
436e47a87d
2 changed files with 18 additions and 7 deletions
  1. 6 2
      compiler/i386/n386cal.pas
  2. 12 5
      compiler/ncgcal.pas

+ 6 - 2
compiler/i386/n386cal.pas

@@ -818,7 +818,8 @@ implementation
                                                 (methodpointer.resulttype.def.deftype=classrefdef) and
                                                 is_class(tclassrefdef(methodpointer.resulttype.def).pointertype.def) then
                                                cg.a_param_const(exprasmlist,OS_INT,1,paramanager.getintparaloc(1));
-                                             r.enum:=self_pointer_reg;
+                                             r.enum:=R_INTREGISTER;
+                                             r.number:=NR_SELF_POINTER_REG;
                                              cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1));
                                           end;
                                       end;
@@ -1314,7 +1315,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.82  2003-02-19 22:00:15  daniel
+  Revision 1.83  2003-03-06 11:35:50  daniel
+    * Fixed internalerror 7843 issue
+
+  Revision 1.82  2003/02/19 22:00:15  daniel
     * Code generator converted to new register notation
     - Horribily outdated todo.txt removed
 

+ 12 - 5
compiler/ncgcal.pas

@@ -1140,7 +1140,8 @@ implementation
                    (inlined or
                    (right=nil)) then
                   begin
-                     r.enum:=self_pointer_reg;
+                     r.enum:=R_INTREGISTER;
+                     r.number:=NR_SELF_POINTER_REG;
                      cg.a_param_reg(exprasmlist,OS_ADDR,r,paramanager.getintparaloc(1));
                      reference_reset_base(href,r,0);
                      tmpreg:=cg.get_scratch_reg_address(exprasmlist);
@@ -1372,8 +1373,10 @@ implementation
            (methodpointer.nodetype<>typen) then
            begin
               objectlibrary.getlabel(constructorfailed);
-              r.enum:=self_pointer_reg;
-              r2.enum:=accumulator;
+              r.enum:=R_INTREGISTER;
+              r.number:=NR_SELF_POINTER_REG;
+              r2.enum:=R_INTREGISTER;
+              r2.number:=NR_ACCUMULATOR;
               cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,r,constructorfailed);
               cg.a_param_reg(exprasmlist,OS_ADDR,r2,paramanager.getintparaloc(1));
               reference_reset_base(href,r,0);
@@ -1400,7 +1403,8 @@ implementation
            end;
 
 {$ifdef i386}
-         r.enum:=R_ESP;
+         r.enum:=R_INTREGISTER;
+         r.number:=NR_ESP;
          if pop_size>0 then
            emit_const_reg(A_ADD,S_L,pop_size,r);
 {$endif i386}
@@ -1662,7 +1666,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.39  2003-02-19 22:00:14  daniel
+  Revision 1.40  2003-03-06 11:35:50  daniel
+    * Fixed internalerror 7843 issue
+
+  Revision 1.39  2003/02/19 22:00:14  daniel
     * Code generator converted to new register notation
     - Horribily outdated todo.txt removed