|  | ;; This test verifies that basic-block-sections works with address-taken basic blocks. | 
|  | ; RUN: llc < %s -mtriple=x86_64 -basic-block-sections=all | FileCheck %s | 
|  |  | 
|  | define void @foo(i1 zeroext %0) nounwind { | 
|  | entry: | 
|  | %1 = select i1 %0, ptr blockaddress(@foo, %bb1), ptr blockaddress(@foo, %bb2) ; <ptr> [#uses=1] | 
|  | indirectbr ptr %1, [label %bb1, label %bb2] | 
|  |  | 
|  | ; CHECK:         .section .text.foo,"ax",@progbits | 
|  | ; CHECK-LABEL: foo: | 
|  | ; CHECK:         movl    $.Ltmp0, %eax | 
|  | ; CHECK-NEXT:    movl    $.Ltmp1, %ecx | 
|  | ; CHECK-NEXT:    cmovneq %rax, %rcx | 
|  | ; CHECK-NEXT:    jmpq    *%rcx | 
|  |  | 
|  | bb1:                                                ; preds = %entry | 
|  | %2 = call i32 @bar() | 
|  | ret void | 
|  | ; CHECK:         .section .text.foo,"ax",@progbits,unique,1 | 
|  | ; CHECK-NEXT:  .Ltmp0: | 
|  | ; CHECK-NEXT:  foo.__part.1 | 
|  | ; CHECK-NEXT:    callq   bar | 
|  | ; | 
|  |  | 
|  | bb2:                                                ; preds = %entry | 
|  | %3 = call i32 @baz() | 
|  | ret void | 
|  | ; CHECK:         .section .text.foo,"ax",@progbits,unique,2 | 
|  | ; CHECK-NEXT:  .Ltmp1: | 
|  | ; CHECK-NEXT:  foo.__part.2 | 
|  | ; CHECK-NEXT:    callq   baz | 
|  | } | 
|  |  | 
|  | declare i32 @bar() | 
|  | declare i32 @baz() |