Browse Source

* fixed allocation of temps for empty arrays on llvm

git-svn-id: trunk@32299 -
Jonas Maebe 9 years ago
parent
commit
5de3785c0e
1 changed files with 8 additions and 2 deletions
  1. 8 2
      compiler/llvm/tgllvm.pas

+ 8 - 2
compiler/llvm/tgllvm.pas

@@ -79,7 +79,7 @@ implementation
        systems,verbose,
        systems,verbose,
        procinfo,
        procinfo,
        llvmbase,aasmllvm,
        llvmbase,aasmllvm,
-       symconst,
+       symconst,symdef,
        cgobj
        cgobj
        ;
        ;
 
 
@@ -159,7 +159,13 @@ implementation
 
 
     procedure ttgllvm.gethltemp(list: TAsmList; def: tdef; forcesize: asizeint; temptype: ttemptype; out ref: treference);
     procedure ttgllvm.gethltemp(list: TAsmList; def: tdef; forcesize: asizeint; temptype: ttemptype; out ref: treference);
       begin
       begin
-        alloctemp(list,def.size,def.alignment,temptype,def,false,ref);
+        { empty array (can happen for arrayconstructors) -> don't request the
+          size, as that will internalerror }
+        if (def.typ=arraydef) and
+           (tarraydef(def).highrange<tarraydef(def).lowrange) then
+          alloctemp(list,0,def.alignment,temptype,def,false,ref)
+        else
+          alloctemp(list,def.size,def.alignment,temptype,def,false,ref);
       end;
       end;