fix a globalopt crash on two Adobe-C++ testcases that the recent
[llvm.git] / test / Transforms / GVN / condprop.ll
blobbe6c3498fe409f49a650062b085101a77c9c609e
1 ; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
3 @a = external global i32                ; <i32*> [#uses=7]
5 ; CHECK: @foo
6 define i32 @foo() nounwind {
7 entry:
8         %0 = load i32* @a, align 4
9         %1 = icmp eq i32 %0, 4
10         br i1 %1, label %bb, label %bb1
12 bb:             ; preds = %entry
13         br label %bb8
15 bb1:            ; preds = %entry
16         %2 = load i32* @a, align 4
17         %3 = icmp eq i32 %2, 5
18         br i1 %3, label %bb2, label %bb3
20 bb2:            ; preds = %bb1
21         br label %bb8
23 bb3:            ; preds = %bb1
24         %4 = load i32* @a, align 4
25         %5 = icmp eq i32 %4, 4
26 ; CHECK: br i1 false, label %bb4, label %bb5
27         br i1 %5, label %bb4, label %bb5
29 bb4:            ; preds = %bb3
30         %6 = load i32* @a, align 4
31         %7 = add i32 %6, 5
32         br label %bb8
34 bb5:            ; preds = %bb3
35         %8 = load i32* @a, align 4
36         %9 = icmp eq i32 %8, 5
37 ; CHECK: br i1 false, label %bb6, label %bb7
38         br i1 %9, label %bb6, label %bb7
40 bb6:            ; preds = %bb5
41         %10 = load i32* @a, align 4
42         %11 = add i32 %10, 4
43         br label %bb8
45 bb7:            ; preds = %bb5
46         %12 = load i32* @a, align 4
47         br label %bb8
49 bb8:            ; preds = %bb7, %bb6, %bb4, %bb2, %bb
50         %.0 = phi i32 [ %12, %bb7 ], [ %11, %bb6 ], [ %7, %bb4 ], [ 4, %bb2 ], [ 5, %bb ]
51         br label %return
53 return:         ; preds = %bb8
54         ret i32 %.0