xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/2009-02-20-InstCombine-SROA.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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