[llvm] 69fae50 - [test] precommit another test for point-in-time deref semantics
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 22 19:11:25 PDT 2021
Author: Philip Reames
Date: 2021-03-22T19:11:19-07:00
New Revision: 69fae504bb9c008460e36419dfd2302e43a417ca
URL: https://github.com/llvm/llvm-project/commit/69fae504bb9c008460e36419dfd2302e43a417ca
DIFF: https://github.com/llvm/llvm-project/commit/69fae504bb9c008460e36419dfd2302e43a417ca.diff
LOG: [test] precommit another test for point-in-time deref semantics
Added:
llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll b/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
new file mode 100644
index 000000000000..bfa1f48797f2
--- /dev/null
+++ b/llvm/test/Analysis/ValueTracking/deref-abstract-gc.ll
@@ -0,0 +1,25 @@
+; RUN: opt -print-memderefs -analyze -S < %s -enable-new-pm=0 -use-dereferenceable-at-point-semantics=1 | FileCheck %s --check-prefixes=CHECK
+; RUN: opt -passes=print-memderefs -S < %s -disable-output -use-dereferenceable-at-point-semantics=1 2>&1 | FileCheck %s --check-prefixes=CHECK
+
+target datalayout = "e-i32:32:64"
+
+; For the abstract machine model (before RS4GC), gc managed objects
+; conceptually live forever. But there may be non-managed objects which are
+; freed.
+; CHECK-LABEL: 'abstract_model'
+; CHECK-NOT: %gc_ptr
+; CHECK-NOT: %other_ptr
+; FIXME: Can infer the gc pointer case
+define void @abstract_model(i32 addrspace(1)* dereferenceable(8) %gc_ptr,
+ i32* dereferenceable(8) %other_ptr)
+ gc "statepoint-example" {
+; CHECK: The following are dereferenceable:
+entry:
+ call void @mayfree()
+ load i32, i32 addrspace(1)* %gc_ptr
+ load i32, i32* %other_ptr
+ ret void
+}
+
+; Can free any object accessible in memory
+declare void @mayfree()
More information about the llvm-commits
mailing list