[llvm] r365636 - [InferFunctionAttrs] add/adjust tests for dereferenceable; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 10 07:41:47 PDT 2019


Author: spatel
Date: Wed Jul 10 07:41:47 2019
New Revision: 365636

URL: http://llvm.org/viewvc/llvm-project?rev=365636&view=rev
Log:
[InferFunctionAttrs] add/adjust tests for dereferenceable; NFC

Based on review comments for D64258.

Modified:
    llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.ll

Modified: llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.ll?rev=365636&r1=365635&r2=365636&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.ll (original)
+++ llvm/trunk/test/Transforms/InferFunctionAttrs/dereferenceable.ll Wed Jul 10 07:41:47 2019
@@ -107,10 +107,11 @@ exit:
   ret void
 }
 
-; The 1st load can trap, so the 2nd and 3rd may never execute.
+; The volatile load can't be used to prove a non-volatile access is allowed.
+; The 2nd and 3rd loads may never execute.
 
-define void @volatile_can_trap(i16* %ptr) {
-; CHECK-LABEL: @volatile_can_trap(i16* %ptr)
+define void @volatile_is_not_dereferenceable(i16* %ptr) {
+; CHECK-LABEL: @volatile_is_not_dereferenceable(i16* %ptr)
   %arrayidx0 = getelementptr i16, i16* %ptr, i64 0
   %arrayidx1 = getelementptr i16, i16* %ptr, i64 1
   %arrayidx2 = getelementptr i16, i16* %ptr, i64 2
@@ -120,6 +121,20 @@ define void @volatile_can_trap(i16* %ptr
   ret void
 }
 
+declare void @may_not_return()
+
+define void @not_guaranteed_to_transfer_execution(i16* %ptr) {
+; CHECK-LABEL: @not_guaranteed_to_transfer_execution(i16* %ptr)
+  %arrayidx0 = getelementptr i16, i16* %ptr, i64 0
+  %arrayidx1 = getelementptr i16, i16* %ptr, i64 1
+  %arrayidx2 = getelementptr i16, i16* %ptr, i64 2
+  %t0 = load i16, i16* %arrayidx0
+  call void @may_not_return()
+  %t1 = load i16, i16* %arrayidx1
+  %t2 = load i16, i16* %arrayidx2
+  ret void
+}
+
 ; We must have consecutive accesses.
 
 define void @variable_gep_index(i8* %unused, i8* %ptr, i64 %variable_index) {
@@ -241,3 +256,23 @@ define void @negative_offset(i32* %arg)
   %t1 = load float, float* %arrayidx1
   ret void
 }
+
+define void @stores(i32* %arg) {
+; CHECK-LABEL: @stores(i32* %arg)
+  %ptr = bitcast i32* %arg to float*
+  %arrayidx0 = getelementptr float, float* %ptr, i64 0
+  %arrayidx1 = getelementptr float, float* %ptr, i64 1
+  store float 1.0, float* %arrayidx0
+  store float 2.0, float* %arrayidx1
+  ret void
+}
+
+define void @load_store(i32* %arg) {
+; CHECK-LABEL: @load_store(i32* %arg)
+  %ptr = bitcast i32* %arg to float*
+  %arrayidx0 = getelementptr float, float* %ptr, i64 0
+  %arrayidx1 = getelementptr float, float* %ptr, i64 1
+  %t1 = load float, float* %arrayidx0
+  store float 2.0, float* %arrayidx1
+  ret void
+}




More information about the llvm-commits mailing list