浏览代码

- don't specify lef_inaggregate when getting the llvm type representation
for function results and parameters (they're not in an aggregate, and this
caused 80 bits extended floating point types to be translated into arrays
of 10 bytes, which have different ABI meanings)

git-svn-id: trunk@30714 -

Jonas Maebe 10 年之前
父节点
当前提交
b3e786eb77
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      compiler/llvm/llvmdef.pas

+ 2 - 2
compiler/llvm/llvmdef.pas

@@ -597,7 +597,7 @@ implementation
              encodedstr:=encodedstr+', '
           else
             first:=false;
-          llvmaddencodedtype_intern(usedef,[lef_inaggregate],encodedstr);
+          llvmaddencodedtype_intern(usedef,[],encodedstr);
           { in case signextstr<>'', there should be only one paraloc -> no need
             to clear (reason: it means that the paraloc is larger than the
             original parameter) }
@@ -655,7 +655,7 @@ implementation
             if pddecltype in [lpd_decl] then
               encodedstr:=encodedstr+llvmvalueextension2str[signext];
             encodedstr:=encodedstr+' ';
-            llvmaddencodedtype_intern(usedef,[lef_inaggregate],encodedstr);
+            llvmaddencodedtype_intern(usedef,[],encodedstr);
           end
         else
           begin