mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-28 17:43:14 +01:00
59f9b35ceab115e2199ad0cc78dec1c2c2c8092d
are available for extern(C) functions on x86-64. Interestingly, llvm-g++ seems to have a very similar bug: http://llvm.org/pr4242 (So this breaks ABI-compatibility with llvm-gcc for this corner case, but gains it with gcc...) To clarify, this is about code like this: {{{ struct S { void*[3] data; } struct T { void*[2] data; } // The T should be passed in memory, and p in the last int register. extern(C) S fail(int, int, int, int, T t, void* p) { S s; s.data[0] = t.data[0]; s.data[1] = t.data[1]; s.data[2] = p; return s; } }}} which should generate code functionally equivalent to this: {{{ extern(C) S* succeed(S* s, int, int, int, int, T t, void* p) { s.data[0] = t.data[0]; s.data[1] = t.data[1]; s.data[2] = p; return s; } }}} (with the same definitions for S and T)
LLVM D Compiler (LDC) This compiler is based on the Digital Mars D (DMD) compiler frontend, and the LLVM compiler toolkit. See LICENSE for licensing information. For more information, including build instructions, visit the LDC website: http://www.dsource.org/projects/llvmdc
Description
Languages
C
75.2%
C++
23.2%
D
0.7%
CMake
0.6%
Shell
0.2%