1*9c0a0659SAlexey Bataev; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2*9c0a0659SAlexey Bataev; RUN: opt -S -mtriple=riscv64-unknown-linux-gnu -slp-threshold=-100 -mattr=+v < %s | FileCheck %s 3*9c0a0659SAlexey Bataev 4*9c0a0659SAlexey Bataevdefine void @test1() personality ptr null { 5*9c0a0659SAlexey Bataev; CHECK-LABEL: define void @test1( 6*9c0a0659SAlexey Bataev; CHECK-SAME: ) #[[ATTR0:[0-9]+]] personality ptr null { 7*9c0a0659SAlexey Bataev; CHECK-NEXT: entry: 8*9c0a0659SAlexey Bataev; CHECK-NEXT: [[CALL33:%.*]] = invoke ptr null(i64 0, ptr null) 9*9c0a0659SAlexey Bataev; CHECK-NEXT: to label [[INVOKE_CONT32:%.*]] unwind label [[LPAD31_LOOPEXIT:%.*]] 10*9c0a0659SAlexey Bataev; CHECK: invoke.cont32: 11*9c0a0659SAlexey Bataev; CHECK-NEXT: invoke void null(ptr null, ptr null) 12*9c0a0659SAlexey Bataev; CHECK-NEXT: to label [[INVOKE_CONT37:%.*]] unwind label [[LPAD34_LOOPEXIT:%.*]] 13*9c0a0659SAlexey Bataev; CHECK: invoke.cont37: 14*9c0a0659SAlexey Bataev; CHECK-NEXT: unreachable 15*9c0a0659SAlexey Bataev; CHECK: lpad31.loopexit: 16*9c0a0659SAlexey Bataev; CHECK-NEXT: [[LPAD_LOOPEXIT:%.*]] = landingpad { ptr, i32 } 17*9c0a0659SAlexey Bataev; CHECK-NEXT: cleanup 18*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[EHCLEANUP47:%.*]] 19*9c0a0659SAlexey Bataev; CHECK: lpad34.loopexit: 20*9c0a0659SAlexey Bataev; CHECK-NEXT: [[DOTLCSSA101:%.*]] = phi ptr [ null, [[INVOKE_CONT32]] ] 21*9c0a0659SAlexey Bataev; CHECK-NEXT: [[CALL33_LCSSA96:%.*]] = phi ptr [ [[CALL33]], [[INVOKE_CONT32]] ] 22*9c0a0659SAlexey Bataev; CHECK-NEXT: [[LPAD_LOOPEXIT56:%.*]] = landingpad { ptr, i32 } 23*9c0a0659SAlexey Bataev; CHECK-NEXT: cleanup 24*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[LPAD34_BODY:%.*]] 25*9c0a0659SAlexey Bataev; CHECK: lpad34.loopexit.split-lp: 26*9c0a0659SAlexey Bataev; CHECK-NEXT: [[LPAD_LOOPEXIT_SPLIT_LP57:%.*]] = landingpad { ptr, i32 } 27*9c0a0659SAlexey Bataev; CHECK-NEXT: cleanup 28*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[LPAD34_BODY]] 29*9c0a0659SAlexey Bataev; CHECK: lpad34.body: 30*9c0a0659SAlexey Bataev; CHECK-NEXT: [[TMP0:%.*]] = phi ptr [ [[DOTLCSSA101]], [[LPAD34_LOOPEXIT]] ], [ null, [[LPAD34_LOOPEXIT_SPLIT_LP:%.*]] ] 31*9c0a0659SAlexey Bataev; CHECK-NEXT: [[CALL3399:%.*]] = phi ptr [ [[CALL33_LCSSA96]], [[LPAD34_LOOPEXIT]] ], [ null, [[LPAD34_LOOPEXIT_SPLIT_LP]] ] 32*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[EHCLEANUP47]] 33*9c0a0659SAlexey Bataev; CHECK: ehcleanup47: 34*9c0a0659SAlexey Bataev; CHECK-NEXT: resume { ptr, i32 } zeroinitializer 35*9c0a0659SAlexey Bataev; 36*9c0a0659SAlexey Bataeventry: 37*9c0a0659SAlexey Bataev %call33 = invoke ptr null(i64 0, ptr null) 38*9c0a0659SAlexey Bataev to label %invoke.cont32 unwind label %lpad31.loopexit 39*9c0a0659SAlexey Bataev 40*9c0a0659SAlexey Bataevinvoke.cont32: 41*9c0a0659SAlexey Bataev invoke void null(ptr null, ptr null) 42*9c0a0659SAlexey Bataev to label %invoke.cont37 unwind label %lpad34.loopexit 43*9c0a0659SAlexey Bataev 44*9c0a0659SAlexey Bataevinvoke.cont37: 45*9c0a0659SAlexey Bataev unreachable 46*9c0a0659SAlexey Bataev 47*9c0a0659SAlexey Bataevlpad31.loopexit: 48*9c0a0659SAlexey Bataev %lpad.loopexit = landingpad { ptr, i32 } 49*9c0a0659SAlexey Bataev cleanup 50*9c0a0659SAlexey Bataev br label %ehcleanup47 51*9c0a0659SAlexey Bataev 52*9c0a0659SAlexey Bataevlpad34.loopexit: 53*9c0a0659SAlexey Bataev %.lcssa101 = phi ptr [ null, %invoke.cont32 ] 54*9c0a0659SAlexey Bataev %call33.lcssa96 = phi ptr [ %call33, %invoke.cont32 ] 55*9c0a0659SAlexey Bataev %lpad.loopexit56 = landingpad { ptr, i32 } 56*9c0a0659SAlexey Bataev cleanup 57*9c0a0659SAlexey Bataev br label %lpad34.body 58*9c0a0659SAlexey Bataev 59*9c0a0659SAlexey Bataevlpad34.loopexit.split-lp: 60*9c0a0659SAlexey Bataev %lpad.loopexit.split-lp57 = landingpad { ptr, i32 } 61*9c0a0659SAlexey Bataev cleanup 62*9c0a0659SAlexey Bataev br label %lpad34.body 63*9c0a0659SAlexey Bataev 64*9c0a0659SAlexey Bataevlpad34.body: 65*9c0a0659SAlexey Bataev %0 = phi ptr [ %.lcssa101, %lpad34.loopexit ], [ null, %lpad34.loopexit.split-lp ] 66*9c0a0659SAlexey Bataev %call3399 = phi ptr [ %call33.lcssa96, %lpad34.loopexit ], [ null, %lpad34.loopexit.split-lp ] 67*9c0a0659SAlexey Bataev br label %ehcleanup47 68*9c0a0659SAlexey Bataev 69*9c0a0659SAlexey Bataevehcleanup47: 70*9c0a0659SAlexey Bataev resume { ptr, i32 } zeroinitializer 71*9c0a0659SAlexey Bataev} 72*9c0a0659SAlexey Bataev 73*9c0a0659SAlexey Bataevdefine i32 @test2(i64 %idx.ext.i48.pre-phi) { 74*9c0a0659SAlexey Bataev; CHECK-LABEL: define i32 @test2( 75*9c0a0659SAlexey Bataev; CHECK-SAME: i64 [[IDX_EXT_I48_PRE_PHI:%.*]]) #[[ATTR0]] { 76*9c0a0659SAlexey Bataev; CHECK-NEXT: entry: 77*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[DO_ACTION:%.*]] 78*9c0a0659SAlexey Bataev; CHECK: do_action: 79*9c0a0659SAlexey Bataev; CHECK-NEXT: switch i32 0, label [[SW_DEFAULT:%.*]] [ 80*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 1, label [[CLEANUP185:%.*]] 81*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 2, label [[CLEANUP185]] 82*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 0, label [[CLEANUP185]] 83*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 4, label [[CLEANUP185]] 84*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 5, label [[CLEANUP185]] 85*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 6, label [[CLEANUP185]] 86*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 7, label [[CLEANUP185]] 87*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 8, label [[CLEANUP185]] 88*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 9, label [[CLEANUP185]] 89*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 10, label [[CLEANUP185]] 90*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 11, label [[CLEANUP185]] 91*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 12, label [[CLEANUP185]] 92*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 13, label [[CLEANUP185]] 93*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 14, label [[CLEANUP185]] 94*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 15, label [[CLEANUP185]] 95*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 16, label [[CLEANUP185]] 96*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 17, label [[CLEANUP185]] 97*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 18, label [[CLEANUP185]] 98*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 19, label [[CLEANUP185]] 99*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 20, label [[CLEANUP185]] 100*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 21, label [[CLEANUP185]] 101*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 22, label [[CLEANUP185]] 102*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 23, label [[CLEANUP185]] 103*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 24, label [[CLEANUP185]] 104*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 25, label [[CLEANUP185]] 105*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 26, label [[CLEANUP185]] 106*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 27, label [[CLEANUP185]] 107*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 28, label [[CLEANUP185]] 108*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 29, label [[CLEANUP185]] 109*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 30, label [[CLEANUP185]] 110*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 31, label [[CLEANUP185]] 111*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 32, label [[CLEANUP185]] 112*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 33, label [[CLEANUP185]] 113*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 34, label [[CLEANUP185]] 114*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 35, label [[CLEANUP185]] 115*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 36, label [[CLEANUP185]] 116*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 37, label [[CLEANUP185]] 117*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 38, label [[CLEANUP185]] 118*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 39, label [[CLEANUP185]] 119*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 40, label [[CLEANUP185]] 120*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 41, label [[CLEANUP185]] 121*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 42, label [[CLEANUP185]] 122*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 43, label [[CLEANUP185]] 123*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 44, label [[CLEANUP185]] 124*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 45, label [[CLEANUP185]] 125*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 46, label [[CLEANUP185]] 126*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 47, label [[CLEANUP185]] 127*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 48, label [[CLEANUP185]] 128*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 49, label [[CLEANUP185]] 129*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 50, label [[CLEANUP185]] 130*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 51, label [[CLEANUP185]] 131*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 52, label [[CLEANUP185]] 132*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 53, label [[CLEANUP185]] 133*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 54, label [[CLEANUP185]] 134*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 55, label [[CLEANUP185]] 135*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 56, label [[CLEANUP185]] 136*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 57, label [[DO_ACTION]] 137*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 58, label [[CLEANUP185]] 138*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 59, label [[CLEANUP185]] 139*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 60, label [[DO_ACTION]] 140*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 61, label [[DO_ACTION]] 141*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 62, label [[CLEANUP185]] 142*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 70, label [[SW_BB175:%.*]] 143*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 64, label [[CLEANUP185]] 144*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 65, label [[DO_ACTION]] 145*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 66, label [[DO_ACTION]] 146*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 67, label [[CLEANUP185]] 147*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 72, label [[CLEANUP185]] 148*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 69, label [[DO_ACTION]] 149*9c0a0659SAlexey Bataev; CHECK-NEXT: i32 71, label [[CLEANUP185]] 150*9c0a0659SAlexey Bataev; CHECK-NEXT: ] 151*9c0a0659SAlexey Bataev; CHECK: yy_get_previous_state.exit.loopexit: 152*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[YY_FIND_ACTION_BACKEDGE:%.*]] 153*9c0a0659SAlexey Bataev; CHECK: yy_find_action.backedge: 154*9c0a0659SAlexey Bataev; CHECK-NEXT: [[YY_BP_1_BE:%.*]] = phi ptr [ [[ADD_PTR_I49:%.*]], [[SW_BB175]] ], [ null, [[YY_GET_PREVIOUS_STATE_EXIT_LOOPEXIT:%.*]] ] 155*9c0a0659SAlexey Bataev; CHECK-NEXT: [[YY_CP_2_BE:%.*]] = phi ptr [ [[ARRAYIDX178:%.*]], [[SW_BB175]] ], [ null, [[YY_GET_PREVIOUS_STATE_EXIT_LOOPEXIT]] ] 156*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[DO_ACTION]] 157*9c0a0659SAlexey Bataev; CHECK: sw.bb175: 158*9c0a0659SAlexey Bataev; CHECK-NEXT: [[ARRAYIDX178]] = getelementptr i8, ptr null, i64 0 159*9c0a0659SAlexey Bataev; CHECK-NEXT: [[ADD_PTR_I49]] = getelementptr i8, ptr null, i64 [[IDX_EXT_I48_PRE_PHI]] 160*9c0a0659SAlexey Bataev; CHECK-NEXT: [[CMP5_I50:%.*]] = icmp ult ptr [[ADD_PTR_I49]], [[ARRAYIDX178]] 161*9c0a0659SAlexey Bataev; CHECK-NEXT: br label [[YY_FIND_ACTION_BACKEDGE]] 162*9c0a0659SAlexey Bataev; CHECK: sw.default: 163*9c0a0659SAlexey Bataev; CHECK-NEXT: unreachable 164*9c0a0659SAlexey Bataev; CHECK: cleanup185: 165*9c0a0659SAlexey Bataev; CHECK-NEXT: ret i32 0 166*9c0a0659SAlexey Bataev; 167*9c0a0659SAlexey Bataeventry: 168*9c0a0659SAlexey Bataev br label %do_action 169*9c0a0659SAlexey Bataev 170*9c0a0659SAlexey Bataevdo_action: 171*9c0a0659SAlexey Bataev switch i32 0, label %sw.default [ 172*9c0a0659SAlexey Bataev i32 1, label %cleanup185 173*9c0a0659SAlexey Bataev i32 2, label %cleanup185 174*9c0a0659SAlexey Bataev i32 0, label %cleanup185 175*9c0a0659SAlexey Bataev i32 4, label %cleanup185 176*9c0a0659SAlexey Bataev i32 5, label %cleanup185 177*9c0a0659SAlexey Bataev i32 6, label %cleanup185 178*9c0a0659SAlexey Bataev i32 7, label %cleanup185 179*9c0a0659SAlexey Bataev i32 8, label %cleanup185 180*9c0a0659SAlexey Bataev i32 9, label %cleanup185 181*9c0a0659SAlexey Bataev i32 10, label %cleanup185 182*9c0a0659SAlexey Bataev i32 11, label %cleanup185 183*9c0a0659SAlexey Bataev i32 12, label %cleanup185 184*9c0a0659SAlexey Bataev i32 13, label %cleanup185 185*9c0a0659SAlexey Bataev i32 14, label %cleanup185 186*9c0a0659SAlexey Bataev i32 15, label %cleanup185 187*9c0a0659SAlexey Bataev i32 16, label %cleanup185 188*9c0a0659SAlexey Bataev i32 17, label %cleanup185 189*9c0a0659SAlexey Bataev i32 18, label %cleanup185 190*9c0a0659SAlexey Bataev i32 19, label %cleanup185 191*9c0a0659SAlexey Bataev i32 20, label %cleanup185 192*9c0a0659SAlexey Bataev i32 21, label %cleanup185 193*9c0a0659SAlexey Bataev i32 22, label %cleanup185 194*9c0a0659SAlexey Bataev i32 23, label %cleanup185 195*9c0a0659SAlexey Bataev i32 24, label %cleanup185 196*9c0a0659SAlexey Bataev i32 25, label %cleanup185 197*9c0a0659SAlexey Bataev i32 26, label %cleanup185 198*9c0a0659SAlexey Bataev i32 27, label %cleanup185 199*9c0a0659SAlexey Bataev i32 28, label %cleanup185 200*9c0a0659SAlexey Bataev i32 29, label %cleanup185 201*9c0a0659SAlexey Bataev i32 30, label %cleanup185 202*9c0a0659SAlexey Bataev i32 31, label %cleanup185 203*9c0a0659SAlexey Bataev i32 32, label %cleanup185 204*9c0a0659SAlexey Bataev i32 33, label %cleanup185 205*9c0a0659SAlexey Bataev i32 34, label %cleanup185 206*9c0a0659SAlexey Bataev i32 35, label %cleanup185 207*9c0a0659SAlexey Bataev i32 36, label %cleanup185 208*9c0a0659SAlexey Bataev i32 37, label %cleanup185 209*9c0a0659SAlexey Bataev i32 38, label %cleanup185 210*9c0a0659SAlexey Bataev i32 39, label %cleanup185 211*9c0a0659SAlexey Bataev i32 40, label %cleanup185 212*9c0a0659SAlexey Bataev i32 41, label %cleanup185 213*9c0a0659SAlexey Bataev i32 42, label %cleanup185 214*9c0a0659SAlexey Bataev i32 43, label %cleanup185 215*9c0a0659SAlexey Bataev i32 44, label %cleanup185 216*9c0a0659SAlexey Bataev i32 45, label %cleanup185 217*9c0a0659SAlexey Bataev i32 46, label %cleanup185 218*9c0a0659SAlexey Bataev i32 47, label %cleanup185 219*9c0a0659SAlexey Bataev i32 48, label %cleanup185 220*9c0a0659SAlexey Bataev i32 49, label %cleanup185 221*9c0a0659SAlexey Bataev i32 50, label %cleanup185 222*9c0a0659SAlexey Bataev i32 51, label %cleanup185 223*9c0a0659SAlexey Bataev i32 52, label %cleanup185 224*9c0a0659SAlexey Bataev i32 53, label %cleanup185 225*9c0a0659SAlexey Bataev i32 54, label %cleanup185 226*9c0a0659SAlexey Bataev i32 55, label %cleanup185 227*9c0a0659SAlexey Bataev i32 56, label %cleanup185 228*9c0a0659SAlexey Bataev i32 57, label %do_action 229*9c0a0659SAlexey Bataev i32 58, label %cleanup185 230*9c0a0659SAlexey Bataev i32 59, label %cleanup185 231*9c0a0659SAlexey Bataev i32 60, label %do_action 232*9c0a0659SAlexey Bataev i32 61, label %do_action 233*9c0a0659SAlexey Bataev i32 62, label %cleanup185 234*9c0a0659SAlexey Bataev i32 70, label %sw.bb175 235*9c0a0659SAlexey Bataev i32 64, label %cleanup185 236*9c0a0659SAlexey Bataev i32 65, label %do_action 237*9c0a0659SAlexey Bataev i32 66, label %do_action 238*9c0a0659SAlexey Bataev i32 67, label %cleanup185 239*9c0a0659SAlexey Bataev i32 72, label %cleanup185 240*9c0a0659SAlexey Bataev i32 69, label %do_action 241*9c0a0659SAlexey Bataev i32 71, label %cleanup185 242*9c0a0659SAlexey Bataev ] 243*9c0a0659SAlexey Bataev 244*9c0a0659SAlexey Bataevyy_get_previous_state.exit.loopexit: 245*9c0a0659SAlexey Bataev br label %yy_find_action.backedge 246*9c0a0659SAlexey Bataev 247*9c0a0659SAlexey Bataevyy_find_action.backedge: 248*9c0a0659SAlexey Bataev %yy_bp.1.be = phi ptr [ %add.ptr.i49, %sw.bb175 ], [ null, %yy_get_previous_state.exit.loopexit ] 249*9c0a0659SAlexey Bataev %yy_cp.2.be = phi ptr [ %arrayidx178, %sw.bb175 ], [ null, %yy_get_previous_state.exit.loopexit ] 250*9c0a0659SAlexey Bataev br label %do_action 251*9c0a0659SAlexey Bataev 252*9c0a0659SAlexey Bataevsw.bb175: 253*9c0a0659SAlexey Bataev %arrayidx178 = getelementptr i8, ptr null, i64 0 254*9c0a0659SAlexey Bataev %add.ptr.i49 = getelementptr i8, ptr null, i64 %idx.ext.i48.pre-phi 255*9c0a0659SAlexey Bataev %cmp5.i50 = icmp ult ptr %add.ptr.i49, %arrayidx178 256*9c0a0659SAlexey Bataev br label %yy_find_action.backedge 257*9c0a0659SAlexey Bataev 258*9c0a0659SAlexey Bataevsw.default: 259*9c0a0659SAlexey Bataev unreachable 260*9c0a0659SAlexey Bataev 261*9c0a0659SAlexey Bataevcleanup185: 262*9c0a0659SAlexey Bataev ret i32 0 263*9c0a0659SAlexey Bataev} 264