llvm-project/llvm/test/Examples/IRTransforms/SimplifyCFG/tut-simplify-cfg4-multiple-duplicate-cfg-updates.ll
Sebastian Peryt d291f1fd09 [LegacyPM] Port example pass SimplifyCFG to new PM
This is part of effort in removing -enable-new-pm flag.
As a prat of this effort one of example passes SimplifyCFG must
be ported to new PM which will allow to remove the flag
calls from the tests that are using this pass.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D137103
2023-01-10 15:42:01 -08:00

41 lines
1.5 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v1 < %s -S -verify-dom-info | FileCheck %s
; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v2 < %s -S -verify-dom-info | FileCheck %s
; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v3 < %s -S -verify-dom-info | FileCheck %s
; Check that we do not crash when we remove edges multiple times in
; the DomTreeUpdater.
define void @test() {
; CHECK-LABEL: @test(
; CHECK-NEXT: entry:
; CHECK-NEXT: switch i8 undef, label [[IF_THEN_EPIL:%.*]] [
; CHECK-NEXT: i8 32, label [[FOR_INC_EPIL:%.*]]
; CHECK-NEXT: i8 46, label [[FOR_INC_EPIL]]
; CHECK-NEXT: i8 95, label [[FOR_INC_EPIL]]
; CHECK-NEXT: i8 45, label [[FOR_INC_EPIL]]
; CHECK-NEXT: i8 126, label [[FOR_INC_EPIL]]
; CHECK-NEXT: ]
; CHECK: if.then.epil:
; CHECK-NEXT: unreachable
; CHECK: for.inc.epil:
; CHECK-NEXT: ret void
;
entry:
br label %for.body.epil
for.body.epil: ; preds = %entry
switch i8 undef, label %if.then.epil [
i8 32, label %for.inc.epil
i8 46, label %for.inc.epil
i8 95, label %for.inc.epil
i8 45, label %for.inc.epil
i8 126, label %for.inc.epil
]
if.then.epil: ; preds = %for.body.epil
unreachable
for.inc.epil: ; preds = %for.body.epil, %for.body.epil, %for.body.epil, %for.body.epil, %for.body.epil
ret void
}