diff options
author | Philip Reames <listmail@philipreames.com> | 2019-06-10 22:33:20 +0000 |
---|---|---|
committer | Philip Reames <listmail@philipreames.com> | 2019-06-10 22:33:20 +0000 |
commit | 1d322ccaacf3e20c119ffb074f2306375ef0ec80 (patch) | |
tree | 7d4e99c0632f59e927ec1c223b56b117de1e6816 /llvm/test/Transforms/IndVarSimplify | |
parent | 9df9cbafceb6a509f987822dd4cc2feda3955a9a (diff) | |
download | bcm5719-llvm-1d322ccaacf3e20c119ffb074f2306375ef0ec80.tar.gz bcm5719-llvm-1d322ccaacf3e20c119ffb074f2306375ef0ec80.zip |
[Tests] Split an LFTR dead-iv case
There are two interesting sub-cases here. 1) Switching IVs is legal, but only in pre-increment form. and 2) Switching IVs is legal, and so is post-increment form.
llvm-svn: 362993
Diffstat (limited to 'llvm/test/Transforms/IndVarSimplify')
-rw-r--r-- | llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll b/llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll index e4b6a866666..42e71ee7f17 100644 --- a/llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll +++ b/llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll @@ -102,8 +102,39 @@ exit: ret void } -define void @dom_store(i8* %a) #0 { -; CHECK-LABEL: @dom_store( +define void @dom_store_preinc(i8* %a) #0 { +; CHECK-LABEL: @dom_store_preinc( +; CHECK-NEXT: entry: +; CHECK-NEXT: br label [[LOOP:%.*]] +; CHECK: loop: +; CHECK-NEXT: [[I_0:%.*]] = phi i8 [ 0, [[ENTRY:%.*]] ], [ [[TMP4:%.*]], [[LOOP]] ] +; CHECK-NEXT: [[P_0:%.*]] = phi i8* [ [[A:%.*]], [[ENTRY]] ], [ [[TMP3:%.*]], [[LOOP]] ] +; CHECK-NEXT: store volatile i8 0, i8* [[P_0]] +; CHECK-NEXT: [[TMP3]] = getelementptr inbounds i8, i8* [[P_0]], i64 1 +; CHECK-NEXT: [[TMP4]] = add nuw i8 [[I_0]], 1 +; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i8 [[TMP4]], -10 +; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP]], label [[EXIT:%.*]] +; CHECK: exit: +; CHECK-NEXT: ret void +; +entry: + br label %loop + +loop: + %i.0 = phi i8 [ 0, %entry ], [ %tmp4, %loop ] + %p.0 = phi i8* [ %a, %entry ], [ %tmp3, %loop ] + store volatile i8 0, i8* %p.0 + %tmp3 = getelementptr inbounds i8, i8* %p.0, i64 1 + %tmp4 = add i8 %i.0, 1 + %tmp5 = icmp ult i8 %tmp4, -10 + br i1 %tmp5, label %loop, label %exit + +exit: + ret void +} + +define void @dom_store_postinc(i8* %a) #0 { +; CHECK-LABEL: @dom_store_postinc( ; CHECK-NEXT: entry: ; CHECK-NEXT: br label [[LOOP:%.*]] ; CHECK: loop: |