1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-02 00:42:52 +01:00
llvm-mirror/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-2.ll
Dan Gohman 2884c5153c Revert 72493 and replace it with a more conservative fix, for now: don't
rewrite the comparison if there is any implicit extension or truncation
on the induction variable. I'm planning for IVUsers to eventually take
over some of the work of this code, and for it to be generalized.

llvm-svn: 72496
2009-05-27 21:10:47 +00:00

59 lines
2.2 KiB
LLVM

; RUN: llvm-as < %s | llc
; PR4222
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "x86_64-pc-linux-gnu"
module asm ".ident\09\22$FreeBSD: head/sys/amd64/amd64/minidump_machdep.c 184499 2008-10-31 10:11:35Z kib $\22"
%struct.dumperinfo = type <{ i32 (i8*, i8*, i64, i64, i64)*, i8*, i32, i32, i64, i64 }>
define void @minidumpsys(%struct.dumperinfo* %di) nounwind {
entry:
br label %if.end
if.end: ; preds = %if.end52, %entry
br label %for.cond.i.preheader
for.cond.i.preheader: ; preds = %if.end52, %if.end
%indvar688 = phi i64 [ 0, %if.end ], [ %indvar.next689, %if.end52 ] ; <i64> [#uses=3]
%tmp690 = shl i64 %indvar688, 12 ; <i64> [#uses=1]
%pa.0642 = add i64 %tmp690, 0 ; <i64> [#uses=1]
%indvar688703 = trunc i64 %indvar688 to i32 ; <i32> [#uses=1]
%tmp692693 = add i32 %indvar688703, 1 ; <i32> [#uses=1]
%phitmp = sext i32 %tmp692693 to i64 ; <i64> [#uses=1]
br i1 false, label %if.end52, label %land.lhs.true.i
land.lhs.true.i: ; preds = %for.cond.i.preheader
%shr2.i = lshr i64 %pa.0642, 18 ; <i64> [#uses=0]
unreachable
if.end52: ; preds = %for.cond.i.preheader
%phitmp654 = icmp ult i64 %phitmp, 512 ; <i1> [#uses=1]
%indvar.next689 = add i64 %indvar688, 1 ; <i64> [#uses=1]
br i1 %phitmp654, label %for.cond.i.preheader, label %if.end
}
define void @promote(%struct.dumperinfo* %di) nounwind {
entry:
br label %if.end
if.end: ; preds = %if.end52, %entry
br label %for.cond.i.preheader
for.cond.i.preheader: ; preds = %if.end52, %if.end
%indvar688 = phi i32 [ 0, %if.end ], [ %indvar.next689, %if.end52 ] ; <i64> [#uses=3]
%tmp690 = shl i32 %indvar688, 12 ; <i64> [#uses=1]
%pa.0642 = add i32 %tmp690, 0 ; <i64> [#uses=1]
%tmp692693 = add i32 %indvar688, 1 ; <i32> [#uses=1]
%phitmp = sext i32 %tmp692693 to i64 ; <i64> [#uses=1]
br i1 false, label %if.end52, label %land.lhs.true.i
land.lhs.true.i: ; preds = %for.cond.i.preheader
%shr2.i = lshr i32 %pa.0642, 18 ; <i64> [#uses=0]
unreachable
if.end52: ; preds = %for.cond.i.preheader
%phitmp654 = icmp ult i64 %phitmp, 512 ; <i1> [#uses=1]
%indvar.next689 = add i32 %indvar688, 1 ; <i64> [#uses=1]
br i1 %phitmp654, label %for.cond.i.preheader, label %if.end
}