about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm
diff options
context:
space:
mode:
authorgnzlbg <gonzalobg88@gmail.com>2019-02-09 15:55:30 +0100
committergnzlbg <gonzalobg88@gmail.com>2019-02-23 15:48:40 +0100
commitc4b46ace556f3e4776d06ea7672daba6b243a80f (patch)
tree34033c65f3206aeb933e7784cbb19cb0d22405fa /src/librustc_codegen_llvm
parentbcfb5e8ac30c46ba512526d66f803756c124c7bb (diff)
downloadrust-c4b46ace556f3e4776d06ea7672daba6b243a80f.tar.gz
rust-c4b46ace556f3e4776d06ea7672daba6b243a80f.zip
Implement ffi_returns_twice attribute
Diffstat (limited to 'src/librustc_codegen_llvm')
-rw-r--r--src/librustc_codegen_llvm/attributes.rs3
-rw-r--r--src/librustc_codegen_llvm/llvm/ffi.rs1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs
index 827ebff10f5..dab5cab65cd 100644
--- a/src/librustc_codegen_llvm/attributes.rs
+++ b/src/librustc_codegen_llvm/attributes.rs
@@ -223,6 +223,9 @@ pub fn from_fn_attrs(
     if codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::COLD) {
         Attribute::Cold.apply_llfn(Function, llfn);
     }
+    if codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::FFI_RETURNS_TWICE) {
+        Attribute::ReturnsTwice.apply_llfn(Function, llfn);
+    }
     if codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::NAKED) {
         naked(llfn, true);
     }
diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs
index e761d2247a7..fe2664118f7 100644
--- a/src/librustc_codegen_llvm/llvm/ffi.rs
+++ b/src/librustc_codegen_llvm/llvm/ffi.rs
@@ -114,6 +114,7 @@ pub enum Attribute {
     SanitizeMemory  = 22,
     NonLazyBind     = 23,
     OptimizeNone    = 24,
+    ReturnsTwice    = 25,
 }
 
 /// LLVMIntPredicate