[llvm] 49ca010 - [Test] Add commit justifying revert of D110922

Max Kazantsev via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 9 00:34:03 PDT 2021


Author: Max Kazantsev
Date: 2021-10-09T14:32:46+07:00
New Revision: 49ca01047f0c1d0003ee49ebec5a6fa154aa6612

URL: https://github.com/llvm/llvm-project/commit/49ca01047f0c1d0003ee49ebec5a6fa154aa6612
DIFF: https://github.com/llvm/llvm-project/commit/49ca01047f0c1d0003ee49ebec5a6fa154aa6612.diff

LOG: [Test] Add commit justifying revert of D110922

Test by Arthur Eubanks!

Added: 
    llvm/test/Transforms/LoopUnroll/revert-D110922.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/LoopUnroll/revert-D110922.ll b/llvm/test/Transforms/LoopUnroll/revert-D110922.ll
new file mode 100644
index 0000000000000..e28a4178f0b8e
--- /dev/null
+++ b/llvm/test/Transforms/LoopUnroll/revert-D110922.ll
@@ -0,0 +1,141 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; ModuleID = 'reduced.ll'
+; RUN: opt < %s -loop-unroll -verify-loop-lcssa -S | FileCheck %s
+
+source_filename = "reduced.ll"
+
+%"class.std::__Cr::basic_ostream" = type { i32 (...)**, %"class.std::__Cr::basic_ios" }
+%"class.std::__Cr::basic_ios" = type { %"class.std::__Cr::ios_base", %"class.std::__Cr::basic_ostream"*, i32 }
+%"class.std::__Cr::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, i8*, i8*, void (i32, %"class.std::__Cr::ios_base"*, i32)**, i32*, i32, i32, i32*, i32, i32, i8**, i32, i32 }
+%"class.v8::internal::wasm::StructType" = type { i32, i32*, %"class.v8::internal::wasm::ValueType"*, i8* }
+%"class.v8::internal::wasm::ValueType" = type { i32 }
+
+$_ZNK2v88internal4wasm10StructType12field_offsetEj = comdat any
+
+declare hidden %"class.std::__Cr::basic_ostream"* @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc() local_unnamed_addr
+
+define hidden void @_ZN2v88internal10WasmStruct15WasmStructPrintERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE() local_unnamed_addr align 2 {
+; CHECK-LABEL: @_ZN2v88internal10WasmStruct15WasmStructPrintERNSt4__Cr13basic_ostreamIcNS2_11char_traitsIcEEEE(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CALL61:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()
+; CHECK-NEXT:    [[CMP2_NOT:%.*]] = icmp eq i32 [[CALL61]], 0
+; CHECK-NEXT:    br i1 [[CMP2_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]
+; CHECK:       for.body.preheader:
+; CHECK-NEXT:    br label [[FOR_BODY_PEEL_BEGIN:%.*]]
+; CHECK:       for.body.peel.begin:
+; CHECK-NEXT:    br label [[FOR_BODY_PEEL:%.*]]
+; CHECK:       for.body.peel:
+; CHECK-NEXT:    tail call void @llvm.assume(i1 true)
+; CHECK-NEXT:    [[CALL13_PEEL:%.*]] = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()
+; CHECK-NEXT:    switch i8 [[CALL13_PEEL]], label [[FOR_INC_PEEL:%.*]] [
+; CHECK-NEXT:    i8 5, label [[SW_BB33_PEEL:%.*]]
+; CHECK-NEXT:    i8 9, label [[SW_BB31:%.*]]
+; CHECK-NEXT:    i8 8, label [[SW_BB31]]
+; CHECK-NEXT:    i8 11, label [[SW_BB31]]
+; CHECK-NEXT:    i8 10, label [[SW_BB31]]
+; CHECK-NEXT:    ]
+; CHECK:       sw.bb33.peel:
+; CHECK-NEXT:    [[CALL34_PEEL:%.*]] = tail call %"class.std::__Cr::basic_ostream"* @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()
+; CHECK-NEXT:    br label [[FOR_INC_PEEL]]
+; CHECK:       for.inc.peel:
+; CHECK-NEXT:    [[CALL6_PEEL:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()
+; CHECK-NEXT:    [[CMP_PEEL:%.*]] = icmp ugt i32 [[CALL6_PEEL]], 1
+; CHECK-NEXT:    br i1 [[CMP_PEEL]], label [[FOR_BODY_PEEL_NEXT:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
+; CHECK:       for.body.peel.next:
+; CHECK-NEXT:    br label [[FOR_BODY_PEEL_NEXT1:%.*]]
+; CHECK:       for.body.peel.next1:
+; CHECK-NEXT:    br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]
+; CHECK:       for.body.preheader.peel.newph:
+; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
+; CHECK:       for.cond.cleanup.loopexit.loopexit:
+; CHECK-NEXT:    br label [[FOR_COND_CLEANUP_LOOPEXIT]]
+; CHECK:       for.cond.cleanup.loopexit:
+; CHECK-NEXT:    br label [[FOR_COND_CLEANUP]]
+; CHECK:       for.cond.cleanup:
+; CHECK-NEXT:    ret void
+; CHECK:       for.body:
+; CHECK-NEXT:    tail call void @llvm.assume(i1 false)
+; CHECK-NEXT:    [[CALL13:%.*]] = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()
+; CHECK-NEXT:    switch i8 [[CALL13]], label [[FOR_INC:%.*]] [
+; CHECK-NEXT:    i8 5, label [[SW_BB33:%.*]]
+; CHECK-NEXT:    i8 9, label [[SW_BB31_LOOPEXIT:%.*]]
+; CHECK-NEXT:    i8 8, label [[SW_BB31_LOOPEXIT]]
+; CHECK-NEXT:    i8 11, label [[SW_BB31_LOOPEXIT]]
+; CHECK-NEXT:    i8 10, label [[SW_BB31_LOOPEXIT]]
+; CHECK-NEXT:    ]
+; CHECK:       sw.bb31.loopexit:
+; CHECK-NEXT:    br label [[SW_BB31]]
+; CHECK:       sw.bb31:
+; CHECK-NEXT:    tail call void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j()
+; CHECK-NEXT:    unreachable
+; CHECK:       sw.bb33:
+; CHECK-NEXT:    [[CALL34:%.*]] = tail call %"class.std::__Cr::basic_ostream"* @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()
+; CHECK-NEXT:    br label [[FOR_INC]]
+; CHECK:       for.inc:
+; CHECK-NEXT:    [[CALL6:%.*]] = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()
+; CHECK-NEXT:    [[CMP:%.*]] = icmp ugt i32 [[CALL6]], 1
+; CHECK-NEXT:    br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
+;
+entry:
+  %call61 = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()
+  %cmp2.not = icmp eq i32 %call61, 0
+  br i1 %cmp2.not, label %for.cond.cleanup, label %for.body.preheader
+
+for.body.preheader:                               ; preds = %entry
+  br label %for.body
+
+for.cond.cleanup.loopexit:                        ; preds = %for.inc
+  br label %for.cond.cleanup
+
+for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry
+  ret void
+
+for.body:                                         ; preds = %for.body.preheader, %for.inc
+  %cmp.i3 = phi i1 [ false, %for.inc ], [ true, %for.body.preheader ]
+  tail call void @llvm.assume(i1 %cmp.i3)
+  %call13 = tail call i8 @_ZNK2v88internal4wasm9ValueType4kindEv()
+  switch i8 %call13, label %for.inc [
+  i8 5, label %sw.bb33
+  i8 9, label %sw.bb31
+  i8 8, label %sw.bb31
+  i8 11, label %sw.bb31
+  i8 10, label %sw.bb31
+  ]
+
+sw.bb31:                                          ; preds = %for.body, %for.body, %for.body, %for.body
+  tail call void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j()
+  unreachable
+
+sw.bb33:                                          ; preds = %for.body
+  %call34 = tail call %"class.std::__Cr::basic_ostream"* @_ZNSt4__CrlsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc()
+  br label %for.inc
+
+for.inc:                                          ; preds = %for.body, %sw.bb33
+  %call6 = tail call i32 @_ZNK2v88internal4wasm10StructType11field_countEv()
+  %cmp = icmp ugt i32 %call6, 1
+  br i1 %cmp, label %for.body, label %for.cond.cleanup.loopexit
+}
+
+declare hidden i32 @_ZNK2v88internal4wasm10StructType11field_countEv() local_unnamed_addr align 2
+
+define linkonce_odr hidden i32 @_ZNK2v88internal4wasm10StructType12field_offsetEj(%"class.v8::internal::wasm::StructType"* %this, i32 %index) local_unnamed_addr comdat align 2 {
+; CHECK-LABEL: @_ZNK2v88internal4wasm10StructType12field_offsetEj(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[INDEX:%.*]], 0
+; CHECK-NEXT:    tail call void @llvm.assume(i1 [[CMP]])
+; CHECK-NEXT:    ret i32 undef
+;
+entry:
+  %cmp = icmp eq i32 %index, 0
+  tail call void @llvm.assume(i1 %cmp)
+  ret i32 undef
+}
+
+declare hidden i8 @_ZNK2v88internal4wasm9ValueType4kindEv() local_unnamed_addr align 2
+
+declare void @_ZN2v84baseL18ReadUnalignedValueINS_8internal6ObjectEEET_j() local_unnamed_addr
+
+; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn
+declare void @llvm.assume(i1 noundef) #0
+
+attributes #0 = { inaccessiblememonly nofree nosync nounwind willreturn }


        


More information about the llvm-commits mailing list