brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.4 KiB · d29c0aa Raw
277 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes='sroa<preserve-cfg>' -S | FileCheck %s --check-prefixes=CHECK,CHECK-PRESERVE-CFG3; RUN: opt < %s -passes='sroa<modify-cfg>' -S | FileCheck %s --check-prefixes=CHECK,CHECK-MODIFY-CFG4 5; rdar://64177246 7target 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"8target triple = "i386-apple-darwin9.6"9 10%"struct.std::vector<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >" }11%"struct.std::_Vector_base<int,std::allocator<int> >" = type { %"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" }12%"struct.std::_Vector_base<int,std::allocator<int> >::_Vector_impl" = type { ptr, ptr, ptr }13 14define ptr @_Z3fooRSt6vectorIiSaIiEE(ptr %X) {15; CHECK-LABEL: @_Z3fooRSt6vectorIiSaIiEE(16; CHECK-NEXT:  entry:17; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0:%.*]] = alloca ptr, align 818; CHECK-NEXT:    [[__LAST_ADDR_I_I_SROA_0:%.*]] = alloca ptr, align 819; CHECK-NEXT:    [[TMP0:%.*]] = getelementptr %"struct.std::vector<int,std::allocator<int> >", ptr [[X:%.*]], i32 0, i32 0, i32 0, i32 120; CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 421; CHECK-NEXT:    [[TMP2:%.*]] = getelementptr %"struct.std::vector<int,std::allocator<int> >", ptr [[X]], i32 0, i32 0, i32 0, i32 022; CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 423; CHECK-NEXT:    store ptr [[TMP3]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 824; CHECK-NEXT:    store ptr [[TMP1]], ptr [[__LAST_ADDR_I_I_SROA_0]], align 825; CHECK-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[TMP1]] to i3226; CHECK-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[TMP3]] to i3227; CHECK-NEXT:    [[TMP6:%.*]] = sub i32 [[TMP4]], [[TMP5]]28; CHECK-NEXT:    [[TMP7:%.*]] = ashr i32 [[TMP6]], 429; CHECK-NEXT:    br label [[BB12_I_I:%.*]]30; CHECK:       bb.i.i:31; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_13:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 832; CHECK-NEXT:    [[TMP8:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_13]], align 433; CHECK-NEXT:    [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 4234; CHECK-NEXT:    br i1 [[TMP9]], label [[BB1_I_I:%.*]], label [[BB2_I_I:%.*]]35; CHECK:       bb1.i.i:36; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT:%.*]]37; CHECK:       bb2.i.i:38; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_14:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 839; CHECK-NEXT:    [[TMP10:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_14]], i32 140; CHECK-NEXT:    store ptr [[TMP10]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 841; CHECK-NEXT:    [[TMP11:%.*]] = load i32, ptr [[TMP10]], align 442; CHECK-NEXT:    [[TMP12:%.*]] = icmp eq i32 [[TMP11]], 4243; CHECK-NEXT:    br i1 [[TMP12]], label [[BB4_I_I:%.*]], label [[BB5_I_I:%.*]]44; CHECK:       bb4.i.i:45; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]46; CHECK:       bb5.i.i:47; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_15:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 848; CHECK-NEXT:    [[TMP13:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_15]], i32 149; CHECK-NEXT:    store ptr [[TMP13]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 850; CHECK-NEXT:    [[TMP14:%.*]] = load i32, ptr [[TMP13]], align 451; CHECK-NEXT:    [[TMP15:%.*]] = icmp eq i32 [[TMP14]], 4252; CHECK-NEXT:    br i1 [[TMP15]], label [[BB7_I_I:%.*]], label [[BB8_I_I:%.*]]53; CHECK:       bb7.i.i:54; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]55; CHECK:       bb8.i.i:56; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_16:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 857; CHECK-NEXT:    [[TMP16:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_16]], i32 158; CHECK-NEXT:    store ptr [[TMP16]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 859; CHECK-NEXT:    [[TMP17:%.*]] = load i32, ptr [[TMP16]], align 460; CHECK-NEXT:    [[TMP18:%.*]] = icmp eq i32 [[TMP17]], 4261; CHECK-NEXT:    br i1 [[TMP18]], label [[BB10_I_I:%.*]], label [[BB11_I_I:%.*]]62; CHECK:       bb10.i.i:63; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]64; CHECK:       bb11.i.i:65; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_17:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 866; CHECK-NEXT:    [[TMP19:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_17]], i32 167; CHECK-NEXT:    store ptr [[TMP19]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 868; CHECK-NEXT:    [[TMP20:%.*]] = add i32 [[__TRIP_COUNT_0_I_I:%.*]], -169; CHECK-NEXT:    br label [[BB12_I_I]]70; CHECK:       bb12.i.i:71; CHECK-NEXT:    [[__TRIP_COUNT_0_I_I]] = phi i32 [ [[TMP7]], [[ENTRY:%.*]] ], [ [[TMP20]], [[BB11_I_I]] ]72; CHECK-NEXT:    [[TMP21:%.*]] = icmp sgt i32 [[__TRIP_COUNT_0_I_I]], 073; CHECK-NEXT:    br i1 [[TMP21]], label [[BB_I_I:%.*]], label [[BB13_I_I:%.*]]74; CHECK:       bb13.i.i:75; CHECK-NEXT:    [[__LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0_:%.*]] = load ptr, ptr [[__LAST_ADDR_I_I_SROA_0]], align 876; CHECK-NEXT:    [[TMP22:%.*]] = ptrtoint ptr [[__LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0___LAST_ADDR_I_I_SROA_0_0_]] to i3277; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 878; CHECK-NEXT:    [[TMP23:%.*]] = ptrtoint ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_]] to i3279; CHECK-NEXT:    [[TMP24:%.*]] = sub i32 [[TMP22]], [[TMP23]]80; CHECK-NEXT:    [[TMP25:%.*]] = ashr i32 [[TMP24]], 281; CHECK-NEXT:    switch i32 [[TMP25]], label [[BB26_I_I:%.*]] [82; CHECK-NEXT:    i32 1, label [[BB22_I_I:%.*]]83; CHECK-NEXT:    i32 2, label [[BB18_I_I:%.*]]84; CHECK-NEXT:    i32 3, label [[BB14_I_I:%.*]]85; CHECK-NEXT:    ]86; CHECK:       bb14.i.i:87; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_7:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 888; CHECK-NEXT:    [[TMP26:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_7]], align 489; CHECK-NEXT:    [[TMP27:%.*]] = icmp eq i32 [[TMP26]], 4290; CHECK-NEXT:    br i1 [[TMP27]], label [[BB16_I_I:%.*]], label [[BB17_I_I:%.*]]91; CHECK:       bb16.i.i:92; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]93; CHECK:       bb17.i.i:94; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_8:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 895; CHECK-NEXT:    [[TMP28:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_8]], i32 196; CHECK-NEXT:    store ptr [[TMP28]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 897; CHECK-NEXT:    br label [[BB18_I_I]]98; CHECK:       bb18.i.i:99; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_9:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8100; CHECK-NEXT:    [[TMP29:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_9]], align 4101; CHECK-NEXT:    [[TMP30:%.*]] = icmp eq i32 [[TMP29]], 42102; CHECK-NEXT:    br i1 [[TMP30]], label [[BB20_I_I:%.*]], label [[BB21_I_I:%.*]]103; CHECK:       bb20.i.i:104; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]105; CHECK:       bb21.i.i:106; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_10:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8107; CHECK-NEXT:    [[TMP31:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_10]], i32 1108; CHECK-NEXT:    store ptr [[TMP31]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8109; CHECK-NEXT:    br label [[BB22_I_I]]110; CHECK:       bb22.i.i:111; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_11:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8112; CHECK-NEXT:    [[TMP32:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_11]], align 4113; CHECK-NEXT:    [[TMP33:%.*]] = icmp eq i32 [[TMP32]], 42114; CHECK-NEXT:    br i1 [[TMP33]], label [[BB24_I_I:%.*]], label [[BB25_I_I:%.*]]115; CHECK:       bb24.i.i:116; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]117; CHECK:       bb25.i.i:118; CHECK-NEXT:    [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_12:%.*]] = load ptr, ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8119; CHECK-NEXT:    [[TMP34:%.*]] = getelementptr i32, ptr [[__FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0___FIRST_ADDR_I_I_SROA_0_0_12]], i32 1120; CHECK-NEXT:    store ptr [[TMP34]], ptr [[__FIRST_ADDR_I_I_SROA_0]], align 8121; CHECK-NEXT:    br label [[BB26_I_I]]122; CHECK:       bb26.i.i:123; CHECK-NEXT:    br label [[_ZST4FINDIN9__GNU_CXX17__NORMAL_ITERATORIPIST6VECTORIISAIIEEEEIET_S7_S7_RKT0__EXIT]]124; CHECK:       _ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit:125; CHECK-NEXT:    [[DOTIN_IN:%.*]] = phi ptr [ [[__LAST_ADDR_I_I_SROA_0]], [[BB26_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB24_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB20_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB16_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB10_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB7_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB4_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0]], [[BB1_I_I]] ]126; CHECK-NEXT:    br label [[RETURN:%.*]]127; CHECK:       return:128; CHECK-NEXT:    [[TMP35:%.*]] = load ptr, ptr [[DOTIN_IN]], align 4129; CHECK-NEXT:    ret ptr [[TMP35]]130;131entry:132  %__first_addr.i.i.sroa.0 = alloca ptr, align 8133  %__last_addr.i.i.sroa.0 = alloca ptr, align 8134  %0 = getelementptr %"struct.std::vector<int,std::allocator<int> >", ptr %X, i32 0, i32 0, i32 0, i32 1135  %1 = load ptr, ptr %0, align 4136  %2 = getelementptr %"struct.std::vector<int,std::allocator<int> >", ptr %X, i32 0, i32 0, i32 0, i32 0137  %3 = load ptr, ptr %2, align 4138  store ptr %3, ptr %__first_addr.i.i.sroa.0, align 8139  store ptr %1, ptr %__last_addr.i.i.sroa.0, align 8140  %4 = ptrtoint ptr %1 to i32141  %5 = ptrtoint ptr %3 to i32142  %6 = sub i32 %4, %5143  %7 = ashr i32 %6, 4144  br label %bb12.i.i145 146bb.i.i:                                           ; preds = %bb12.i.i147  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.13 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8148  %8 = load i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.13, align 4149  %9 = icmp eq i32 %8, 42150  br i1 %9, label %bb1.i.i, label %bb2.i.i151 152bb1.i.i:                                          ; preds = %bb.i.i153  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit154 155bb2.i.i:                                          ; preds = %bb.i.i156  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.14 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8157  %10 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.14, i32 1158  store ptr %10, ptr %__first_addr.i.i.sroa.0, align 8159  %11 = load i32, ptr %10, align 4160  %12 = icmp eq i32 %11, 42161  br i1 %12, label %bb4.i.i, label %bb5.i.i162 163bb4.i.i:                                          ; preds = %bb2.i.i164  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit165 166bb5.i.i:                                          ; preds = %bb2.i.i167  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.15 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8168  %13 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.15, i32 1169  store ptr %13, ptr %__first_addr.i.i.sroa.0, align 8170  %14 = load i32, ptr %13, align 4171  %15 = icmp eq i32 %14, 42172  br i1 %15, label %bb7.i.i, label %bb8.i.i173 174bb7.i.i:                                          ; preds = %bb5.i.i175  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit176 177bb8.i.i:                                          ; preds = %bb5.i.i178  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.16 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8179  %16 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.16, i32 1180  store ptr %16, ptr %__first_addr.i.i.sroa.0, align 8181  %17 = load i32, ptr %16, align 4182  %18 = icmp eq i32 %17, 42183  br i1 %18, label %bb10.i.i, label %bb11.i.i184 185bb10.i.i:                                         ; preds = %bb8.i.i186  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit187 188bb11.i.i:                                         ; preds = %bb8.i.i189  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.17 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8190  %19 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.17, i32 1191  store ptr %19, ptr %__first_addr.i.i.sroa.0, align 8192  %20 = add i32 %__trip_count.0.i.i, -1193  br label %bb12.i.i194 195bb12.i.i:                                         ; preds = %bb11.i.i, %entry196  %__trip_count.0.i.i = phi i32 [ %7, %entry ], [ %20, %bb11.i.i ]197  %21 = icmp sgt i32 %__trip_count.0.i.i, 0198  br i1 %21, label %bb.i.i, label %bb13.i.i199 200bb13.i.i:                                         ; preds = %bb12.i.i201  %__last_addr.i.i.sroa.0.0.__last_addr.i.i.sroa.0.0.__last_addr.i.i.sroa.0.0. = load ptr, ptr %__last_addr.i.i.sroa.0, align 8202  %22 = ptrtoint ptr %__last_addr.i.i.sroa.0.0.__last_addr.i.i.sroa.0.0.__last_addr.i.i.sroa.0.0. to i32203  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0. = load ptr, ptr %__first_addr.i.i.sroa.0, align 8204  %23 = ptrtoint ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0. to i32205  %24 = sub i32 %22, %23206  %25 = ashr i32 %24, 2207  switch i32 %25, label %bb26.i.i [208  i32 1, label %bb22.i.i209  i32 2, label %bb18.i.i210  i32 3, label %bb14.i.i211  ]212 213bb14.i.i:                                         ; preds = %bb13.i.i214  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.7 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8215  %26 = load i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.7, align 4216  %27 = icmp eq i32 %26, 42217  br i1 %27, label %bb16.i.i, label %bb17.i.i218 219bb16.i.i:                                         ; preds = %bb14.i.i220  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit221 222bb17.i.i:                                         ; preds = %bb14.i.i223  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.8 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8224  %28 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.8, i32 1225  store ptr %28, ptr %__first_addr.i.i.sroa.0, align 8226  br label %bb18.i.i227 228bb18.i.i:                                         ; preds = %bb17.i.i, %bb13.i.i229  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.9 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8230  %29 = load i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.9, align 4231  %30 = icmp eq i32 %29, 42232  br i1 %30, label %bb20.i.i, label %bb21.i.i233 234bb20.i.i:                                         ; preds = %bb18.i.i235  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit236 237bb21.i.i:                                         ; preds = %bb18.i.i238  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.10 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8239  %31 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.10, i32 1240  store ptr %31, ptr %__first_addr.i.i.sroa.0, align 8241  br label %bb22.i.i242 243bb22.i.i:                                         ; preds = %bb21.i.i, %bb13.i.i244  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.11 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8245  %32 = load i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.11, align 4246  %33 = icmp eq i32 %32, 42247  br i1 %33, label %bb24.i.i, label %bb25.i.i248 249bb24.i.i:                                         ; preds = %bb22.i.i250  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit251 252bb25.i.i:                                         ; preds = %bb22.i.i253  %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.12 = load ptr, ptr %__first_addr.i.i.sroa.0, align 8254  %34 = getelementptr i32, ptr %__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.__first_addr.i.i.sroa.0.0.12, i32 1255  store ptr %34, ptr %__first_addr.i.i.sroa.0, align 8256  br label %bb26.i.i257 258bb26.i.i:                                         ; preds = %bb25.i.i, %bb13.i.i259  br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit260 261_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.i262  %.in.in = phi ptr [ %__last_addr.i.i.sroa.0, %bb26.i.i ], [ %__first_addr.i.i.sroa.0, %bb24.i.i ], [ %__first_addr.i.i.sroa.0, %bb20.i.i ], [ %__first_addr.i.i.sroa.0, %bb16.i.i ], [ %__first_addr.i.i.sroa.0, %bb10.i.i ], [ %__first_addr.i.i.sroa.0, %bb7.i.i ], [ %__first_addr.i.i.sroa.0, %bb4.i.i ], [ %__first_addr.i.i.sroa.0, %bb1.i.i ]263  br label %return264 265return:                                           ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiET_S7_S7_RKT0_.exit266  %35 = load ptr, ptr %.in.in, align 4267  ret ptr %35268}269 270; Function Attrs: argmemonly nofree nosync nounwind willreturn271declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0272 273attributes #0 = { argmemonly nofree nosync nounwind willreturn }274;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:275; CHECK-MODIFY-CFG: {{.*}}276; CHECK-PRESERVE-CFG: {{.*}}277