Просмотр исходного кода

- switch -Sa removed
- support of a:=b:=0 removed

florian 27 лет назад
Родитель
Сommit
01575ac687
5 измененных файлов с 44 добавлено и 48 удалено
  1. 7 3
      compiler/cgi386.pas
  2. 6 3
      compiler/parser.pas
  3. 10 5
      compiler/pass_1.pas
  4. 11 32
      compiler/pexpr.pas
  5. 10 5
      compiler/pstatmnt.pas

+ 7 - 3
compiler/cgi386.pas

@@ -2057,7 +2057,7 @@ implementation
          oflabel:=falselabel;
          getlabel(truelabel);
          getlabel(falselabel);
-         withresult:=not(aktexprlevel<4);
+         withresult:=false;
          { calculate left sides }
          secondpass(p^.left);
          case p^.left^.location.loc of
@@ -5654,8 +5654,12 @@ do_jmp:
 end.
 {
   $Log$
-  Revision 1.1  1998-03-25 11:18:13  root
-  Initial revision
+  Revision 1.2  1998-03-26 11:18:30  florian
+    - switch -Sa removed
+    - support of a:=b:=0 removed
+
+  Revision 1.1.1.1  1998/03/25 11:18:13  root
+  * Restored version
 
   Revision 1.58  1998/03/24 21:48:30  florian
     * just a couple of fixes applied:

+ 6 - 3
compiler/parser.pas

@@ -284,7 +284,6 @@ unit parser;
          if compile_system then
           aktswitches:=aktswitches+[cs_compilesystem];
 
-         aktexprlevel:=initexprlevel;
          aktpackrecords:=initpackrecords;
 
          { init code generator for a new module }
@@ -531,8 +530,12 @@ done:
 end.
 {
   $Log$
-  Revision 1.1  1998-03-25 11:18:12  root
-  Initial revision
+  Revision 1.2  1998-03-26 11:18:30  florian
+    - switch -Sa removed
+    - support of a:=b:=0 removed
+
+  Revision 1.1.1.1  1998/03/25 11:18:12  root
+  * Restored version
 
   Revision 1.60  1998/03/24 21:48:32  florian
     * just a couple of fixes applied:

+ 10 - 5
compiler/pass_1.pas

@@ -1675,8 +1675,7 @@ unit pass_1;
                end;
           end;
 
-         if (aktexprlevel<4) then p^.resulttype:=voiddef
-           else p^.resulttype:=p^.right^.resulttype;
+         p^.resulttype:=voiddef;
          {
            p^.registers32:=max(p^.left^.registers32,p^.right^.registers32);
            p^.registersfpu:=max(p^.left^.registersfpu,p^.right^.registersfpu);
@@ -3091,7 +3090,9 @@ unit pass_1;
          if ret_in_param(procinfo.retdef) then
            p^.registers32:=1;
 {$ifdef GDB}
-         if must_be_valid and not procinfo.funcret_is_valid then
+         if must_be_valid and
+           not(procinfo.funcret_is_valid) and
+           ((procinfo.flags and pi_uses_asm)=0) then
            Message(sym_w_function_result_not_set);
          if count_ref then procinfo.funcret_is_valid:=true;
 {$endif * GDB *}
@@ -4486,8 +4487,12 @@ unit pass_1;
 end.
 {
   $Log$
-  Revision 1.1  1998-03-25 11:18:14  root
-  Initial revision
+  Revision 1.2  1998-03-26 11:18:31  florian
+    - switch -Sa removed
+    - support of a:=b:=0 removed
+
+  Revision 1.1.1.1  1998/03/25 11:18:14  root
+  * Restored version
 
   Revision 1.41  1998/03/13 22:45:59  florian
     * small bug fixes applied

+ 11 - 32
compiler/pexpr.pas

@@ -1450,14 +1450,7 @@ unit pexpr;
                             { should be recursive for a:=b:=c !!! }
                             if (p1^.resulttype<>nil) and (p1^.resulttype^.deftype=procvardef) then
                               getprocvar:=true;
-{$ifdef tp}
-                            p2:=expr;
-{$else}
-                            { FPC needs this to recognizes the call       }
-                            { because the function name can be used like  }
-                            { an simple variable                          }
-                            p2:=expr();
-{$endif}
+                            p2:=sub_expr(opcompare);
                             if getprocvar and (p2^.treetype=calln) then
                               begin
                                  p2^.treetype:=loadn;
@@ -1471,12 +1464,7 @@ unit pexpr;
                          { from an improvement of Peter Schaefer    }
             _PLUSASN   : begin
                             consume(_PLUSASN  );
-{$ifdef tp}
-                            p2:=expr;
-{$else}
-                            p2:=expr();
-{$endif}
-
+                            p2:=sub_expr(opcompare);
                             p1:=gennode(assignn,p1,gennode(addn,getcopy(p1),p2));
                             { was first
                               p1:=gennode(assignn,p1,gennode(addn,p1,p2));
@@ -1486,32 +1474,19 @@ unit pexpr;
 
             _MINUSASN   : begin
                             consume(_MINUSASN  );
-{$ifdef tp}
-                            p2:=expr;
-{$else}
-                            p2:=expr();
-{$endif}
+                            p2:=sub_expr(opcompare);
                             p1:=gennode(assignn,p1,gennode(subn,getcopy(p1),p2));
                          end;
             _STARASN   : begin
                             consume(_STARASN  );
-{$ifdef tp}
-                            p2:=expr;
-{$else}
-                            p2:=expr();
-{$endif}
+                            p2:=sub_expr(opcompare);
                             p1:=gennode(assignn,p1,gennode(muln,getcopy(p1),p2));
                          end;
             _SLASHASN   : begin
                             consume(_SLASHASN  );
-{$ifdef tp}
-                            p2:=expr;
-{$else}
-                            p2:=expr();
-{$endif}
+                            p2:=sub_expr(opcompare);
                             p1:=gennode(assignn,p1,gennode(slashn,getcopy(p1),p2));
                          end;
-
          end;
          afterassignment:=oldafterassignment;
          expr:=p1;
@@ -1563,8 +1538,12 @@ unit pexpr;
 end.
 {
   $Log$
-  Revision 1.1  1998-03-25 11:18:14  root
-  Initial revision
+  Revision 1.2  1998-03-26 11:18:31  florian
+    - switch -Sa removed
+    - support of a:=b:=0 removed
+
+  Revision 1.1.1.1  1998/03/25 11:18:14  root
+  * Restored version
 
   Revision 1.26  1998/03/24 21:48:33  florian
     * just a couple of fixes applied:

+ 10 - 5
compiler/pstatmnt.pas

@@ -918,9 +918,10 @@ unit pstatmnt;
                                                         goto ready;
                                                  end;
                                         end;
-                  p:=expr;
-                                  if (aktexprlevel<9) and (p^.treetype<>calln)
-                                    and (p^.treetype<>assignn) and (p^.treetype<>inlinen) then
+                                  p:=expr;
+                                  if (p^.treetype<>calln) and
+                                    (p^.treetype<>assignn) and
+                                    (p^.treetype<>inlinen) then
                                     Message(cg_e_illegal_expression);
                                   code:=p;
                            end;
@@ -1063,8 +1064,12 @@ unit pstatmnt;
 end.
 {
   $Log$
-  Revision 1.1  1998-03-25 11:18:15  root
-  Initial revision
+  Revision 1.2  1998-03-26 11:18:31  florian
+    - switch -Sa removed
+    - support of a:=b:=0 removed
+
+  Revision 1.1.1.1  1998/03/25 11:18:15  root
+  * Restored version
 
   Revision 1.21  1998/03/10 16:27:42  pierre
     * better line info in stabs debug