Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-as < %s | llc -march=x86 | grep 8388635 |
| 2 | ; RUN: llvm-as < %s | llc -march=x86-64 | grep 4294981120 |
| 3 | ; PR 1325 |
| 4 | |
| 5 | ; ModuleID = 'bugpoint.test.bc' |
| 6 | 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" |
| 7 | target triple = "powerpc-apple-darwin8.8.0" |
| 8 | ;target triple = "i686-linux-gnu" |
| 9 | %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 } |
| 10 | %struct.__sFILEX = type opaque |
| 11 | %struct.__sbuf = type { i8*, i32 } |
| 12 | @PL_rsfp = external global %struct.FILE* ; <%struct.FILE**> [#uses=1] |
| 13 | @PL_bufend = external global i8* ; <i8**> [#uses=1] |
| 14 | @PL_in_eval = external global i32 ; <i32*> [#uses=1] |
| 15 | |
| 16 | declare fastcc void @incline(i8*) |
| 17 | |
| 18 | define i16 @Perl_skipspace_bb60(i8* %s, i8** %s_addr.4.out) { |
| 19 | newFuncRoot: |
| 20 | %tmp138.loc = alloca i8* ; <i8**> [#uses=2] |
| 21 | %s_addr.4.loc = alloca i8* ; <i8**> [#uses=2] |
| 22 | %tmp274.loc = alloca i8* ; <i8**> [#uses=2] |
| 23 | br label %bb60 |
| 24 | |
| 25 | cond_next154.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl |
| 26 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 27 | ret i16 0 |
| 28 | |
| 29 | cond_next161.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl |
| 30 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 31 | ret i16 1 |
| 32 | |
| 33 | cond_next167.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl |
| 34 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 35 | ret i16 2 |
| 36 | |
| 37 | cond_false29.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl |
| 38 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 39 | ret i16 3 |
| 40 | |
| 41 | cond_next.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl |
| 42 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 43 | ret i16 4 |
| 44 | |
| 45 | cond_true19.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl |
| 46 | store i8* %s_addr.4.reload, i8** %s_addr.4.out |
| 47 | ret i16 5 |
| 48 | |
| 49 | bb60: ; preds = %bb60.backedge, %newFuncRoot |
| 50 | %s_addr.2 = phi i8* [ %s, %newFuncRoot ], [ %s_addr.2.be, %bb60.backedge ] ; <i8*> [#uses=3] |
| 51 | %tmp61 = load i8** @PL_bufend ; <i8*> [#uses=1] |
| 52 | %tmp63 = icmp ult i8* %s_addr.2, %tmp61 ; <i1> [#uses=1] |
| 53 | br i1 %tmp63, label %bb60.cond_next67_crit_edge, label %bb60.bb101_crit_edge |
| 54 | |
| 55 | bb37: ; preds = %cond_next67.bb37_crit_edge5, %cond_next67.bb37_crit_edge4, %cond_next67.bb37_crit_edge3, %cond_next67.bb37_crit_edge2, %cond_next67.bb37_crit_edge |
| 56 | %tmp40 = icmp eq i8 %tmp69, 10 ; <i1> [#uses=1] |
| 57 | %tmp43 = getelementptr i8* %s_addr.27.2, i32 1 ; <i8*> [#uses=5] |
| 58 | br i1 %tmp40, label %cond_true45, label %bb37.bb60_crit_edge |
| 59 | |
| 60 | cond_true45: ; preds = %bb37 |
| 61 | %tmp46 = volatile load i32* @PL_in_eval ; <i32> [#uses=1] |
| 62 | %tmp47 = icmp eq i32 %tmp46, 0 ; <i1> [#uses=1] |
| 63 | br i1 %tmp47, label %cond_true45.bb60_crit_edge, label %cond_true50 |
| 64 | |
| 65 | cond_true50: ; preds = %cond_true45 |
| 66 | %tmp51 = volatile load %struct.FILE** @PL_rsfp ; <%struct.FILE*> [#uses=1] |
| 67 | %tmp52 = icmp eq %struct.FILE* %tmp51, null ; <i1> [#uses=1] |
| 68 | br i1 %tmp52, label %cond_true55, label %cond_true50.bb60_crit_edge |
| 69 | |
| 70 | cond_true55: ; preds = %cond_true50 |
| 71 | tail call fastcc void @incline( i8* %tmp43 ) |
| 72 | br label %bb60.backedge |
| 73 | |
| 74 | cond_next67: ; preds = %Perl_newSV.exit.cond_next67_crit_edge, %cond_true148.cond_next67_crit_edge, %bb60.cond_next67_crit_edge |
| 75 | %s_addr.27.2 = phi i8* [ %s_addr.2, %bb60.cond_next67_crit_edge ], [ %tmp274.reload, %Perl_newSV.exit.cond_next67_crit_edge ], [ %tmp138.reload, %cond_true148.cond_next67_crit_edge ] ; <i8*> [#uses=3] |
| 76 | %tmp69 = load i8* %s_addr.27.2 ; <i8> [#uses=2] |
| 77 | switch i8 %tmp69, label %cond_next67.bb101_crit_edge [ |
| 78 | i8 32, label %cond_next67.bb37_crit_edge |
| 79 | i8 9, label %cond_next67.bb37_crit_edge2 |
| 80 | i8 10, label %cond_next67.bb37_crit_edge3 |
| 81 | i8 13, label %cond_next67.bb37_crit_edge4 |
| 82 | i8 12, label %cond_next67.bb37_crit_edge5 |
| 83 | ] |
| 84 | |
| 85 | codeRepl: ; preds = %bb101.preheader |
| 86 | %targetBlock = call i16 @Perl_skipspace_bb60_bb101( i8* %s_addr.27.3.ph, i8** %tmp274.loc, i8** %s_addr.4.loc, i8** %tmp138.loc ) ; <i16> [#uses=1] |
| 87 | %tmp274.reload = load i8** %tmp274.loc ; <i8*> [#uses=4] |
| 88 | %s_addr.4.reload = load i8** %s_addr.4.loc ; <i8*> [#uses=6] |
| 89 | %tmp138.reload = load i8** %tmp138.loc ; <i8*> [#uses=1] |
| 90 | switch i16 %targetBlock, label %cond_true19.i.cond_true190_crit_edge.exitStub [ |
| 91 | i16 0, label %cond_next271.bb60_crit_edge |
| 92 | i16 1, label %cond_true290.bb60_crit_edge |
| 93 | i16 2, label %cond_true295.bb60_crit_edge |
| 94 | i16 3, label %Perl_newSV.exit.cond_next67_crit_edge |
| 95 | i16 4, label %cond_true148.cond_next67_crit_edge |
| 96 | i16 5, label %cond_next154.UnifiedReturnBlock_crit_edge.exitStub |
| 97 | i16 6, label %cond_next161.UnifiedReturnBlock_crit_edge.exitStub |
| 98 | i16 7, label %cond_next167.UnifiedReturnBlock_crit_edge.exitStub |
| 99 | i16 8, label %cond_false29.i.cond_true190_crit_edge.exitStub |
| 100 | i16 9, label %cond_next.i.cond_true190_crit_edge.exitStub |
| 101 | ] |
| 102 | |
| 103 | bb37.bb60_crit_edge: ; preds = %bb37 |
| 104 | br label %bb60.backedge |
| 105 | |
| 106 | cond_true45.bb60_crit_edge: ; preds = %cond_true45 |
| 107 | br label %bb60.backedge |
| 108 | |
| 109 | cond_true50.bb60_crit_edge: ; preds = %cond_true50 |
| 110 | br label %bb60.backedge |
| 111 | |
| 112 | bb60.cond_next67_crit_edge: ; preds = %bb60 |
| 113 | br label %cond_next67 |
| 114 | |
| 115 | bb60.bb101_crit_edge: ; preds = %bb60 |
| 116 | br label %bb101.preheader |
| 117 | |
| 118 | cond_next67.bb101_crit_edge: ; preds = %cond_next67 |
| 119 | br label %bb101.preheader |
| 120 | |
| 121 | cond_next67.bb37_crit_edge: ; preds = %cond_next67 |
| 122 | br label %bb37 |
| 123 | |
| 124 | cond_next67.bb37_crit_edge2: ; preds = %cond_next67 |
| 125 | br label %bb37 |
| 126 | |
| 127 | cond_next67.bb37_crit_edge3: ; preds = %cond_next67 |
| 128 | br label %bb37 |
| 129 | |
| 130 | cond_next67.bb37_crit_edge4: ; preds = %cond_next67 |
| 131 | br label %bb37 |
| 132 | |
| 133 | cond_next67.bb37_crit_edge5: ; preds = %cond_next67 |
| 134 | br label %bb37 |
| 135 | |
| 136 | cond_true148.cond_next67_crit_edge: ; preds = %codeRepl |
| 137 | br label %cond_next67 |
| 138 | |
| 139 | cond_next271.bb60_crit_edge: ; preds = %codeRepl |
| 140 | br label %bb60.backedge |
| 141 | |
| 142 | cond_true290.bb60_crit_edge: ; preds = %codeRepl |
| 143 | br label %bb60.backedge |
| 144 | |
| 145 | cond_true295.bb60_crit_edge: ; preds = %codeRepl |
| 146 | br label %bb60.backedge |
| 147 | |
| 148 | Perl_newSV.exit.cond_next67_crit_edge: ; preds = %codeRepl |
| 149 | br label %cond_next67 |
| 150 | |
| 151 | bb101.preheader: ; preds = %cond_next67.bb101_crit_edge, %bb60.bb101_crit_edge |
| 152 | %s_addr.27.3.ph = phi i8* [ %s_addr.27.2, %cond_next67.bb101_crit_edge ], [ %s_addr.2, %bb60.bb101_crit_edge ] ; <i8*> [#uses=1] |
| 153 | br label %codeRepl |
| 154 | |
| 155 | bb60.backedge: ; preds = %cond_true295.bb60_crit_edge, %cond_true290.bb60_crit_edge, %cond_next271.bb60_crit_edge, %cond_true50.bb60_crit_edge, %cond_true45.bb60_crit_edge, %bb37.bb60_crit_edge, %cond_true55 |
| 156 | %s_addr.2.be = phi i8* [ %tmp43, %cond_true55 ], [ %tmp43, %bb37.bb60_crit_edge ], [ %tmp43, %cond_true45.bb60_crit_edge ], [ %tmp43, %cond_true50.bb60_crit_edge ], [ %tmp274.reload, %cond_next271.bb60_crit_edge ], [ %tmp274.reload, %cond_true290.bb60_crit_edge ], [ %tmp274.reload, %cond_true295.bb60_crit_edge ] ; <i8*> [#uses=1] |
| 157 | br label %bb60 |
| 158 | } |
| 159 | |
| 160 | declare i16 @Perl_skipspace_bb60_bb101(i8*, i8**, i8**, i8**) |