diff options
| author | Johannes Doerfert <johannes@jdoerfert.de> | 2019-10-31 01:04:35 -0500 |
|---|---|---|
| committer | Johannes Doerfert <johannes@jdoerfert.de> | 2019-10-31 01:04:35 -0500 |
| commit | 48b4ab4835468154118166d9c4c7bda5f5dfbf8c (patch) | |
| tree | 0a967450fc71436c83db8566e526b4149b50cafd | |
| parent | dac2d403a2de6c1be6b204e17deccb54728fc8ab (diff) | |
| download | bcm5719-llvm-48b4ab4835468154118166d9c4c7bda5f5dfbf8c.tar.gz bcm5719-llvm-48b4ab4835468154118166d9c4c7bda5f5dfbf8c.zip | |
[Attributor][FIX] Unbreak buildbot through test correction
| -rw-r--r-- | llvm/test/Transforms/FunctionAttrs/nonnull.ll | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/llvm/test/Transforms/FunctionAttrs/nonnull.ll b/llvm/test/Transforms/FunctionAttrs/nonnull.ll index 07c40e7d8ef..fb62e4aafac 100644 --- a/llvm/test/Transforms/FunctionAttrs/nonnull.ll +++ b/llvm/test/Transforms/FunctionAttrs/nonnull.ll @@ -79,9 +79,10 @@ define i8* @test5(i1 %c) { } ; Local analysis, but going through a self recursive phi -define i8* @test6() { +; ATTRIBUTOR: Function Attrs: noreturn +; ATTRIBUTOR: define noalias nonnull align 536870912 dereferenceable(4294967295) i8* @test6a() +define i8* @test6a() { entry: -; BOTH: define nonnull i8* @test6 %ret = call i8* @ret_nonnull() br label %loop loop: @@ -91,6 +92,18 @@ exit: ret i8* %phi } +; ATTRIBUTOR: define nonnull i8* @test6b(i1 %c) +define i8* @test6b(i1 %c) { +entry: + %ret = call i8* @ret_nonnull() + br label %loop +loop: + %phi = phi i8* [%ret, %entry], [%phi, %loop] + br i1 %c, label %loop, label %exit +exit: + ret i8* %phi +} + ; BOTH: define i8* @test7 define i8* @test7(i8* %a) { %b = getelementptr inbounds i8, i8* %a, i64 0 @@ -590,7 +603,7 @@ declare void @h(i32*) willreturn nounwind declare i32 @g(i32*) willreturn nounwind define i32 @nonnull_exec_ctx_1(i32* %a, i32 %b) { ; FNATTR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_1 -; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #3 +; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; FNATTR-NEXT: en: ; FNATTR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; FNATTR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -605,7 +618,7 @@ define i32 @nonnull_exec_ctx_1(i32* %a, i32 %b) { ; FNATTR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]] ; ; ATTRIBUTOR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_1 -; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #5 +; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; ATTRIBUTOR-NEXT: en: ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -637,7 +650,7 @@ hd: define i32 @nonnull_exec_ctx_1b(i32* %a, i32 %b) { ; FNATTR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_1b -; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #3 +; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; FNATTR-NEXT: en: ; FNATTR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; FNATTR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -654,7 +667,7 @@ define i32 @nonnull_exec_ctx_1b(i32* %a, i32 %b) { ; FNATTR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]] ; ; ATTRIBUTOR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_1b -; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #5 +; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; ATTRIBUTOR-NEXT: en: ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -691,7 +704,7 @@ hd2: define i32 @nonnull_exec_ctx_2(i32* %a, i32 %b) willreturn nounwind { ; FNATTR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_2 -; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #2 +; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; FNATTR-NEXT: en: ; FNATTR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; FNATTR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -706,7 +719,7 @@ define i32 @nonnull_exec_ctx_2(i32* %a, i32 %b) willreturn nounwind { ; FNATTR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]] ; ; ATTRIBUTOR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_2 -; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #3 +; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; ATTRIBUTOR-NEXT: en: ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -738,7 +751,7 @@ hd: define i32 @nonnull_exec_ctx_2b(i32* %a, i32 %b) willreturn nounwind { ; FNATTR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_2b -; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #2 +; FNATTR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; FNATTR-NEXT: en: ; FNATTR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; FNATTR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] @@ -755,7 +768,7 @@ define i32 @nonnull_exec_ctx_2b(i32* %a, i32 %b) willreturn nounwind { ; FNATTR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]] ; ; ATTRIBUTOR-LABEL: define {{[^@]+}}@nonnull_exec_ctx_2b -; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) #3 +; ATTRIBUTOR-SAME: (i32* [[A:%.*]], i32 [[B:%.*]]) ; ATTRIBUTOR-NEXT: en: ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B:%.*]], 0 ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]] |

