diff options
| author | klutzy <klutzytheklutzy@gmail.com> | 2014-05-10 17:30:55 +0900 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-05-13 17:24:08 -0700 |
| commit | 9f7caed2024268f6de16f99b6696d191f3ca3228 (patch) | |
| tree | 19345dd5d3980348cc53e87b7f2a06af0f4ed768 /src/rustllvm/RustWrapper.cpp | |
| parent | 6878039c122211f227d6c42b7f08282629ceb6c4 (diff) | |
| download | rust-9f7caed2024268f6de16f99b6696d191f3ca3228.tar.gz rust-9f7caed2024268f6de16f99b6696d191f3ca3228.zip | |
rustllvm: Add LLVMRustArrayType
LLVM internally uses `uint64_t` for array size, but the corresponding C API (`LLVMArrayType`) uses `unsigned int` so ths value is truncated. Therefore rustc generates wrong type for fixed-sized large vector e.g. `[0 x i8]` for `[0u8, ..(1 << 32)]`. This patch adds `LLVMRustArrayType` function for `uint64_t` support.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index ec33b750358..717cd333a79 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -754,3 +754,9 @@ LLVMRustGetSectionName(LLVMSectionIteratorRef SI, const char **ptr) { *ptr = ret.data(); return ret.size(); } + +// LLVMArrayType function does not support 64-bit ElementCount +extern "C" LLVMTypeRef +LLVMRustArrayType(LLVMTypeRef ElementType, uint64_t ElementCount) { + return wrap(ArrayType::get(unwrap(ElementType), ElementCount)); +} |
