Parcourir la source

* fixed bug that caused the "sret" argument attribute to never be used (and
a guaranteed internalerror on AArch64/llvm)

git-svn-id: trunk@40565 -

Jonas Maebe il y a 6 ans
Parent
commit
97bc58d248
1 fichiers modifiés avec 2 ajouts et 3 suppressions
  1. 2 3
      compiler/llvm/llvmdef.pas

+ 2 - 3
compiler/llvm/llvmdef.pas

@@ -690,9 +690,7 @@ implementation
           llvmextractvalueextinfo(hp.vardef,usedef,signext);
           llvmextractvalueextinfo(hp.vardef,usedef,signext);
           { implicit zero/sign extension for ABI compliance? }
           { implicit zero/sign extension for ABI compliance? }
           if not first then
           if not first then
-             encodedstr:=encodedstr+', '
-          else
-            first:=false;
+             encodedstr:=encodedstr+', ';
           llvmaddencodedtype_intern(usedef,[],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
@@ -769,6 +767,7 @@ implementation
               encodedstr:=encodedstr+' '+llvmasmsymname(paraloc^.llvmloc.sym);
               encodedstr:=encodedstr+' '+llvmasmsymname(paraloc^.llvmloc.sym);
             end;
             end;
           paraloc:=paraloc^.next;
           paraloc:=paraloc^.next;
+          first:=false;
         until not assigned(paraloc);
         until not assigned(paraloc);
       end;
       end;