1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -sroa -S | not grep " = alloca" 2*9880d681SAndroid Build Coastguard Worker; rdar://6417724 3*9880d681SAndroid Build Coastguard Worker; Instcombine shouldn't do anything to this function that prevents promoting the allocas inside it. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget 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-f80:128:128" 6*9880d681SAndroid Build Coastguard Workertarget triple = "i386-apple-darwin9.6" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker%"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" = type { i32* } 9*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" } 10*9880d681SAndroid Build Coastguard Worker%"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" = type { i32*, i32*, i32* } 11*9880d681SAndroid Build Coastguard Worker%"struct.std::bidirectional_iterator_tag" = type <{ i8 }> 12*9880d681SAndroid Build Coastguard Worker%"struct.std::forward_iterator_tag" = type <{ i8 }> 13*9880d681SAndroid Build Coastguard Worker%"struct.std::input_iterator_tag" = type <{ i8 }> 14*9880d681SAndroid Build Coastguard Worker%"struct.std::random_access_iterator_tag" = type <{ i8 }> 15*9880d681SAndroid Build Coastguard Worker%"struct.std::vector<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >" } 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine i32* @_Z3fooRSt6vectorIiSaIiEE(%"struct.std::vector<int,std::allocator<int> >"* %X) { 18*9880d681SAndroid Build Coastguard Workerentry: 19*9880d681SAndroid Build Coastguard Worker %0 = alloca %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" 20*9880d681SAndroid Build Coastguard Worker %__first_addr.i.i = alloca %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" 21*9880d681SAndroid Build Coastguard Worker %__last_addr.i.i = alloca %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" 22*9880d681SAndroid Build Coastguard Worker %unnamed_arg.i = alloca %"struct.std::bidirectional_iterator_tag", align 8 23*9880d681SAndroid Build Coastguard Worker %1 = alloca %"struct.std::bidirectional_iterator_tag" 24*9880d681SAndroid Build Coastguard Worker %__first_addr.i = alloca %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" 25*9880d681SAndroid Build Coastguard Worker %2 = alloca %"struct.std::bidirectional_iterator_tag" 26*9880d681SAndroid Build Coastguard Worker %3 = alloca %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >" 27*9880d681SAndroid Build Coastguard Worker %4 = alloca i32 28*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 29*9880d681SAndroid Build Coastguard Worker store i32 42, i32* %4, align 4 30*9880d681SAndroid Build Coastguard Worker %5 = getelementptr %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<int,std::allocator<int> >"* %X, i32 0, i32 0 31*9880d681SAndroid Build Coastguard Worker %6 = getelementptr %"struct.std::_Vector_base<int,std::allocator<int> >", %"struct.std::_Vector_base<int,std::allocator<int> >"* %5, i32 0, i32 0 32*9880d681SAndroid Build Coastguard Worker %7 = getelementptr %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl", %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl"* %6, i32 0, i32 1 33*9880d681SAndroid Build Coastguard Worker %8 = load i32*, i32** %7, align 4 34*9880d681SAndroid Build Coastguard Worker %9 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %3, i32 0, i32 0 35*9880d681SAndroid Build Coastguard Worker store i32* %8, i32** %9, align 4 36*9880d681SAndroid Build Coastguard Worker %10 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %3, i32 0, i32 0 37*9880d681SAndroid Build Coastguard Worker %11 = load i32*, i32** %10, align 4 38*9880d681SAndroid Build Coastguard Worker %tmp2.i = ptrtoint i32* %11 to i32 39*9880d681SAndroid Build Coastguard Worker %tmp1.i = inttoptr i32 %tmp2.i to i32* 40*9880d681SAndroid Build Coastguard Worker %tmp3 = ptrtoint i32* %tmp1.i to i32 41*9880d681SAndroid Build Coastguard Worker %tmp2 = inttoptr i32 %tmp3 to i32* 42*9880d681SAndroid Build Coastguard Worker %12 = getelementptr %"struct.std::vector<int,std::allocator<int> >", %"struct.std::vector<int,std::allocator<int> >"* %X, i32 0, i32 0 43*9880d681SAndroid Build Coastguard Worker %13 = getelementptr %"struct.std::_Vector_base<int,std::allocator<int> >", %"struct.std::_Vector_base<int,std::allocator<int> >"* %12, i32 0, i32 0 44*9880d681SAndroid Build Coastguard Worker %14 = getelementptr %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl", %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl"* %13, i32 0, i32 0 45*9880d681SAndroid Build Coastguard Worker %15 = load i32*, i32** %14, align 4 46*9880d681SAndroid Build Coastguard Worker %16 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %0, i32 0, i32 0 47*9880d681SAndroid Build Coastguard Worker store i32* %15, i32** %16, align 4 48*9880d681SAndroid Build Coastguard Worker %17 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %0, i32 0, i32 0 49*9880d681SAndroid Build Coastguard Worker %18 = load i32*, i32** %17, align 4 50*9880d681SAndroid Build Coastguard Worker %tmp2.i17 = ptrtoint i32* %18 to i32 51*9880d681SAndroid Build Coastguard Worker %tmp1.i18 = inttoptr i32 %tmp2.i17 to i32* 52*9880d681SAndroid Build Coastguard Worker %tmp8 = ptrtoint i32* %tmp1.i18 to i32 53*9880d681SAndroid Build Coastguard Worker %tmp6 = inttoptr i32 %tmp8 to i32* 54*9880d681SAndroid Build Coastguard Worker %19 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i, i32 0, i32 0 55*9880d681SAndroid Build Coastguard Worker store i32* %tmp6, i32** %19 56*9880d681SAndroid Build Coastguard Worker %20 = getelementptr %"struct.std::bidirectional_iterator_tag", %"struct.std::bidirectional_iterator_tag"* %1, i32 0, i32 0 57*9880d681SAndroid Build Coastguard Worker %21 = load i8, i8* %20, align 1 58*9880d681SAndroid Build Coastguard Worker %22 = or i8 %21, 0 59*9880d681SAndroid Build Coastguard Worker %23 = or i8 %22, 0 60*9880d681SAndroid Build Coastguard Worker %24 = or i8 %23, 0 61*9880d681SAndroid Build Coastguard Worker %25 = getelementptr %"struct.std::bidirectional_iterator_tag", %"struct.std::bidirectional_iterator_tag"* %2, i32 0, i32 0 62*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %25, align 1 63*9880d681SAndroid Build Coastguard Worker %elt.i = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i, i32 0, i32 0 64*9880d681SAndroid Build Coastguard Worker %val.i = load i32*, i32** %elt.i 65*9880d681SAndroid Build Coastguard Worker %tmp.i = bitcast %"struct.std::bidirectional_iterator_tag"* %unnamed_arg.i to i8* 66*9880d681SAndroid Build Coastguard Worker %tmp9.i = bitcast %"struct.std::bidirectional_iterator_tag"* %2 to i8* 67*9880d681SAndroid Build Coastguard Worker call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp.i, i8* %tmp9.i, i64 1, i32 1, i1 false) 68*9880d681SAndroid Build Coastguard Worker %26 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 69*9880d681SAndroid Build Coastguard Worker store i32* %val.i, i32** %26 70*9880d681SAndroid Build Coastguard Worker %27 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__last_addr.i.i, i32 0, i32 0 71*9880d681SAndroid Build Coastguard Worker store i32* %tmp2, i32** %27 72*9880d681SAndroid Build Coastguard Worker %28 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__last_addr.i.i, i32 0, i32 0 73*9880d681SAndroid Build Coastguard Worker %29 = load i32*, i32** %28, align 4 74*9880d681SAndroid Build Coastguard Worker %30 = ptrtoint i32* %29 to i32 75*9880d681SAndroid Build Coastguard Worker %31 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 76*9880d681SAndroid Build Coastguard Worker %32 = load i32*, i32** %31, align 4 77*9880d681SAndroid Build Coastguard Worker %33 = ptrtoint i32* %32 to i32 78*9880d681SAndroid Build Coastguard Worker %34 = sub i32 %30, %33 79*9880d681SAndroid Build Coastguard Worker %35 = ashr i32 %34, 2 80*9880d681SAndroid Build Coastguard Worker %36 = ashr i32 %35, 2 81*9880d681SAndroid Build Coastguard Worker br label %bb12.i.i 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerbb.i.i: ; preds = %bb12.i.i 84*9880d681SAndroid Build Coastguard Worker %37 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 85*9880d681SAndroid Build Coastguard Worker %38 = load i32*, i32** %37, align 4 86*9880d681SAndroid Build Coastguard Worker %39 = load i32, i32* %38, align 4 87*9880d681SAndroid Build Coastguard Worker %40 = load i32, i32* %4, align 4 88*9880d681SAndroid Build Coastguard Worker %41 = icmp eq i32 %39, %40 89*9880d681SAndroid Build Coastguard Worker %42 = zext i1 %41 to i8 90*9880d681SAndroid Build Coastguard Worker %toBool.i.i = icmp ne i8 %42, 0 91*9880d681SAndroid Build Coastguard Worker br i1 %toBool.i.i, label %bb1.i.i, label %bb2.i.i 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerbb1.i.i: ; preds = %bb.i.i 94*9880d681SAndroid Build Coastguard Worker %43 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 95*9880d681SAndroid Build Coastguard Worker %44 = load i32*, i32** %43, align 4 96*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerbb2.i.i: ; preds = %bb.i.i 99*9880d681SAndroid Build Coastguard Worker %45 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 100*9880d681SAndroid Build Coastguard Worker %46 = load i32*, i32** %45, align 4 101*9880d681SAndroid Build Coastguard Worker %47 = getelementptr i32, i32* %46, i64 1 102*9880d681SAndroid Build Coastguard Worker %48 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 103*9880d681SAndroid Build Coastguard Worker store i32* %47, i32** %48, align 4 104*9880d681SAndroid Build Coastguard Worker %49 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 105*9880d681SAndroid Build Coastguard Worker %50 = load i32*, i32** %49, align 4 106*9880d681SAndroid Build Coastguard Worker %51 = load i32, i32* %50, align 4 107*9880d681SAndroid Build Coastguard Worker %52 = load i32, i32* %4, align 4 108*9880d681SAndroid Build Coastguard Worker %53 = icmp eq i32 %51, %52 109*9880d681SAndroid Build Coastguard Worker %54 = zext i1 %53 to i8 110*9880d681SAndroid Build Coastguard Worker %toBool3.i.i = icmp ne i8 %54, 0 111*9880d681SAndroid Build Coastguard Worker br i1 %toBool3.i.i, label %bb4.i.i, label %bb5.i.i 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerbb4.i.i: ; preds = %bb2.i.i 114*9880d681SAndroid Build Coastguard Worker %55 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 115*9880d681SAndroid Build Coastguard Worker %56 = load i32*, i32** %55, align 4 116*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerbb5.i.i: ; preds = %bb2.i.i 119*9880d681SAndroid Build Coastguard Worker %57 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 120*9880d681SAndroid Build Coastguard Worker %58 = load i32*, i32** %57, align 4 121*9880d681SAndroid Build Coastguard Worker %59 = getelementptr i32, i32* %58, i64 1 122*9880d681SAndroid Build Coastguard Worker %60 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 123*9880d681SAndroid Build Coastguard Worker store i32* %59, i32** %60, align 4 124*9880d681SAndroid Build Coastguard Worker %61 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 125*9880d681SAndroid Build Coastguard Worker %62 = load i32*, i32** %61, align 4 126*9880d681SAndroid Build Coastguard Worker %63 = load i32, i32* %62, align 4 127*9880d681SAndroid Build Coastguard Worker %64 = load i32, i32* %4, align 4 128*9880d681SAndroid Build Coastguard Worker %65 = icmp eq i32 %63, %64 129*9880d681SAndroid Build Coastguard Worker %66 = zext i1 %65 to i8 130*9880d681SAndroid Build Coastguard Worker %toBool6.i.i = icmp ne i8 %66, 0 131*9880d681SAndroid Build Coastguard Worker br i1 %toBool6.i.i, label %bb7.i.i, label %bb8.i.i 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerbb7.i.i: ; preds = %bb5.i.i 134*9880d681SAndroid Build Coastguard Worker %67 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 135*9880d681SAndroid Build Coastguard Worker %68 = load i32*, i32** %67, align 4 136*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerbb8.i.i: ; preds = %bb5.i.i 139*9880d681SAndroid Build Coastguard Worker %69 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 140*9880d681SAndroid Build Coastguard Worker %70 = load i32*, i32** %69, align 4 141*9880d681SAndroid Build Coastguard Worker %71 = getelementptr i32, i32* %70, i64 1 142*9880d681SAndroid Build Coastguard Worker %72 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 143*9880d681SAndroid Build Coastguard Worker store i32* %71, i32** %72, align 4 144*9880d681SAndroid Build Coastguard Worker %73 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 145*9880d681SAndroid Build Coastguard Worker %74 = load i32*, i32** %73, align 4 146*9880d681SAndroid Build Coastguard Worker %75 = load i32, i32* %74, align 4 147*9880d681SAndroid Build Coastguard Worker %76 = load i32, i32* %4, align 4 148*9880d681SAndroid Build Coastguard Worker %77 = icmp eq i32 %75, %76 149*9880d681SAndroid Build Coastguard Worker %78 = zext i1 %77 to i8 150*9880d681SAndroid Build Coastguard Worker %toBool9.i.i = icmp ne i8 %78, 0 151*9880d681SAndroid Build Coastguard Worker br i1 %toBool9.i.i, label %bb10.i.i, label %bb11.i.i 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerbb10.i.i: ; preds = %bb8.i.i 154*9880d681SAndroid Build Coastguard Worker %79 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 155*9880d681SAndroid Build Coastguard Worker %80 = load i32*, i32** %79, align 4 156*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerbb11.i.i: ; preds = %bb8.i.i 159*9880d681SAndroid Build Coastguard Worker %81 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 160*9880d681SAndroid Build Coastguard Worker %82 = load i32*, i32** %81, align 4 161*9880d681SAndroid Build Coastguard Worker %83 = getelementptr i32, i32* %82, i64 1 162*9880d681SAndroid Build Coastguard Worker %84 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 163*9880d681SAndroid Build Coastguard Worker store i32* %83, i32** %84, align 4 164*9880d681SAndroid Build Coastguard Worker %85 = sub i32 %__trip_count.0.i.i, 1 165*9880d681SAndroid Build Coastguard Worker br label %bb12.i.i 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerbb12.i.i: ; preds = %bb11.i.i, %entry 168*9880d681SAndroid Build Coastguard Worker %__trip_count.0.i.i = phi i32 [ %36, %entry ], [ %85, %bb11.i.i ] 169*9880d681SAndroid Build Coastguard Worker %86 = icmp sgt i32 %__trip_count.0.i.i, 0 170*9880d681SAndroid Build Coastguard Worker br i1 %86, label %bb.i.i, label %bb13.i.i 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Workerbb13.i.i: ; preds = %bb12.i.i 173*9880d681SAndroid Build Coastguard Worker %87 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__last_addr.i.i, i32 0, i32 0 174*9880d681SAndroid Build Coastguard Worker %88 = load i32*, i32** %87, align 4 175*9880d681SAndroid Build Coastguard Worker %89 = ptrtoint i32* %88 to i32 176*9880d681SAndroid Build Coastguard Worker %90 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 177*9880d681SAndroid Build Coastguard Worker %91 = load i32*, i32** %90, align 4 178*9880d681SAndroid Build Coastguard Worker %92 = ptrtoint i32* %91 to i32 179*9880d681SAndroid Build Coastguard Worker %93 = sub i32 %89, %92 180*9880d681SAndroid Build Coastguard Worker %94 = ashr i32 %93, 2 181*9880d681SAndroid Build Coastguard Worker switch i32 %94, label %bb26.i.i [ 182*9880d681SAndroid Build Coastguard Worker i32 1, label %bb22.i.i 183*9880d681SAndroid Build Coastguard Worker i32 2, label %bb18.i.i 184*9880d681SAndroid Build Coastguard Worker i32 3, label %bb14.i.i 185*9880d681SAndroid Build Coastguard Worker ] 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Workerbb14.i.i: ; preds = %bb13.i.i 188*9880d681SAndroid Build Coastguard Worker %95 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 189*9880d681SAndroid Build Coastguard Worker %96 = load i32*, i32** %95, align 4 190*9880d681SAndroid Build Coastguard Worker %97 = load i32, i32* %96, align 4 191*9880d681SAndroid Build Coastguard Worker %98 = load i32, i32* %4, align 4 192*9880d681SAndroid Build Coastguard Worker %99 = icmp eq i32 %97, %98 193*9880d681SAndroid Build Coastguard Worker %100 = zext i1 %99 to i8 194*9880d681SAndroid Build Coastguard Worker %toBool15.i.i = icmp ne i8 %100, 0 195*9880d681SAndroid Build Coastguard Worker br i1 %toBool15.i.i, label %bb16.i.i, label %bb17.i.i 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Workerbb16.i.i: ; preds = %bb14.i.i 198*9880d681SAndroid Build Coastguard Worker %101 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 199*9880d681SAndroid Build Coastguard Worker %102 = load i32*, i32** %101, align 4 200*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Workerbb17.i.i: ; preds = %bb14.i.i 203*9880d681SAndroid Build Coastguard Worker %103 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 204*9880d681SAndroid Build Coastguard Worker %104 = load i32*, i32** %103, align 4 205*9880d681SAndroid Build Coastguard Worker %105 = getelementptr i32, i32* %104, i64 1 206*9880d681SAndroid Build Coastguard Worker %106 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 207*9880d681SAndroid Build Coastguard Worker store i32* %105, i32** %106, align 4 208*9880d681SAndroid Build Coastguard Worker br label %bb18.i.i 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Workerbb18.i.i: ; preds = %bb17.i.i, %bb13.i.i 211*9880d681SAndroid Build Coastguard Worker %107 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 212*9880d681SAndroid Build Coastguard Worker %108 = load i32*, i32** %107, align 4 213*9880d681SAndroid Build Coastguard Worker %109 = load i32, i32* %108, align 4 214*9880d681SAndroid Build Coastguard Worker %110 = load i32, i32* %4, align 4 215*9880d681SAndroid Build Coastguard Worker %111 = icmp eq i32 %109, %110 216*9880d681SAndroid Build Coastguard Worker %112 = zext i1 %111 to i8 217*9880d681SAndroid Build Coastguard Worker %toBool19.i.i = icmp ne i8 %112, 0 218*9880d681SAndroid Build Coastguard Worker br i1 %toBool19.i.i, label %bb20.i.i, label %bb21.i.i 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerbb20.i.i: ; preds = %bb18.i.i 221*9880d681SAndroid Build Coastguard Worker %113 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 222*9880d681SAndroid Build Coastguard Worker %114 = load i32*, i32** %113, align 4 223*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Workerbb21.i.i: ; preds = %bb18.i.i 226*9880d681SAndroid Build Coastguard Worker %115 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 227*9880d681SAndroid Build Coastguard Worker %116 = load i32*, i32** %115, align 4 228*9880d681SAndroid Build Coastguard Worker %117 = getelementptr i32, i32* %116, i64 1 229*9880d681SAndroid Build Coastguard Worker %118 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 230*9880d681SAndroid Build Coastguard Worker store i32* %117, i32** %118, align 4 231*9880d681SAndroid Build Coastguard Worker br label %bb22.i.i 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Workerbb22.i.i: ; preds = %bb21.i.i, %bb13.i.i 234*9880d681SAndroid Build Coastguard Worker %119 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 235*9880d681SAndroid Build Coastguard Worker %120 = load i32*, i32** %119, align 4 236*9880d681SAndroid Build Coastguard Worker %121 = load i32, i32* %120, align 4 237*9880d681SAndroid Build Coastguard Worker %122 = load i32, i32* %4, align 4 238*9880d681SAndroid Build Coastguard Worker %123 = icmp eq i32 %121, %122 239*9880d681SAndroid Build Coastguard Worker %124 = zext i1 %123 to i8 240*9880d681SAndroid Build Coastguard Worker %toBool23.i.i = icmp ne i8 %124, 0 241*9880d681SAndroid Build Coastguard Worker br i1 %toBool23.i.i, label %bb24.i.i, label %bb25.i.i 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerbb24.i.i: ; preds = %bb22.i.i 244*9880d681SAndroid Build Coastguard Worker %125 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 245*9880d681SAndroid Build Coastguard Worker %126 = load i32*, i32** %125, align 4 246*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerbb25.i.i: ; preds = %bb22.i.i 249*9880d681SAndroid Build Coastguard Worker %127 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 250*9880d681SAndroid Build Coastguard Worker %128 = load i32*, i32** %127, align 4 251*9880d681SAndroid Build Coastguard Worker %129 = getelementptr i32, i32* %128, i64 1 252*9880d681SAndroid Build Coastguard Worker %130 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__first_addr.i.i, i32 0, i32 0 253*9880d681SAndroid Build Coastguard Worker store i32* %129, i32** %130, align 4 254*9880d681SAndroid Build Coastguard Worker br label %bb26.i.i 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Workerbb26.i.i: ; preds = %bb25.i.i, %bb13.i.i 257*9880d681SAndroid Build Coastguard Worker %131 = getelementptr %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >", %"struct.__gnu_cxx::__normal_iterator<int*,std::vector<int, std::allocator<int> > >"* %__last_addr.i.i, i32 0, i32 0 258*9880d681SAndroid Build Coastguard Worker %132 = load i32*, i32** %131, align 4 259*9880d681SAndroid Build Coastguard Worker br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit: ; preds = %bb26.i.i, %bb24.i.i, %bb20.i.i, %bb16.i.i, %bb10.i.i, %bb7.i.i, %bb4.i.i, %bb1.i.i 262*9880d681SAndroid Build Coastguard Worker %.0.0.i.i = phi i32* [ %132, %bb26.i.i ], [ %126, %bb24.i.i ], [ %114, %bb20.i.i ], [ %102, %bb16.i.i ], [ %80, %bb10.i.i ], [ %68, %bb7.i.i ], [ %56, %bb4.i.i ], [ %44, %bb1.i.i ] 263*9880d681SAndroid Build Coastguard Worker %tmp2.i.i = ptrtoint i32* %.0.0.i.i to i32 264*9880d681SAndroid Build Coastguard Worker %tmp1.i.i = inttoptr i32 %tmp2.i.i to i32* 265*9880d681SAndroid Build Coastguard Worker %tmp4.i = ptrtoint i32* %tmp1.i.i to i32 266*9880d681SAndroid Build Coastguard Worker %tmp3.i = inttoptr i32 %tmp4.i to i32* 267*9880d681SAndroid Build Coastguard Worker %tmp8.i = ptrtoint i32* %tmp3.i to i32 268*9880d681SAndroid Build Coastguard Worker %tmp6.i = inttoptr i32 %tmp8.i to i32* 269*9880d681SAndroid Build Coastguard Worker %tmp12 = ptrtoint i32* %tmp6.i to i32 270*9880d681SAndroid Build Coastguard Worker %tmp10 = inttoptr i32 %tmp12 to i32* 271*9880d681SAndroid Build Coastguard Worker %tmp16 = ptrtoint i32* %tmp10 to i32 272*9880d681SAndroid Build Coastguard Worker br label %return 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit 275*9880d681SAndroid Build Coastguard Worker %tmp14 = inttoptr i32 %tmp16 to i32* 276*9880d681SAndroid Build Coastguard Worker ret i32* %tmp14 277*9880d681SAndroid Build Coastguard Worker} 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind 280