Ver Fonte

- 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 há 10 anos atrás
pai
commit
b3e786eb77
1 ficheiros alterados com 2 adições e 2 exclusões
  1. 2 2
      compiler/llvm/llvmdef.pas

+ 2 - 2
compiler/llvm/llvmdef.pas

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