Fix bug in updating dominance frontier after loop
[oota-llvm.git] / test / Transforms / CorrelatedExprs / 2002-10-04-ForwardingBug.ll
1 ; Testcase distilled from bisort where we tried to perform branch target 
2 ; forwarding where it was not safe.
3 ; RUN: llvm-upgrade < %s | llvm-as | opt -cee
4 ;
5         %HANDLE = type { int, %HANDLE*, %HANDLE* }
6         %struct.node = type { int, %HANDLE*, %HANDLE* }
7 %.LC0 = internal global [11 x sbyte] c"%d @ 0x%x\0A\00"         ; <[11 x sbyte]*> [#uses=1]
8
9 implementation   ; Functions:
10
11 void %InOrder(%HANDLE* %h) {
12 bb0:            ; No predecessors!
13         br label %bb2
14
15 bb2:            ; preds = %bb3, %bb0
16         %reg113 = phi %HANDLE* [ %reg109, %bb3 ], [ %h, %bb0 ]          ; <%HANDLE*> [#uses=4]
17         %cond217 = seteq %HANDLE* %reg113, null         ; <bool> [#uses=1]
18         br bool %cond217, label %bb4, label %bb3
19
20 bb3:            ; preds = %bb2
21         %reg221 = getelementptr %HANDLE* %reg113, long 0, uint 1                ; <%HANDLE**> [#uses=1]
22         %reg108 = load %HANDLE** %reg221                ; <%HANDLE*> [#uses=1]
23         %reg226 = getelementptr %HANDLE* %reg113, long 0, uint 2                ; <%HANDLE**> [#uses=1]
24         %reg109 = load %HANDLE** %reg226                ; <%HANDLE*> [#uses=1]
25         call void %InOrder( %HANDLE* %reg108 )
26         %cast231 = getelementptr %HANDLE* %reg113, long 0, uint 0               ; <int*> [#uses=1]
27         %reg111 = load int* %cast231            ; <int> [#uses=1]
28         %reg233 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([11 x sbyte]* %.LC0, long 0, long 0), int %reg111, uint 0 )            ; <int> [#uses=0]
29         br label %bb2
30
31 bb4:            ; preds = %bb2
32         ret void
33 }
34
35 declare int %printf(sbyte*, ...)