diff options
| author | bors <bors@rust-lang.org> | 2014-01-02 09:02:01 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-01-02 09:02:01 -0800 |
| commit | 3249de8c4f5d4c7cf34a4bda5e98f047b6b72263 (patch) | |
| tree | bde0dfa80e18dcf911d134eb8ca429db08d58a31 /src/rustllvm/RustWrapper.cpp | |
| parent | ff578b7c83efd8d8335dad86f83da346753c8f34 (diff) | |
| parent | 645bb327dbd1fab65a87d2f0bd6ca8c3ec620422 (diff) | |
| download | rust-3249de8c4f5d4c7cf34a4bda5e98f047b6b72263.tar.gz rust-3249de8c4f5d4c7cf34a4bda5e98f047b6b72263.zip | |
auto merge of #11274 : michaelwoerister/rust/issue11083, r=pcwalton
This pull request fixes #11083. The problem was that recursive type definitions were not properly handled for enum types, leading to problems with LLVM's metadata "uniquing". This bug has already been fixed for struct types some time ago (#9658) but I seem to have forgotten about enums back then. I added the offending code from issue #11083 as a test case.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 335c7b2c65b..1fb05b89381 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -420,7 +420,8 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateUnionType( uint64_t AlignInBits, unsigned Flags, LLVMValueRef Elements, - unsigned RunTimeLang) + unsigned RunTimeLang, + const char* UniqueId) { return wrap(Builder->createUnionType( unwrapDI<DIDescriptor>(Scope), @@ -431,7 +432,8 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateUnionType( AlignInBits, Flags, unwrapDI<DIArray>(Elements), - RunTimeLang)); + RunTimeLang, + UniqueId)); } extern "C" void LLVMSetUnnamedAddr(LLVMValueRef Value, LLVMBool Unnamed) { |
