about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-09-09 02:32:30 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-09-09 13:48:54 -0400
commit889e1b9731615a6b03b0e46662edb70c6ca7e7ad (patch)
treeefa68942d244886127abd459e6efa43a23757a05 /src/rustllvm/RustWrapper.cpp
parentdd5c7379e9b8f3fe6df95f3ff43ca955b6bba485 (diff)
downloadrust-889e1b9731615a6b03b0e46662edb70c6ca7e7ad.tar.gz
rust-889e1b9731615a6b03b0e46662edb70c6ca7e7ad.zip
add `noalias` attribute to ~ return values
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
-rw-r--r--src/rustllvm/RustWrapper.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 376adf24e25..226a7c34304 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -350,6 +350,21 @@ extern "C" void LLVMAddFunctionAttrString(LLVMValueRef fn, const char *Name) {
   unwrap<Function>(fn)->addFnAttr(Name);
 }
 
+
+extern "C" void LLVMAddReturnAttribute(LLVMValueRef Fn, LLVMAttribute PA) {
+  Function *A = unwrap<Function>(Fn);
+  AttrBuilder B(PA);
+  A->addAttributes(AttributeSet::ReturnIndex,
+                   AttributeSet::get(A->getContext(), AttributeSet::ReturnIndex,  B));
+}
+
+extern "C" void LLVMRemoveReturnAttribute(LLVMValueRef Fn, LLVMAttribute PA) {
+  Function *A = unwrap<Function>(Fn);
+  AttrBuilder B(PA);
+  A->removeAttributes(AttributeSet::ReturnIndex,
+                      AttributeSet::get(A->getContext(), AttributeSet::ReturnIndex,  B));
+}
+
 extern "C" LLVMValueRef LLVMBuildAtomicLoad(LLVMBuilderRef B,
                                             LLVMValueRef source,
                                             const char* Name,