Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / X86 / 2009-02-03-AnalyzedTwice.ll
blobe75af13a600b8353dc468f5664a5b3cad2d9f858
1 ; RUN: llc < %s -march=x86
2 ; PR3411
4 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
5 target triple = "i386-pc-linux-gnu"
6 @g_3 = external global i32              ; <i32*> [#uses=1]
8 define void @bar(i64 %p_66) nounwind {
9 entry:
10         br i1 false, label %bb, label %bb1
12 bb:             ; preds = %entry
13         unreachable
15 bb1:            ; preds = %entry
16         %0 = load i32* @g_3, align 4            ; <i32> [#uses=2]
17         %1 = sext i32 %0 to i64         ; <i64> [#uses=1]
18         %2 = or i64 %1, %p_66           ; <i64> [#uses=1]
19         %3 = shl i64 %2, 0              ; <i64> [#uses=1]
20         %4 = and i64 %3, %p_66          ; <i64> [#uses=1]
21         %5 = icmp eq i64 %4, 1          ; <i1> [#uses=1]
22         %6 = trunc i64 %p_66 to i32             ; <i32> [#uses=2]
23         %7 = or i32 %0, %6              ; <i32> [#uses=2]
24         %8 = sub i32 %7, %6             ; <i32> [#uses=1]
25         %iftmp.0.0 = select i1 %5, i32 %8, i32 %7               ; <i32> [#uses=1]
26         %9 = tail call i32 @foo(i32 %iftmp.0.0) nounwind                ; <i32> [#uses=0]
27         ret void
30 declare i32 @foo(i32)