diff options
author | Max Kazantsev <max.kazantsev@azul.com> | 2018-06-13 02:25:32 +0000 |
---|---|---|
committer | Max Kazantsev <max.kazantsev@azul.com> | 2018-06-13 02:25:32 +0000 |
commit | 0ed79620c6d2ff008a483d62f51b21e69f5bfac6 (patch) | |
tree | 9fcfa1fc38b810aa083003a93c02883ca5d975f5 /llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll | |
parent | 8472ec9663a5131b04abd01bff1fcd778c9b19c8 (diff) | |
download | bcm5719-llvm-0ed79620c6d2ff008a483d62f51b21e69f5bfac6.tar.gz bcm5719-llvm-0ed79620c6d2ff008a483d62f51b21e69f5bfac6.zip |
[SimplifyIndVars] Ignore dead users
IndVarSimplify sometimes makes transforms basing on users that are trivially dead. In particular,
if DCE wasn't run before it, there may be a dead `sext/zext` in loop that will trigger widening
transforms, however it makes no sense to do it.
This patch teaches IndVarsSimplify ignore the mist trivial cases of that.
Differential Revision: https://reviews.llvm.org/D47974
Reviewed By: sanjoy
llvm-svn: 334567
Diffstat (limited to 'llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll')
-rw-r--r-- | llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll b/llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll index b4e1fdef488..dd09f162d79 100644 --- a/llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll +++ b/llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll @@ -6,6 +6,8 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; Perform LFTR using the original pointer-type IV. +declare void @use(double %x) + ; for(char* p = base; p < base + n; ++p) { ; *p = p-base; ; } @@ -102,9 +104,11 @@ loop: %diagidxw = sext i32 %diagidx to i64 %matrixp = getelementptr inbounds [0 x double], [0 x double]* %matrix, i32 0, i64 %diagidxw %v1 = load double, double* %matrixp + call void @use(double %v1) %iw = sext i32 %i to i64 %vectorp = getelementptr inbounds [0 x double], [0 x double]* %vector, i32 0, i64 %iw %v2 = load double, double* %vectorp + call void @use(double %v2) %row.inc = add nsw i32 %rowidx, %ilead %i.inc = add nsw i32 %i, 1 %cmp196 = icmp slt i32 %i.inc, %irow @@ -125,7 +129,6 @@ entry: ; CHECK-NOT: add ; CHECK: loop: ; CHECK: phi i64 -; CHECK: phi i64 ; CHECK-NOT: phi ; CHECK: icmp slt ; CHECK: br i1 |