# RUN: llc -mtriple=x86_64-- -o - %s -run-pass=none -verify-machineinstrs -simplify-mir | FileCheck %s --- # We shouldn't need any explicit successor lists in these examples # CHECK-LABEL: name: func0 # CHECK: bb.0: # CHECK-NOT: successors # CHECK: JCC_1 %bb.1, 4, implicit undef $eflags # CHECK: JMP_1 %bb.3 # CHECK: bb.1: # CHECK-NOT: successors # CHECK: bb.2: # CHECK-NOT: successors # CHECK: JCC_1 %bb.1, 4, implicit undef $eflags # CHECK: bb.3: # CHECK: RET64 undef $eax name: func0 body: | bb.0: JCC_1 %bb.1, 4, implicit undef $eflags JMP_1 %bb.3 bb.1: bb.2: JCC_1 %bb.1, 4, implicit undef $eflags bb.3: JCC_1 %bb.4, 4, implicit undef $eflags ; condjump+fallthrough to same block bb.4: RET64 undef $eax ... --- # Some cases that need explicit successors: # CHECK-LABEL: name: func1 name: func1 body: | bb.0: ; CHECK: bb.0: ; CHECK: successors: %bb.3, %bb.1 successors: %bb.3, %bb.1 ; different order than operands JCC_1 %bb.1, 4, implicit undef $eflags JMP_1 %bb.3 bb.1: ; CHECK: bb.1: ; CHECK: successors: %bb.2, %bb.1 successors: %bb.2, %bb.1 ; different order (fallthrough variant) JCC_1 %bb.1, 4, implicit undef $eflags bb.2: ; CHECK: bb.2: ; CHECK: successors: %bb.1(0x60000000), %bb.3(0x20000000) successors: %bb.1(3), %bb.3(1) ; branch probabilities not normalized JCC_1 %bb.1, 4, implicit undef $eflags bb.3: ; CHECK: bb.3: ; CHECK: RET64 undef $eax RET64 undef $eax ...