peter 26 years ago
parent
commit
438c1e07b6
4 changed files with 51 additions and 23 deletions
  1. 11 7
      compiler/assemble.pas
  2. 8 5
      compiler/htypechk.pas
  3. 6 8
      compiler/link.pas
  4. 26 3
      compiler/ra386int.pas

+ 11 - 7
compiler/assemble.pas

@@ -151,12 +151,10 @@ begin
      lastas:=ord(target_asm.id);
      { is an assembler passed ? }
      if utilsdirectory<>'' then
-         begin
-            LastASBin:=Search(target_asm.asmbin+source_os.exeext,
-              utilsdirectory,asfound)+target_asm.asmbin+source_os.exeext;
-         end
-       else
-         LastASBin:=FindExe(target_asm.asmbin,asfound);
+       LastASBin:=Search(target_asm.asmbin+source_os.exeext,utilsdirectory,asfound)+
+         target_asm.asmbin+source_os.exeext;
+     if LastASBin='' then
+       LastASBin:=FindExe(target_asm.asmbin,asfound);
      if (not asfound) and not(cs_asm_extern in aktglobalswitches) then
       begin
         Message1(exec_w_assembler_not_found,LastASBin);
@@ -549,7 +547,13 @@ end;
 end.
 {
   $Log$
-  Revision 1.48  1999-05-27 19:44:03  peter
+  Revision 1.49  1999-06-28 16:02:29  peter
+    * merged
+
+  Revision 1.48.2.1  1999/06/28 15:55:39  peter
+    * also search path if not found in utilsdirectory
+
+  Revision 1.48  1999/05/27 19:44:03  peter
     * removed oldasm
     * plabel -> pasmlabel
     * -a switches to source writing automaticly

+ 8 - 5
compiler/htypechk.pas

@@ -460,7 +460,7 @@ implementation
            else
              begin
              { assignment overwritten ?? }
-               if assigned(assignment_overloaded(def_from,def_to)) then
+               if assignment_overloaded(def_from,def_to)<>nil then
                 b:=2;
              end;
          end;
@@ -662,11 +662,14 @@ implementation
 end.
 {
   $Log$
-  Revision 1.29  1999-06-18 11:02:51  daniel
-  - Enumerations no longer compatible with integer types.
+  Revision 1.30  1999-06-28 16:02:30  peter
+    * merged
 
-  Revision 1.28  1999/06/17 13:19:51  pierre
-   * merged from 0_99_12 branch
+  Revision 1.27.2.3  1999/06/28 15:51:27  peter
+    * tp7 fix
+
+  Revision 1.27.2.2  1999/06/18 10:56:58  daniel
+  - Enumerations no longer compatible with integer types
 
   Revision 1.27.2.1  1999/06/17 12:51:42  pierre
    * changed is_assignment_overloaded into

+ 6 - 8
compiler/link.pas

@@ -163,11 +163,9 @@ begin
   if LastLDBin='' then
    begin
      if utilsdirectory<>'' then
-       begin
-          LastLDBin:=Search(target_link.linkbin+source_os.exeext,
-            utilsdirectory,ldfound)+target_link.linkbin+source_os.exeext;
-       end
-     else
+       LastLDBin:=Search(target_link.linkbin+source_os.exeext,utilsdirectory,ldfound)+
+         target_link.linkbin+source_os.exeext;
+     if LastLDBin='' then
        LastLDBin:=FindExe(target_link.linkbin,ldfound);
      if (not ldfound) and not(cs_link_extern in aktglobalswitches) then
       begin
@@ -654,11 +652,11 @@ end;
 end.
 {
   $Log$
-  Revision 1.56  1999-06-18 09:55:30  peter
+  Revision 1.57  1999-06-28 16:02:31  peter
     * merged
 
-  Revision 1.55  1999/06/15 13:57:31  peter
-    * merged
+  Revision 1.54.2.3  1999/06/28 15:55:40  peter
+    * also search path if not found in utilsdirectory
 
   Revision 1.54.2.2  1999/06/18 09:51:55  peter
     * always use shell() for go32v2 to support LFN

+ 26 - 3
compiler/ra386int.pas

@@ -333,6 +333,24 @@ begin
               if not inexpression then
                exit;
             end;
+           { support st(X) for fpu registers }
+           if (actasmpattern = 'ST') and (c='(') then
+            Begin
+              actasmpattern:=actasmpattern+c;
+              c:=current_scanner^.asmgetchar;
+              if c in ['0'..'9'] then
+               actasmpattern:=actasmpattern + c
+              else
+               Message(asmr_e_invalid_fpu_register);
+              c:=current_scanner^.asmgetchar;
+              if c <> ')' then
+               Message(asmr_e_invalid_fpu_register)
+              else
+               Begin
+                 actasmpattern:=actasmpattern + c;
+                 c:=current_scanner^.asmgetchar;
+               end;
+            end;
            if is_register(actasmpattern) then
             exit;
            if is_asmdirective(actasmpattern) then
@@ -1603,8 +1621,7 @@ Begin
       else
         Begin
           Message(asmr_e_syntax_error);
-          { error recovery }
-          Consume(actasmtoken);
+          RecoverConsume(false);
         end;
     end; { end case }
   until false;
@@ -1640,9 +1657,15 @@ begin
 end.
 {
   $Log$
-  Revision 1.38  1999-06-21 16:45:02  peter
+  Revision 1.39  1999-06-28 16:02:32  peter
     * merged
 
+  Revision 1.37.2.3  1999/06/28 15:52:36  peter
+    * better recovery in main loop
+
+  Revision 1.37.2.2  1999/06/22 14:20:22  peter
+    * fixed parsing and writing of fpureg
+
   Revision 1.37.2.1  1999/06/21 16:43:00  peter
     * fixed label and opcode on the same line