Переглянути джерело

* fixed range of llvm definition of bitpacked arrays

git-svn-id: trunk@32572 -
Jonas Maebe 9 роки тому
батько
коміт
b5c9a20d3f
1 змінених файлів з 5 додано та 2 видалено
  1. 5 2
      compiler/llvm/llvmdef.pas

+ 5 - 2
compiler/llvm/llvmdef.pas

@@ -274,6 +274,8 @@ implementation
     tllvmencodeflags = set of tllvmencodeflag;
 
     procedure llvmaddencodedtype_intern(def: tdef; const flags: tllvmencodeflags; var encodedstr: TSymStr);
+      var
+        elesize: asizeint;
       begin
         case def.typ of
           stringdef :
@@ -422,10 +424,11 @@ implementation
               else if is_packed_array(def) and
                       (tarraydef(def).elementdef.typ in [enumdef,orddef]) then
                 begin
-                  encodedstr:=encodedstr+'['+tostr(tarraydef(def).size div tarraydef(def).elementdef.packedbitsize)+' x ';
+                  elesize:=packedbitsloadsize(tarraydef(def).elementdef.packedbitsize);
+                  encodedstr:=encodedstr+'['+tostr(tarraydef(def).size div elesize)+' x ';
                   { encode as an array of integers with the size on which we
                     perform the packedbits operations }
-                  llvmaddencodedtype_intern(cgsize_orddef(int_cgsize(packedbitsloadsize(tarraydef(def).elementdef.packedbitsize))),[lef_inaggregate],encodedstr);
+                  llvmaddencodedtype_intern(cgsize_orddef(int_cgsize(elesize)),[lef_inaggregate],encodedstr);
                   encodedstr:=encodedstr+']';
                 end
               else