142 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; ModuleID = 'reduced.ll'3; RUN: opt < %s -passes=loop-unroll -verify-loop-lcssa -S | FileCheck %s4 5source_filename = "reduced.ll"6 7%"class.std::__Cr::basic_ostream" = type { ptr, %"class.std::__Cr::basic_ios" }8%"class.std::__Cr::basic_ios" = type { %"class.std::__Cr::ios_base", ptr, i32 }9%"class.std::__Cr::ios_base" = type { ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, i32, ptr, i32, i32 }10%"class.v8::internal::wasm::StructType" = type { i32, ptr, ptr, ptr }11%"class.v8::internal::wasm::ValueType" = type { i32 }12 13$_ZNK2v88internal4wasm10StructType12field_offsetEj = comdat any14 15declare hidden ptr @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc() local_unnamed_addr16 17define hidden void @_ZN2v88internal10WasmStruct15WasmStructPrintERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE() local_unnamed_addr align 2 {18; CHECK-LABEL: @_ZN2v88internal10WasmStruct15WasmStructPrintERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE(19; CHECK-NEXT: entry:20; CHECK-NEXT: [[CALL61:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()21; CHECK-NEXT: [[CMP2_NOT:%.*]] = icmp eq i32 [[CALL61]], 022; CHECK-NEXT: br i1 [[CMP2_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]23; CHECK: for.body.preheader:24; CHECK-NEXT: br label [[FOR_BODY_PEEL_BEGIN:%.*]]25; CHECK: for.body.peel.begin:26; CHECK-NEXT: br label [[FOR_BODY_PEEL:%.*]]27; CHECK: for.body.peel:28; CHECK-NEXT: tail call void @llvm.assume(i1 true)29; CHECK-NEXT: [[CALL13_PEEL:%.*]] = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()30; CHECK-NEXT: switch i8 [[CALL13_PEEL]], label [[FOR_INC_PEEL:%.*]] [31; CHECK-NEXT: i8 5, label [[SW_BB33_PEEL:%.*]]32; CHECK-NEXT: i8 9, label [[SW_BB31:%.*]]33; CHECK-NEXT: i8 8, label [[SW_BB31]]34; CHECK-NEXT: i8 11, label [[SW_BB31]]35; CHECK-NEXT: i8 10, label [[SW_BB31]]36; CHECK-NEXT: ]37; CHECK: sw.bb33.peel:38; CHECK-NEXT: [[CALL34_PEEL:%.*]] = tail call ptr @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()39; CHECK-NEXT: br label [[FOR_INC_PEEL]]40; CHECK: for.inc.peel:41; CHECK-NEXT: [[CALL6_PEEL:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()42; CHECK-NEXT: [[CMP_PEEL:%.*]] = icmp ugt i32 [[CALL6_PEEL]], 143; CHECK-NEXT: br i1 [[CMP_PEEL]], label [[FOR_BODY_PEEL_NEXT:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]44; CHECK: for.body.peel.next:45; CHECK-NEXT: br label [[FOR_BODY_PEEL_NEXT1:%.*]]46; CHECK: for.body.peel.next1:47; CHECK-NEXT: br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]48; CHECK: for.body.preheader.peel.newph:49; CHECK-NEXT: br label [[FOR_BODY:%.*]]50; CHECK: for.cond.cleanup.loopexit.loopexit:51; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]52; CHECK: for.cond.cleanup.loopexit:53; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]54; CHECK: for.cond.cleanup:55; CHECK-NEXT: ret void56; CHECK: for.body:57; CHECK-NEXT: tail call void @llvm.assume(i1 false)58; CHECK-NEXT: [[CALL13:%.*]] = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()59; CHECK-NEXT: switch i8 [[CALL13]], label [[FOR_INC:%.*]] [60; CHECK-NEXT: i8 5, label [[SW_BB33:%.*]]61; CHECK-NEXT: i8 9, label [[SW_BB31_LOOPEXIT:%.*]]62; CHECK-NEXT: i8 8, label [[SW_BB31_LOOPEXIT]]63; CHECK-NEXT: i8 11, label [[SW_BB31_LOOPEXIT]]64; CHECK-NEXT: i8 10, label [[SW_BB31_LOOPEXIT]]65; CHECK-NEXT: ]66; CHECK: sw.bb31.loopexit:67; CHECK-NEXT: br label [[SW_BB31]]68; CHECK: sw.bb31:69; CHECK-NEXT: tail call void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j()70; CHECK-NEXT: unreachable71; CHECK: sw.bb33:72; CHECK-NEXT: [[CALL34:%.*]] = tail call ptr @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()73; CHECK-NEXT: br label [[FOR_INC]]74; CHECK: for.inc:75; CHECK-NEXT: [[CALL6:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()76; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[CALL6]], 177; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]78;79entry:80 %call61 = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()81 %cmp2.not = icmp eq i32 %call61, 082 br i1 %cmp2.not, label %for.cond.cleanup, label %for.body.preheader83 84for.body.preheader: ; preds = %entry85 br label %for.body86 87for.cond.cleanup.loopexit: ; preds = %for.inc88 br label %for.cond.cleanup89 90for.cond.cleanup: ; preds = %for.cond.cleanup.loopexit, %entry91 ret void92 93for.body: ; preds = %for.body.preheader, %for.inc94 %cmp.i3 = phi i1 [ false, %for.inc ], [ true, %for.body.preheader ]95 tail call void @llvm.assume(i1 %cmp.i3)96 %call13 = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()97 switch i8 %call13, label %for.inc [98 i8 5, label %sw.bb3399 i8 9, label %sw.bb31100 i8 8, label %sw.bb31101 i8 11, label %sw.bb31102 i8 10, label %sw.bb31103 ]104 105sw.bb31: ; preds = %for.body, %for.body, %for.body, %for.body106 tail call void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j()107 unreachable108 109sw.bb33: ; preds = %for.body110 %call34 = tail call ptr @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()111 br label %for.inc112 113for.inc: ; preds = %for.body, %sw.bb33114 %call6 = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()115 %cmp = icmp ugt i32 %call6, 1116 br i1 %cmp, label %for.body, label %for.cond.cleanup.loopexit117}118 119declare hidden i32 @_ZNK2v88internal4wasm10StructType11field_countEv() local_unnamed_addr align 2120 121define linkonce_odr hidden i32 @_ZNK2v88internal4wasm10StructType12field_offsetEj(ptr %this, i32 %index) local_unnamed_addr comdat align 2 {122; CHECK-LABEL: @_ZNK2v88internal4wasm10StructType12field_offsetEj(123; CHECK-NEXT: entry:124; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[INDEX:%.*]], 0125; CHECK-NEXT: tail call void @llvm.assume(i1 [[CMP]])126; CHECK-NEXT: ret i32 undef127;128entry:129 %cmp = icmp eq i32 %index, 0130 tail call void @llvm.assume(i1 %cmp)131 ret i32 undef132}133 134declare hidden i8 @_ZNK2v88internal4wasm9ValueType4kindEv() local_unnamed_addr align 2135 136declare void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j() local_unnamed_addr137 138; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn139declare void @llvm.assume(i1 noundef) #0140 141attributes #0 = { inaccessiblememonly nofree nosync nounwind willreturn }142