Browse Source

* error for not specified operand size, which is now required for
newer binutils (merged)
* previous commit fix for tcflw (merged)

peter 25 years ago
parent
commit
2d6ff8c10e
2 changed files with 35 additions and 9 deletions
  1. 26 6
      compiler/ra386.pas
  2. 9 3
      compiler/tcflw.pas

+ 26 - 6
compiler/ra386.pas

@@ -190,14 +190,29 @@ begin
              operand2:=1
             else
              operand2:=2;
-            { Only allow register as operand to take the size from }
-            if operands[operand2]^.opr.typ=OPR_REGISTER then
-             operands[i]^.size:=operands[operand2]^.size
+            if operand2<ops then
+             begin
+               { Only allow register as operand to take the size from }
+               if operands[operand2]^.opr.typ=OPR_REGISTER then
+                operands[i]^.size:=operands[operand2]^.size
+               else
+                begin
+                  { if no register then take the opsize (which is available with ATT),
+                    if not availble then give an error }
+                  if opsize<>S_NO then
+                    operands[i]^.size:=opsize
+                  else
+                   begin
+                     Comment(V_Error,'No size specified and unable to determine the size of the operands');
+                     { recovery }
+                     operands[i]^.size:=S_L;
+                   end;
+                end;
+             end
             else
              begin
-               { if no register then take the opsize (which is available with ATT) }
                if opsize<>S_NO then
-                 operands[i]^.size:=opsize;
+                 operands[i]^.size:=opsize
              end;
           end;
         OPR_SYMBOL :
@@ -437,7 +452,12 @@ end;
 end.
 {
   $Log$
-  Revision 1.2  2000-07-13 11:32:47  michael
+  Revision 1.3  2000-09-03 11:44:00  peter
+    * error for not specified operand size, which is now required for
+      newer binutils (merged)
+    * previous commit fix for tcflw (merged)
+
+  Revision 1.2  2000/07/13 11:32:47  michael
   + removed logs
 
 }

+ 9 - 3
compiler/tcflw.pas

@@ -326,8 +326,9 @@ implementation
          { we need a simple loadn, but the load must be in a global symtable or
            in the same lexlevel }
          if (hp^.treetype<>funcretn) and
-            not((hp^.treetype=loadn) and
-                (hp^.symtable^.symtablelevel>1) and (hp^.symtable^.symtablelevel<>lexlevel)) then
+            (hp^.treetype<>loadn) and
+            (hp^.symtable^.symtablelevel>1) and
+            (hp^.symtable^.symtablelevel<>lexlevel) then
           CGMessagePos(hp^.fileinfo,cg_e_illegal_count_var)
          else
           begin
@@ -636,7 +637,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.6  2000-09-03 11:08:42  peter
+  Revision 1.7  2000-09-03 11:44:00  peter
+    * error for not specified operand size, which is now required for
+      newer binutils (merged)
+    * previous commit fix for tcflw (merged)
+
+  Revision 1.6  2000/09/03 11:08:42  peter
     * fixed counter var checking with funcretn (merged)
 
   Revision 1.5  2000/08/27 16:11:55  peter