Mercurial > hg > CbC > CbC_llvm
comparison llvm/test/Transforms/IndVarSimplify/pr28705.ll @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | c4bab56944e8 |
children |
comparison
equal
deleted
inserted
replaced
237:c80f45b162ad | 252:1f2b6ac9f198 |
---|---|
4 | 4 |
5 ; Check IndVarSimplify doesn't replace external use of the induction var | 5 ; Check IndVarSimplify doesn't replace external use of the induction var |
6 ; "%inc.i.i" with "%.sroa.speculated + 1" because it is not profitable. | 6 ; "%inc.i.i" with "%.sroa.speculated + 1" because it is not profitable. |
7 ; | 7 ; |
8 ; | 8 ; |
9 define void @foo(i32 %sub.ptr.div.i, i8* %ref.i1174) local_unnamed_addr { | 9 define void @foo(i32 %sub.ptr.div.i, ptr %ref.i1174) local_unnamed_addr { |
10 ; CHECK-LABEL: @foo( | 10 ; CHECK-LABEL: @foo( |
11 ; CHECK-NEXT: entry: | 11 ; CHECK-NEXT: entry: |
12 ; CHECK-NEXT: [[CMP_I1137:%.*]] = icmp ugt i32 [[SUB_PTR_DIV_I:%.*]], 3 | 12 ; CHECK-NEXT: [[CMP_I1137:%.*]] = icmp ugt i32 [[SUB_PTR_DIV_I:%.*]], 3 |
13 ; CHECK-NEXT: [[DOTSROA_SPECULATED:%.*]] = select i1 [[CMP_I1137]], i32 3, i32 [[SUB_PTR_DIV_I]] | 13 ; CHECK-NEXT: [[DOTSROA_SPECULATED:%.*]] = select i1 [[CMP_I1137]], i32 3, i32 [[SUB_PTR_DIV_I]] |
14 ; CHECK-NEXT: [[CMP6483126:%.*]] = icmp eq i32 [[DOTSROA_SPECULATED]], 0 | 14 ; CHECK-NEXT: [[CMP6483126:%.*]] = icmp eq i32 [[DOTSROA_SPECULATED]], 0 |
22 ; CHECK-NEXT: [[DB_SROA_9_0_LCSSA:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ [[INC_I_I_LCSSA]], [[LOOPEXIT:%.*]] ] | 22 ; CHECK-NEXT: [[DB_SROA_9_0_LCSSA:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ [[INC_I_I_LCSSA]], [[LOOPEXIT:%.*]] ] |
23 ; CHECK-NEXT: br label [[END:%.*]] | 23 ; CHECK-NEXT: br label [[END:%.*]] |
24 ; CHECK: for.body650: | 24 ; CHECK: for.body650: |
25 ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[FOR_BODY650_LR_PH]] ], [ [[INC655:%.*]], [[FOR_BODY650]] ] | 25 ; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[FOR_BODY650_LR_PH]] ], [ [[INC655:%.*]], [[FOR_BODY650]] ] |
26 ; CHECK-NEXT: [[IV2:%.*]] = phi i32 [ 1, [[FOR_BODY650_LR_PH]] ], [ [[INC_I_I]], [[FOR_BODY650]] ] | 26 ; CHECK-NEXT: [[IV2:%.*]] = phi i32 [ 1, [[FOR_BODY650_LR_PH]] ], [ [[INC_I_I]], [[FOR_BODY650]] ] |
27 ; CHECK-NEXT: [[ARRAYIDX_I_I1105:%.*]] = getelementptr inbounds i8, i8* [[REF_I1174:%.*]], i32 [[IV2]] | 27 ; CHECK-NEXT: [[ARRAYIDX_I_I1105:%.*]] = getelementptr inbounds i8, ptr [[REF_I1174:%.*]], i32 [[IV2]] |
28 ; CHECK-NEXT: store i8 7, i8* [[ARRAYIDX_I_I1105]], align 1 | 28 ; CHECK-NEXT: store i8 7, ptr [[ARRAYIDX_I_I1105]], align 1 |
29 ; CHECK-NEXT: [[INC_I_I]] = add nuw nsw i32 [[IV2]], 1 | 29 ; CHECK-NEXT: [[INC_I_I]] = add nuw nsw i32 [[IV2]], 1 |
30 ; CHECK-NEXT: [[INC655]] = add nuw nsw i32 [[IV]], 1 | 30 ; CHECK-NEXT: [[INC655]] = add nuw nsw i32 [[IV]], 1 |
31 ; CHECK-NEXT: [[CMP648:%.*]] = icmp eq i32 [[INC655]], [[DOTSROA_SPECULATED]] | 31 ; CHECK-NEXT: [[CMP648:%.*]] = icmp eq i32 [[INC655]], [[DOTSROA_SPECULATED]] |
32 ; CHECK-NEXT: br i1 [[CMP648]], label [[LOOPEXIT]], label [[FOR_BODY650]] | 32 ; CHECK-NEXT: br i1 [[CMP648]], label [[LOOPEXIT]], label [[FOR_BODY650]] |
33 ; CHECK: end: | 33 ; CHECK: end: |
51 br label %end | 51 br label %end |
52 | 52 |
53 for.body650: | 53 for.body650: |
54 %iv = phi i32 [ 0, %for.body650.lr.ph ], [ %inc655, %for.body650 ] | 54 %iv = phi i32 [ 0, %for.body650.lr.ph ], [ %inc655, %for.body650 ] |
55 %iv2 = phi i32 [ 1, %for.body650.lr.ph ], [ %inc.i.i, %for.body650 ] | 55 %iv2 = phi i32 [ 1, %for.body650.lr.ph ], [ %inc.i.i, %for.body650 ] |
56 %arrayidx.i.i1105 = getelementptr inbounds i8, i8* %ref.i1174, i32 %iv2 | 56 %arrayidx.i.i1105 = getelementptr inbounds i8, ptr %ref.i1174, i32 %iv2 |
57 store i8 7, i8* %arrayidx.i.i1105, align 1 | 57 store i8 7, ptr %arrayidx.i.i1105, align 1 |
58 %inc.i.i = add i32 %iv2, 1 | 58 %inc.i.i = add i32 %iv2, 1 |
59 %inc655 = add i32 %iv, 1 | 59 %inc655 = add i32 %iv, 1 |
60 %cmp648 = icmp eq i32 %inc655, %.sroa.speculated | 60 %cmp648 = icmp eq i32 %inc655, %.sroa.speculated |
61 br i1 %cmp648, label %loopexit, label %for.body650 | 61 br i1 %cmp648, label %loopexit, label %for.body650 |
62 | 62 |