diff options
Diffstat (limited to 'test/Transforms/IndVarSimplify/widen-loop-comp.ll')
-rw-r--r-- | test/Transforms/IndVarSimplify/widen-loop-comp.ll | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/test/Transforms/IndVarSimplify/widen-loop-comp.ll b/test/Transforms/IndVarSimplify/widen-loop-comp.ll index 0930a0c..eb81ceb 100644 --- a/test/Transforms/IndVarSimplify/widen-loop-comp.ll +++ b/test/Transforms/IndVarSimplify/widen-loop-comp.ll @@ -1,6 +1,10 @@ ; RUN: opt < %s -indvars -S | FileCheck %s target triple = "aarch64--linux-gnu" +; Provide legal integer types. +target datalayout = "n8:16:32:64" + + ; Check the loop exit i32 compare instruction and operand are widened to i64 ; instead of truncating IV before its use in the i32 compare instruction. @@ -19,13 +23,13 @@ target triple = "aarch64--linux-gnu" define i32 @test1() { entry: store i32 -1, i32* @idx, align 4 - %0 = load i32* @e, align 4 + %0 = load i32, i32* @e, align 4 %cmp4 = icmp slt i32 %0, 0 br i1 %cmp4, label %for.end.loopexit, label %for.body.lr.ph for.body.lr.ph: - %1 = load i32** @ptr, align 8 - %2 = load i32* @e, align 4 + %1 = load i32*, i32** @ptr, align 8 + %2 = load i32, i32* @e, align 4 br label %for.body for.cond: @@ -36,8 +40,8 @@ for.cond: for.body: %i.05 = phi i32 [ 0, %for.body.lr.ph ], [ %inc, %for.cond ] %idxprom = sext i32 %i.05 to i64 - %arrayidx = getelementptr inbounds i32* %1, i64 %idxprom - %3 = load i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, i32* %1, i64 %idxprom + %3 = load i32, i32* %arrayidx, align 4 %tobool = icmp eq i32 %3, 0 br i1 %tobool, label %if.then, label %for.cond @@ -53,7 +57,7 @@ for.end.loopexit: br label %for.end for.end: - %4 = load i32* @idx, align 4 + %4 = load i32, i32* @idx, align 4 ret i32 %4 } @@ -81,11 +85,11 @@ for.inc13.us: for.body4.us: %storemerge14.us = phi i32 [ 0, %for.body4.lr.ph.us ], [ %inc.us, %for.body4.us ] %idxprom.us = sext i32 %storemerge14.us to i64 - %arrayidx6.us = getelementptr inbounds [8 x i8]* %a, i64 %idxprom5.us, i64 %idxprom.us - %0 = load i8* %arrayidx6.us, align 1 + %arrayidx6.us = getelementptr inbounds [8 x i8], [8 x i8]* %a, i64 %idxprom5.us, i64 %idxprom.us + %0 = load i8, i8* %arrayidx6.us, align 1 %idxprom7.us = zext i8 %0 to i64 - %arrayidx8.us = getelementptr inbounds i8* %b, i64 %idxprom7.us - %1 = load i8* %arrayidx8.us, align 1 + %arrayidx8.us = getelementptr inbounds i8, i8* %b, i64 %idxprom7.us + %1 = load i8, i8* %arrayidx8.us, align 1 store i8 %1, i8* %arrayidx6.us, align 1 %inc.us = add nsw i32 %storemerge14.us, 1 %cmp2.us = icmp slt i32 %inc.us, %conv @@ -126,8 +130,8 @@ for.cond: for.body: %idxprom = sext i32 %i.0 to i64 - %arrayidx = getelementptr inbounds i32* %a, i64 %idxprom - %0 = load i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, i32* %a, i64 %idxprom + %0 = load i32, i32* %arrayidx, align 4 %add = add nsw i32 %sum.0, %0 %inc = add nsw i32 %i.0, 1 br label %for.cond @@ -180,8 +184,8 @@ for.cond: for.body: %idxprom = zext i32 %i.0 to i64 - %arrayidx = getelementptr inbounds i32* %a, i64 %idxprom - %0 = load i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, i32* %a, i64 %idxprom + %0 = load i32, i32* %arrayidx, align 4 %add = add nsw i32 %sum.0, %0 %inc = add nsw i32 %i.0, 1 br label %for.cond |