Dan Gohman | 3c7d308 | 2009-09-11 18:01:28 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -simplifycfg -disable-output |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 2 | ; PR584 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 3 | @g_38098584 = external global i32 ; <i32*> [#uses=1] |
| 4 | @g_60187400 = external global i32 ; <i32*> [#uses=1] |
| 5 | @g_59182229 = external global i32 ; <i32*> [#uses=2] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 6 | |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 7 | define i32 @_Z13func_26556482h(i8 %l_88173906) { |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 8 | entry: |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 9 | %tmp.1 = bitcast i8 %l_88173906 to i8 ; <i8> [#uses=2] |
| 10 | %tmp.3 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] |
| 11 | br i1 %tmp.3, label %else.0, label %then.0 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 12 | then.0: ; preds = %entry |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 13 | %tmp.5 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] |
| 14 | br i1 %tmp.5, label %else.1, label %then.1 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 15 | then.1: ; preds = %then.0 |
| 16 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 17 | else.1: ; preds = %then.0 |
| 18 | br label %loopentry.0 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 19 | loopentry.0: ; preds = %no_exit.0, %else.1 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 20 | %i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <i32> [#uses=2] |
| 21 | %tmp.9 = icmp sgt i32 %i.0.1, 99 ; <i1> [#uses=1] |
| 22 | br i1 %tmp.9, label %endif.0, label %no_exit.0 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 23 | no_exit.0: ; preds = %loopentry.0 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 24 | %inc.0 = add i32 %i.0.1, 1 ; <i32> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 25 | br label %loopentry.0 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 26 | else.0: ; preds = %entry |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 27 | %tmp.12 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 28 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 29 | endif.0: ; preds = %loopentry.0 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 30 | %tmp.14 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] |
| 31 | %tmp.16 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] |
| 32 | %tmp.17 = icmp sgt i32 %tmp.14, %tmp.16 ; <i1> [#uses=1] |
| 33 | %tmp.19 = load i32* @g_59182229 ; <i32> [#uses=2] |
| 34 | br i1 %tmp.17, label %cond_true, label %cond_false |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 35 | cond_true: ; preds = %endif.0 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 36 | %tmp.20 = icmp ne i32 %tmp.19, 1 ; <i1> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 37 | br label %cond_continue |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 38 | cond_false: ; preds = %endif.0 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 39 | %tmp.22 = icmp ne i32 %tmp.19, 0 ; <i1> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 40 | br label %cond_continue |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 41 | cond_continue: ; preds = %cond_false, %cond_true |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 42 | %mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <i1> [#uses=1] |
| 43 | br i1 %mem_tmp.0, label %then.2, label %else.2 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 44 | then.2: ; preds = %cond_continue |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 45 | %tmp.25 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 46 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 47 | else.2: ; preds = %cond_continue |
| 48 | br label %loopentry.1 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 49 | loopentry.1: ; preds = %endif.3, %else.2 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 50 | %i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <i32> [#uses=2] |
| 51 | %i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <i32> [#uses=2] |
| 52 | %l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <i8> [#uses=3] |
| 53 | %tmp.29 = icmp sgt i32 %i.1.1, 99 ; <i1> [#uses=1] |
| 54 | br i1 %tmp.29, label %endif.2, label %no_exit.1 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 55 | no_exit.1: ; preds = %loopentry.1 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 56 | %tmp.30 = load i32* @g_38098584 ; <i32> [#uses=1] |
| 57 | %tmp.31 = icmp eq i32 %tmp.30, 0 ; <i1> [#uses=1] |
| 58 | br i1 %tmp.31, label %else.3, label %then.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 59 | then.3: ; preds = %no_exit.1 |
| 60 | br label %endif.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 61 | else.3: ; preds = %no_exit.1 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 62 | br i1 false, label %else.4, label %then.4 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 63 | then.4: ; preds = %else.3 |
| 64 | br label %endif.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 65 | else.4: ; preds = %else.3 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 66 | br i1 false, label %else.5, label %then.5 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 67 | then.5: ; preds = %else.4 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 68 | store i32 -1004318825, i32* @g_59182229 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 69 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 70 | else.5: ; preds = %else.4 |
| 71 | br label %loopentry.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 72 | loopentry.3: ; preds = %then.7, %else.5 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 73 | %i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <i32> [#uses=3] |
| 74 | %tmp.55 = icmp sgt i32 %i.3.3, 99 ; <i1> [#uses=1] |
| 75 | br i1 %tmp.55, label %endif.3, label %no_exit.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 76 | no_exit.3: ; preds = %loopentry.3 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 77 | %tmp.57 = icmp eq i8 %l_88173906_addr.1, 0 ; <i1> [#uses=1] |
| 78 | br i1 %tmp.57, label %else.7, label %then.7 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 79 | then.7: ; preds = %no_exit.3 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 80 | store i32 16239, i32* @g_60187400 |
| 81 | %inc.2 = add i32 %i.3.3, 1 ; <i32> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 82 | br label %loopentry.3 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 83 | else.7: ; preds = %no_exit.3 |
| 84 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 85 | endif.3: ; preds = %loopentry.3, %then.4, %then.3 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 86 | %i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <i32> [#uses=1] |
| 87 | %l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <i8> [#uses=1] |
| 88 | %inc.3 = add i32 %i.1.1, 1 ; <i32> [#uses=1] |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 89 | br label %loopentry.1 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 90 | endif.2: ; preds = %loopentry.1 |
| 91 | br label %return |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 92 | return: ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1 |
Tanya Lattner | 003eae5 | 2008-03-10 07:21:50 +0000 | [diff] [blame] | 93 | %result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <i32> [#uses=1] |
| 94 | ret i32 %result.0 |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 95 | } |