Browse Source

* internal error 10 with ansistrings fixed

florian 26 years ago
parent
commit
45da1362e4
2 changed files with 12 additions and 2 deletions
  1. 7 1
      compiler/cg386add.pas
  2. 5 1
      compiler/cg386cnv.pas

+ 7 - 1
compiler/cg386add.pas

@@ -142,6 +142,9 @@ implementation
                         temptoremove:=new(plinkedlist,init);
                         cmpop:=false;
                         secondpass(p^.left);
+
+                        { to avoid problem with maybe_push and restore }
+                        set_location(p^.location,p^.left^.location);
                         pushed:=maybe_push(p^.right^.registers32,p);
                         secondpass(p^.right);
                         if pushed then restore(p);
@@ -1806,7 +1809,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.41  1999-01-20 19:23:10  jonas
+  Revision 1.42  1999-02-12 10:43:56  florian
+    * internal error 10 with ansistrings fixed
+
+  Revision 1.41  1999/01/20 19:23:10  jonas
     * fixed set1 <= set2 for small sets
 
   Revision 1.40  1999/01/20 17:39:22  jonas

+ 5 - 1
compiler/cg386cnv.pas

@@ -855,6 +855,7 @@ implementation
                gettempofsizereference(4,pto^.location.reference);
                ltemptoremove^.concat(new(ptemptodestroy,init(pto^.location.reference,pto^.resulttype)));
                exprasmlist^.concat(new(pai386,op_const_ref(A_MOV,S_L,0,newreference(pto^.location.reference))));
+               release_loc(pfrom^.location);
                pushusedregisters(pushed,$ff);
                emit_pushw_loc(pfrom^.location);
                emitpushreferenceaddr(exprasmlist,pto^.location.reference);
@@ -1613,7 +1614,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.54  1999-02-02 12:35:02  florian
+  Revision 1.55  1999-02-12 10:43:57  florian
+    * internal error 10 with ansistrings fixed
+
+  Revision 1.54  1999/02/02 12:35:02  florian
     * ltemptoremove handling corrected
 
   Revision 1.53  1999/02/02 11:47:55  peter