Browse Source

+ support for LOC_VOID parameters in llvm for empty records (fixes
tests/test/tnoext4.)

git-svn-id: trunk@34136 -

Jonas Maebe 9 years ago
parent
commit
687adbefd7
2 changed files with 8 additions and 2 deletions
  1. 3 0
      compiler/llvm/agllvm.pas
  2. 5 2
      compiler/llvm/hlcgllvm.pas

+ 3 - 0
compiler/llvm/agllvm.pas

@@ -251,6 +251,9 @@ implementation
                result:=result+' '+getregisterstring(para^.reg);
                result:=result+' '+getregisterstring(para^.reg);
              LOC_CONSTANT:
              LOC_CONSTANT:
                result:=result+' '+tostr(int64(para^.value));
                result:=result+' '+tostr(int64(para^.value));
+             { empty records }
+             LOC_VOID:
+               result:=result+' undef';
              else
              else
                internalerror(2014010801);
                internalerror(2014010801);
            end;
            end;

+ 5 - 2
compiler/llvm/hlcgllvm.pas

@@ -436,8 +436,7 @@ implementation
     for i:=0 to high(paras) do
     for i:=0 to high(paras) do
       begin
       begin
         paraloc:=paras[i]^.location;
         paraloc:=paras[i]^.location;
-        while assigned(paraloc) and
-              (paraloc^.loc<>LOC_VOID) do
+        while assigned(paraloc) do
           begin
           begin
             new(callpara);
             new(callpara);
             callpara^.def:=paraloc^.def;
             callpara^.def:=paraloc^.def;
@@ -476,6 +475,10 @@ implementation
                         end;
                         end;
                         callpara^.reg:=paraloc^.register
                         callpara^.reg:=paraloc^.register
                     end;
                     end;
+                  { empty records }
+                  LOC_VOID:
+                    begin
+                    end
                   else
                   else
                     internalerror(2014010605);
                     internalerror(2014010605);
                 end;
                 end;