From c4b46ace556f3e4776d06ea7672daba6b243a80f Mon Sep 17 00:00:00 2001 From: gnzlbg Date: Sat, 9 Feb 2019 15:55:30 +0100 Subject: Implement ffi_returns_twice attribute --- src/test/codegen/ffi-returns-twice.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/test/codegen/ffi-returns-twice.rs (limited to 'src/test/codegen') diff --git a/src/test/codegen/ffi-returns-twice.rs b/src/test/codegen/ffi-returns-twice.rs new file mode 100644 index 00000000000..f6648249eb6 --- /dev/null +++ b/src/test/codegen/ffi-returns-twice.rs @@ -0,0 +1,15 @@ +// compile-flags: -C no-prepopulate-passes +#![crate_type = "lib"] +#![feature(ffi_returns_twice)] + +extern { + // CHECK-LABEL: @foo() + // CHECK: attributes #1 = { {{.*}}returns_twice{{.*}} } + #[no_mangle] + #[ffi_returns_twice] + pub fn foo(); +} + +pub fn bar() { + unsafe { foo() } +} -- cgit 1.4.1-3-g733a5 From 76403e574231ae54dc7ccf227750af907ea13db3 Mon Sep 17 00:00:00 2001 From: gnzlbg Date: Sun, 10 Feb 2019 09:59:07 +0100 Subject: Use pattern to match attributes --- src/test/codegen/ffi-returns-twice.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src/test/codegen') diff --git a/src/test/codegen/ffi-returns-twice.rs b/src/test/codegen/ffi-returns-twice.rs index f6648249eb6..396e8990d6f 100644 --- a/src/test/codegen/ffi-returns-twice.rs +++ b/src/test/codegen/ffi-returns-twice.rs @@ -2,14 +2,10 @@ #![crate_type = "lib"] #![feature(ffi_returns_twice)] -extern { - // CHECK-LABEL: @foo() - // CHECK: attributes #1 = { {{.*}}returns_twice{{.*}} } - #[no_mangle] - #[ffi_returns_twice] - pub fn foo(); -} +pub fn bar() { unsafe { foo() } } -pub fn bar() { - unsafe { foo() } +extern { + #[ffi_returns_twice] pub fn foo(); } +// CHECK: declare void @foo(){{.*}}#1{{.*}} +// CHECK: attributes #1 = { {{.*}}returns_twice{{.*}} } -- cgit 1.4.1-3-g733a5 From fcc0b3e398265f173bc668c11b87ca98b74185bd Mon Sep 17 00:00:00 2001 From: gnzlbg Date: Sun, 10 Feb 2019 12:04:23 +0100 Subject: Fix attribute check --- src/test/codegen/ffi-returns-twice.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/test/codegen') diff --git a/src/test/codegen/ffi-returns-twice.rs b/src/test/codegen/ffi-returns-twice.rs index 396e8990d6f..4db328f1cdf 100644 --- a/src/test/codegen/ffi-returns-twice.rs +++ b/src/test/codegen/ffi-returns-twice.rs @@ -5,7 +5,8 @@ pub fn bar() { unsafe { foo() } } extern { + // CHECK-LABEL: declare void @foo() + // CHECK-SAME: [[ATTRS:#[0-9]+]] + // CHECK-DAG: attributes [[ATTRS]] = { {{.*}}returns_twice{{.*}} } #[ffi_returns_twice] pub fn foo(); } -// CHECK: declare void @foo(){{.*}}#1{{.*}} -// CHECK: attributes #1 = { {{.*}}returns_twice{{.*}} } -- cgit 1.4.1-3-g733a5