| # TODO(boomanaiden154): Remove this and use gc-empty-basic-blocks.ll directly. |
| # This should be trivial once we have an asm printer setup for X86 and at least |
| # a pipeline skeleton. |
| # RUN: llc %s -mtriple=x86_64 -passes=gc-empty-basic-blocks -o - | FileCheck %s |
| --- | |
| define void @foo(i1 zeroext %0) #0 { |
| br i1 %0, label %2, label %empty_block |
| |
| 2: ; preds = %1 |
| %3 = call i32 @baz() |
| br label %4 |
| |
| empty_block: ; preds = %1 |
| unreachable |
| |
| 4: ; preds = %2 |
| ret void |
| } |
| |
| declare i32 @baz() |
| |
| attributes #0 = { nounwind } |
| ... |
| --- |
| name: foo |
| alignment: 16 |
| body: | |
| bb.0: |
| successors: %bb.1(0x40000000), %bb.2(0x40000000) |
| liveins: $edi |
| |
| frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp |
| $al = MOV8rr $dil, implicit killed $edi |
| TEST8ri killed renamable $al, 1, implicit-def $eflags |
| JCC_1 %bb.1, 5, implicit killed $eflags |
| JMP_1 %bb.2 |
| |
| bb.1: |
| successors: %bb.3(0x80000000) |
| |
| CALL64pcrel32 target-flags(x86-plt) @baz, csr_64, implicit $rsp, implicit $ssp, implicit-def $eax |
| JMP_1 %bb.3 |
| |
| bb.2.empty_block: |
| successors: |
| |
| bb.3: |
| $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp |
| RET64 |
| ... |
| # CHECK-NOT: bb.2.empty_block: |