diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-13 17:15:42 +0000 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-13 17:15:42 +0000 |
| commit | 2a4f26b4c28aaf9307e690b2f743ffcde5183b9e (patch) | |
| tree | cf7dbc2bff0e1476b84db56aa51b188c82324dad /llvm/test/Transforms | |
| parent | dde10cd7a968e57598726347b323348eceffeb05 (diff) | |
| download | bcm5719-llvm-2a4f26b4c28aaf9307e690b2f743ffcde5183b9e.tar.gz bcm5719-llvm-2a4f26b4c28aaf9307e690b2f743ffcde5183b9e.zip | |
[ValueTracking] Improve reverse assumption inference
Use isGuaranteedToTransferExecutionToSuccessor() instead of
isSafeToSpeculativelyExecute() when seeing whether we can propagate
the information in an assume backwards in isValidAssumeForContext().
The latter is more general - it also allows arbitrary loads/stores -
and is also the condition we want: if our assume is guaranteed to
execute, its condition not holding would be UB.
Original patch by arielb1.
Differential Revision: https://reviews.llvm.org/D37215
llvm-svn: 368723
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/assume_inevitable.ll | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InstCombine/assume_inevitable.ll b/llvm/test/Transforms/InstCombine/assume_inevitable.ll index a063775b057..d0489777415 100644 --- a/llvm/test/Transforms/InstCombine/assume_inevitable.ll +++ b/llvm/test/Transforms/InstCombine/assume_inevitable.ll @@ -8,10 +8,10 @@ define i32 @assume_inevitable(i32* %a, i32* %b, i8* %c) { ; CHECK-LABEL: @assume_inevitable( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[M:%.*]] = alloca i64, align 8 -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[A:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[A:%.*]], align 32 ; CHECK-NEXT: [[LOADRES:%.*]] = load i32, i32* [[B:%.*]], align 4 ; CHECK-NEXT: [[LOADRES2:%.*]] = call i32 @llvm.annotation.i32(i32 [[LOADRES]], i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str1, i64 0, i64 0), i32 2) -; CHECK-NEXT: store i32 [[LOADRES2]], i32* [[A]], align 4 +; CHECK-NEXT: store i32 [[LOADRES2]], i32* [[A]], align 32 ; CHECK-NEXT: [[DUMMY_EQ:%.*]] = icmp ugt i32 [[LOADRES]], 42 ; CHECK-NEXT: tail call void @llvm.assume(i1 [[DUMMY_EQ]]) ; CHECK-NEXT: [[M_I8:%.*]] = bitcast i64* [[M]] to i8* |

