July 15, 2015 Re: llvm 3.6 and x86 (32-bit) varargs bad stack adjust | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Nadlinger | On Tuesday, 14 July 2015 at 12:04:57 UTC, David Nadlinger wrote:
> On Monday, 13 July 2015 at 04:34:00 UTC, Kai Nacke wrote:
>> There is no ldc issue yet. Did you check with LLVM 3.7? If we can produce a LLVM bug report then we could try to set this as a release blocker. Branching for the 3.7 release is tomorrow.
>
> So if this is really an LLVM bug that we cannot work around easily, what is our plan for the next LDC release(s)?
>
> — David
I think now that it is not an LLVM bug because stdcall does not support variadic arguments. Solution is to use the C calling convention. DMD seems to do something similar.
Regards,
Kai
|
July 16, 2015 Re: llvm 3.6 and x86 (32-bit) varargs bad stack adjust | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kai Nacke | "Kai Nacke" <kai@redstar.de> writes: > > I think now that it is not an LLVM bug because stdcall does not support variadic arguments. Solution is to use the C calling convention. DMD seems to do something similar. It is odd though that LLVM doesn't complain when varargs is used with CallingConv::X86_StdCall. With ARM when I upgraded to 0.15.2, it specifically told me: [ 5%] Generating src/core/demangle_arm64.o Calling convention does not support varargs or perfect forwarding! i32 (i8*, i64, i8*, ...)* @snprintf LLVM ERROR: Broken module found, compilation aborted! make[3]: *** [runtime/src/core/demangle_arm64.o] Error 1 Then I knew to switch from Fast to C! -- Dan |
Copyright © 1999-2021 by the D Language Foundation