[FunctionAttrs] Add tests for inaccessiblememonly (NFC)
authorNikita Popov <npopov@redhat.com>
Fri, 23 Sep 2022 12:45:08 +0000 (14:45 +0200)
committerNikita Popov <npopov@redhat.com>
Fri, 23 Sep 2022 12:45:36 +0000 (14:45 +0200)
llvm/test/Transforms/FunctionAttrs/argmemonly.ll

index 000f374..204c609 100644 (file)
@@ -107,6 +107,7 @@ entry:
 declare i32 @fn_argmemonly(i32*) argmemonly
 
 define i32 @test_call_argmemonly(i32* %ptr) {
+; CHECK: Function Attrs: argmemonly
 ; CHECK-LABEL: @test_call_argmemonly(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    [[C:%.*]] = call i32 @fn_argmemonly(i32* [[PTR:%.*]])
@@ -190,3 +191,47 @@ entry:
   %l.2 = load i32, i32* %a
   ret i32 %l.2
 }
+
+declare void @fn_inaccessiblememonly() inaccessiblememonly
+
+define void @test_inaccessiblememonly() {
+; CHECK-LABEL: @test_inaccessiblememonly(
+; CHECK-NEXT:    call void @fn_inaccessiblememonly()
+; CHECK-NEXT:    ret void
+;
+  call void @fn_inaccessiblememonly()
+  ret void
+}
+
+define void @test_inaccessiblememonly_readonly() {
+; CHECK: Function Attrs: nofree readonly
+; CHECK-LABEL: @test_inaccessiblememonly_readonly(
+; CHECK-NEXT:    call void @fn_inaccessiblememonly() #[[ATTR13:[0-9]+]]
+; CHECK-NEXT:    ret void
+;
+  call void @fn_inaccessiblememonly() readonly
+  ret void
+}
+
+define void @test_inaccessibleorargmemonly_readonly(i32* %arg) {
+; CHECK: Function Attrs: nofree readonly
+; CHECK-LABEL: @test_inaccessibleorargmemonly_readonly(
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, i32* [[ARG:%.*]], align 4
+; CHECK-NEXT:    call void @fn_inaccessiblememonly() #[[ATTR13]]
+; CHECK-NEXT:    ret void
+;
+  load i32, i32* %arg
+  call void @fn_inaccessiblememonly() readonly
+  ret void
+}
+
+define void @test_inaccessibleorargmemonly_readwrite(i32* %arg) {
+; CHECK-LABEL: @test_inaccessibleorargmemonly_readwrite(
+; CHECK-NEXT:    store i32 0, i32* [[ARG:%.*]], align 4
+; CHECK-NEXT:    call void @fn_inaccessiblememonly() #[[ATTR13]]
+; CHECK-NEXT:    ret void
+;
+  store i32 0, i32* %arg
+  call void @fn_inaccessiblememonly() readonly
+  ret void
+}