From 17256197a963561d02faff0634e11d7a079e7105 Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Fri, 25 Jul 2014 16:06:44 -0700 Subject: librustc: Use builder for llvm attributes. --- src/rustllvm/RustWrapper.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/rustllvm/RustWrapper.cpp') diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index e28a78b1ee7..bb4a1b6461a 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -113,6 +113,16 @@ extern "C" void LLVMAddCallSiteAttribute(LLVMValueRef Instr, unsigned index, uin index, B))); } +extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef Instr, unsigned idx, uint64_t b) { + CallSite Call = CallSite(unwrap(Instr)); + AttrBuilder B; + B.addDereferenceableAttr(b); + Call.setAttributes( + Call.getAttributes().addAttributes(Call->getContext(), idx, + AttributeSet::get(Call->getContext(), + idx, B))); +} + extern "C" void LLVMAddFunctionAttribute(LLVMValueRef Fn, unsigned index, uint64_t Val) { Function *A = unwrap(Fn); AttrBuilder B; @@ -120,6 +130,13 @@ extern "C" void LLVMAddFunctionAttribute(LLVMValueRef Fn, unsigned index, uint64 A->addAttributes(index, AttributeSet::get(A->getContext(), index, B)); } +extern "C" void LLVMAddDereferenceableAttr(LLVMValueRef Fn, unsigned index, uint64_t bytes) { + Function *A = unwrap(Fn); + AttrBuilder B; + B.addDereferenceableAttr(bytes); + A->addAttributes(index, AttributeSet::get(A->getContext(), index, B)); +} + extern "C" void LLVMAddFunctionAttrString(LLVMValueRef Fn, unsigned index, const char *Name) { Function *F = unwrap(Fn); AttrBuilder B; -- cgit 1.4.1-3-g733a5 From a78c0f1019a4a023de60ae1228ad47fafc96e423 Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Fri, 25 Jul 2014 19:47:29 -0700 Subject: rustllvm: Stub out some functions for llvm < 3.5 --- src/rustllvm/RustWrapper.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/rustllvm/RustWrapper.cpp') diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index bb4a1b6461a..8a3e06aabc6 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -113,6 +113,8 @@ extern "C" void LLVMAddCallSiteAttribute(LLVMValueRef Instr, unsigned index, uin index, B))); } + +#if LLVM_VERSION_MINOR >= 5 extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef Instr, unsigned idx, uint64_t b) { CallSite Call = CallSite(unwrap(Instr)); AttrBuilder B; @@ -122,6 +124,9 @@ extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef Instr, unsigned AttributeSet::get(Call->getContext(), idx, B))); } +#else +extern "C" void LLVMAddDereferenceableCallSiteAttr(LLVMValueRef, unsigned, uint64_t) {} +#endif extern "C" void LLVMAddFunctionAttribute(LLVMValueRef Fn, unsigned index, uint64_t Val) { Function *A = unwrap(Fn); @@ -130,12 +135,16 @@ extern "C" void LLVMAddFunctionAttribute(LLVMValueRef Fn, unsigned index, uint64 A->addAttributes(index, AttributeSet::get(A->getContext(), index, B)); } +#if LLVM_VERSION_MINOR >= 5 extern "C" void LLVMAddDereferenceableAttr(LLVMValueRef Fn, unsigned index, uint64_t bytes) { Function *A = unwrap(Fn); AttrBuilder B; B.addDereferenceableAttr(bytes); A->addAttributes(index, AttributeSet::get(A->getContext(), index, B)); } +#else +extern "C" void LLVMAddDereferenceableAttr(LLVMValueRef, unsigned, uint64_t) {} +#endif extern "C" void LLVMAddFunctionAttrString(LLVMValueRef Fn, unsigned index, const char *Name) { Function *F = unwrap(Fn); -- cgit 1.4.1-3-g733a5