summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2018-06-13 02:25:32 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2018-06-13 02:25:32 +0000
commit0ed79620c6d2ff008a483d62f51b21e69f5bfac6 (patch)
tree9fcfa1fc38b810aa083003a93c02883ca5d975f5 /llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll
parent8472ec9663a5131b04abd01bff1fcd778c9b19c8 (diff)
downloadbcm5719-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.ll5
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
OpenPOWER on IntegriCloud