; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -structurizecfg %s -o - | FileCheck %s define void @test(i1 %b1, i1 %b2, i1 %b3, i1 %b4) { ; CHECK-LABEL: @test( ; CHECK-NEXT: A: ; CHECK-NEXT: [[B2_INV:%.*]] = xor i1 [[B2:%.*]], true ; CHECK-NEXT: br i1 [[B1:%.*]], label [[B:%.*]], label [[H:%.*]] ; CHECK: B: ; CHECK-NEXT: br label [[C:%.*]] ; CHECK: C: ; CHECK-NEXT: br i1 [[B2_INV]], label [[E:%.*]], label [[FLOW:%.*]] ; CHECK: Flow: ; CHECK-NEXT: [[TMP0:%.*]] = phi i1 [ [[B3:%.*]], [[E]] ], [ true, [[C]] ] ; CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ false, [[E]] ], [ true, [[C]] ] ; CHECK-NEXT: br i1 [[TMP0]], label [[FLOW1:%.*]], label [[C]] ; CHECK: Flow1: ; CHECK-NEXT: br i1 [[TMP1]], label [[D:%.*]], label [[F:%.*]] ; CHECK: D: ; CHECK-NEXT: br label [[F]] ; CHECK: E: ; CHECK-NEXT: br label [[FLOW]] ; CHECK: F: ; CHECK-NEXT: br label [[G:%.*]] ; CHECK: G: ; CHECK-NEXT: br i1 [[B4:%.*]], label [[FLOW2:%.*]], label [[B]] ; CHECK: Flow2: ; CHECK-NEXT: br label [[H]] ; CHECK: H: ; CHECK-NEXT: ret void ; A: br i1 %b1, label %B, label %H B: br label %C C: br i1 %b2, label %D, label %E D: br label %F E: br i1 %b3, label %F, label %C F: br label %G G: br i1 %b4, label %H, label %B H: ret void }