From 31822e0530be06861c0c5d2becd6b8f27705d0e1 Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Mon, 25 Oct 2021 18:25:59 +0700 Subject: [PATCH] [Test] Add test for PR52290 Demonstrates hang in iterativelySimplifyCFG. --- llvm/test/Transforms/SimplifyCFG/pr52290.ll | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 llvm/test/Transforms/SimplifyCFG/pr52290.ll diff --git a/llvm/test/Transforms/SimplifyCFG/pr52290.ll b/llvm/test/Transforms/SimplifyCFG/pr52290.ll new file mode 100644 index 0000000..02e1455 --- /dev/null +++ b/llvm/test/Transforms/SimplifyCFG/pr52290.ll @@ -0,0 +1,49 @@ +; RUN: opt < %s -simplifycfg -S | FileCheck %s +; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s + +; XFAIL: * +; REQUIRES: asserts +; FIXME: Fails due to infinite loop in iterativelySimplifyCFG. + +; ModuleID = 'test/Transforms/SimplifyCFG/pr-new.ll' +source_filename = "test/Transforms/SimplifyCFG/pr-new.ll" + +define i32 @test(float %arg) gc "statepoint-example" personality i32* ()* @blam { +; CHECK-LABEL: @test +bb: + %tmp = call i1 @llvm.experimental.widenable.condition() + br i1 %tmp, label %bb2, label %bb1 + +bb1: ; preds = %bb + br i1 undef, label %bb7, label %bb5 + +bb2: ; preds = %bb + %tmp3 = getelementptr inbounds i8, i8 addrspace(1)* undef, i64 16 + br i1 undef, label %bb6, label %bb4 + +bb4: ; preds = %bb2 + call void @snork() [ "deopt"() ] + unreachable + +bb5: ; preds = %bb1 + ret i32 0 + +bb6: ; preds = %bb2 + br label %bb7 + +bb7: ; preds = %bb6, %bb1 + %tmp8 = call i32 (...) @llvm.experimental.deoptimize.i32(i32 10) [ "deopt"() ] + ret i32 %tmp8 +} + +declare i32* @blam() + +declare void @snork() + +declare i32 @llvm.experimental.deoptimize.i32(...) + +; Function Attrs: inaccessiblememonly nofree nosync nounwind speculatable willreturn +declare i1 @llvm.experimental.widenable.condition() #0 + +attributes #0 = { inaccessiblememonly nofree nosync nounwind speculatable willreturn } + -- 2.7.4