Browse Source

* synchronized with trunk

git-svn-id: branches/wasm@46740 -
nickysn 5 years ago
parent
commit
9df1e7a13e

+ 10 - 4
compiler/xtensa/cpupi.pas

@@ -58,7 +58,8 @@ unit cpupi;
        globals,systems,
        verbose,
        tgobj,
-       symconst,symtype,symsym,symcpu,paramgr,
+       symconst,symtype,symsym,symcpu,symdef,
+       paramgr,
        cgutils,
        cgobj,
        defutil,
@@ -127,7 +128,12 @@ unit cpupi;
                   else
                     begin
                       localsize:=align(localsize,tparavarsym(procdef.parast.SymList[i]).paraloc[calleeside].alignment);
-                      inc(localsize,tabstractnormalvarsym(procdef.parast.SymList[i]).getsize);
+                      { getsize returns 0 for e.g. open arrays, however, they require a pointer at the stack, so
+                        allocate one pointer }
+                      if tabstractnormalvarsym(procdef.parast.SymList[i]).getsize=0 then
+                        inc(localsize,voidpointertype.size)
+                      else
+                        inc(localsize,tabstractnormalvarsym(procdef.parast.SymList[i]).getsize);
                     end;
                 end;
             inc(stackframesize,localsize);
@@ -165,9 +171,9 @@ unit cpupi;
         if pi_estimatestacksize in flags then
           begin
             if pi_do_call in current_procinfo.flags then
-              extra:=4*4+maxcall*4
+              extra:=maxcall*4+4*4
             else
-              extra:=0;
+              extra:=4*4;
             if Align(tg.direction*tg.lasttemp,max(current_settings.alignment.localalignmin,4))+extra>stackframesize then
               InternalError(2020082801);
             result:=stackframesize

+ 1 - 1
packages/fcl-db/src/sql/fpsqlscanner.pp

@@ -897,7 +897,7 @@ begin
         Result := tsqlGT;
       end;
    'a'..'z',
-   'A'..'Z':
+   'A'..'Z', '_':
      Result:=DoIdentifier;
    else
      // Symbol of some sort

+ 2 - 2
packages/fcl-db/tests/tcparser.pas

@@ -4010,10 +4010,10 @@ end;
 
 procedure TTestSelectParser.TestSelectTwoFieldsOneTable;
 begin
-  TestSelect('SELECT B,C FROM A');
+  TestSelect('SELECT B,_C FROM A');
   AssertEquals('Two fields',2,Select.Fields.Count);
   AssertField(Select.Fields[0],'B');
-  AssertField(Select.Fields[1],'C');
+  AssertField(Select.Fields[1],'_C');
   AssertEquals('One table',1,Select.Tables.Count);
   AssertTable(Select.Tables[0],'A');
 end;