From d01653f827cc962734f464be9502eb16cd907a44 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Fri, 2 Apr 2021 08:56:49 -0700 Subject: [PATCH] [rs4gc] add tests for existing code stripping attributes from function signatures --- .../strip-invalid-attributes.ll | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 llvm/test/Transforms/RewriteStatepointsForGC/strip-invalid-attributes.ll diff --git a/llvm/test/Transforms/RewriteStatepointsForGC/strip-invalid-attributes.ll b/llvm/test/Transforms/RewriteStatepointsForGC/strip-invalid-attributes.ll new file mode 100644 index 0000000..bc3d970 --- /dev/null +++ b/llvm/test/Transforms/RewriteStatepointsForGC/strip-invalid-attributes.ll @@ -0,0 +1,45 @@ +; RUN: opt -S -rewrite-statepoints-for-gc < %s | FileCheck %s +; RUN: opt -S -passes=rewrite-statepoints-for-gc < %s | FileCheck %s + + +; Ensure we're stipping attributes from the function signatures which are invalid +; after inserting safepoints with explicit memory semantics + +declare void @f() + +define i8 addrspace(1)* @deref_arg(i8 addrspace(1)* dereferenceable(16) %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @deref_arg(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + +define dereferenceable(16) i8 addrspace(1)* @deref_ret(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @deref_ret(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + +define i8 addrspace(1)* @deref_or_null_arg(i8 addrspace(1)* dereferenceable_or_null(16) %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @deref_or_null_arg(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + +define dereferenceable_or_null(16) i8 addrspace(1)* @deref_or_null_ret(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @deref_or_null_ret(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + +define i8 addrspace(1)* @noalias_arg(i8 addrspace(1)* noalias %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @noalias_arg(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + +define noalias i8 addrspace(1)* @noalias_ret(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK: define i8 addrspace(1)* @noalias_ret(i8 addrspace(1)* %arg) + call void @f() + ret i8 addrspace(1)* %arg +} + -- 2.7.4