| # REQUIRES: x86 | 
 |  | 
 | # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t | 
 | # RUN: ld.lld -e A %t -o %t2 | 
 | # RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=NOSORT | 
 |  | 
 | # RUN: echo "A B 10" > %t.call_graph | 
 | # RUN: echo "A B 10" >> %t.call_graph | 
 | # RUN: echo "Aa B 80" >> %t.call_graph | 
 | # RUN: echo "A C 40" >> %t.call_graph | 
 | # RUN: echo "B C 30" >> %t.call_graph | 
 | # RUN: echo "C D 90" >> %t.call_graph | 
 | # RUN: echo "PP TS 100" >> %t.call_graph | 
 | # RUN: echo "_init2 _init 24567837" >> %t.call_graph | 
 | # RUN: echo "TS QC 9001" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds0 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds1 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds2 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds3 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds4 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds5 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds6 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds7 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds8 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds9 TooManyPreds 10" >> %t.call_graph | 
 | # RUN: echo "TooManyPreds10 TooManyPreds 11" >> %t.call_graph | 
 | # RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph --call-graph-profile-sort=hfsort -o %t2 | 
 | # RUN: llvm-readobj --symbols %t2 | FileCheck %s | 
 |  | 
 | # RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph --call-graph-profile-sort=cdsort -o %t2 | 
 | # RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=CDSORT | 
 | ## --call-graph-profile-sort=cdsort is the default. | 
 | # RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph -o %t2b | 
 | # RUN: cmp %t2 %t2b | 
 |  | 
 | # RUN: not ld.lld -e A %t --call-graph-ordering-file %t.call_graph --call-graph-profile-sort=sort \ | 
 | # RUN:   -o /dev/null 2>&1 | FileCheck %s --check-prefix=UNKNOWN | 
 |  | 
 | # UNKNOWN: error: unknown --call-graph-profile-sort= value: sort | 
 |  | 
 |     .section    .text.D,"ax",@progbits | 
 | D: | 
 |     retq | 
 |  | 
 |     .section    .text.C,"ax",@progbits | 
 |     .globl  C | 
 | C: | 
 |     retq | 
 |  | 
 |     .section    .text.B,"ax",@progbits | 
 |     .globl  B | 
 | B: | 
 |     retq | 
 |  | 
 |     .section    .text.A,"ax",@progbits | 
 |     .globl  A | 
 | A: | 
 | Aa: | 
 |     retq | 
 |  | 
 |     .section    .ponies,"ax",@progbits,unique,1 | 
 |     .globl TS | 
 | TS: | 
 |     retq | 
 |  | 
 |     .section    .ponies,"ax",@progbits,unique,2 | 
 |     .globl PP | 
 | PP: | 
 |     retq | 
 |  | 
 |     .section    .other,"ax",@progbits,unique,1 | 
 |     .globl QC | 
 | QC: | 
 |     retq | 
 |  | 
 |     .section    .other,"ax",@progbits,unique,2 | 
 |     .globl GB | 
 | GB: | 
 |     retq | 
 |  | 
 |     .section    .init,"ax",@progbits,unique,1 | 
 |     .globl _init | 
 | _init: | 
 |     retq | 
 |  | 
 |     .section    .init,"ax",@progbits,unique,2 | 
 |     .globl _init2 | 
 | _init2: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds,"ax",@progbits | 
 | TooManyPreds: | 
 |     retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 | 	retq | 
 |  | 
 |     .section    .text.TooManyPreds0,"ax",@progbits | 
 | TooManyPreds0: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds1,"ax",@progbits | 
 | TooManyPreds1: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds2,"ax",@progbits | 
 | TooManyPreds2: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds3,"ax",@progbits | 
 | TooManyPreds3: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds4,"ax",@progbits | 
 | TooManyPreds4: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds5,"ax",@progbits | 
 | TooManyPreds5: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds6,"ax",@progbits | 
 | TooManyPreds6: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds7,"ax",@progbits | 
 | TooManyPreds7: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds8,"ax",@progbits | 
 | TooManyPreds8: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds9,"ax",@progbits | 
 | TooManyPreds9: | 
 |     retq | 
 |  | 
 |     .section    .text.TooManyPreds10,"ax",@progbits | 
 | TooManyPreds10: | 
 |     retq | 
 |  | 
 | # CHECK:          Name: D | 
 | # CHECK-NEXT:     Value: 0x201123 | 
 | # CHECK:          Name: TooManyPreds | 
 | # CHECK-NEXT:     Value: 0x201124 | 
 | # CHECK:          Name: TooManyPreds10 | 
 | # CHECK-NEXT:     Value: 0x201138 | 
 | # CHECK:          Name: C | 
 | # CHECK-NEXT:     Value: 0x201122 | 
 | # CHECK:          Name: B | 
 | # CHECK-NEXT:     Value: 0x201121 | 
 | # CHECK:          Name: A | 
 | # CHECK-NEXT:     Value: 0x201120 | 
 | # CHECK:          Name: TS | 
 | # CHECK-NEXT:     Value: 0x20113D | 
 | # CHECK:          Name: PP | 
 | # CHECK-NEXT:     Value: 0x20113C | 
 | # CHECK:          Name: QC | 
 | # CHECK-NEXT:     Value: 0x20113E | 
 | # CHECK:          Name: GB | 
 | # CHECK-NEXT:     Value: 0x20113F | 
 | # CHECK:          Name: _init | 
 | # CHECK-NEXT:     Value: 0x201140 | 
 | # CHECK:          Name: _init2 | 
 | # CHECK-NEXT:     Value: 0x201141 | 
 |  | 
 | # CDSORT:          Name: D | 
 | # CDSORT-NEXT:     Value: 0x201123 | 
 | # CDSORT:          Name: TooManyPreds | 
 | # CDSORT-NEXT:     Value: 0x20112F | 
 | # CDSORT:          Name: TooManyPreds10 | 
 | # CDSORT-NEXT:     Value: 0x20112E | 
 | # CDSORT:          Name: C | 
 | # CDSORT-NEXT:     Value: 0x201122 | 
 | # CDSORT:          Name: B | 
 | # CDSORT-NEXT:     Value: 0x201121 | 
 | # CDSORT:          Name: A | 
 | # CDSORT-NEXT:     Value: 0x201120 | 
 | # CDSORT:          Name: TS | 
 | # CDSORT-NEXT:     Value: 0x20113D | 
 | # CDSORT:          Name: PP | 
 | # CDSORT-NEXT:     Value: 0x20113C | 
 | # CDSORT:          Name: QC | 
 | # CDSORT-NEXT:     Value: 0x20113E | 
 | # CDSORT:          Name: GB | 
 | # CDSORT-NEXT:     Value: 0x20113F | 
 | # CDSORT:          Name: _init | 
 | # CDSORT-NEXT:     Value: 0x201140 | 
 | # CDSORT:          Name: _init2 | 
 | # CDSORT-NEXT:     Value: 0x201141 | 
 |  | 
 | # NOSORT:          Name: D | 
 | # NOSORT-NEXT:     Value: 0x201120 | 
 | # NOSORT:          Name: TooManyPreds | 
 | # NOSORT-NEXT:     Value: 0x201124 | 
 | # NOSORT:          Name: TooManyPreds10 | 
 | # NOSORT-NEXT:     Value: 0x201138 | 
 | # NOSORT:          Name: C | 
 | # NOSORT-NEXT:     Value: 0x201121 | 
 | # NOSORT:          Name: B | 
 | # NOSORT-NEXT:     Value: 0x201122 | 
 | # NOSORT:          Name: A | 
 | # NOSORT-NEXT:     Value: 0x201123 | 
 | # NOSORT:          Name: TS | 
 | # NOSORT-NEXT:     Value: 0x201139 | 
 | # NOSORT:          Name: PP | 
 | # NOSORT-NEXT:     Value: 0x20113A | 
 | # NOSORT:          Name: QC | 
 | # NOSORT-NEXT:     Value: 0x20113B | 
 | # NOSORT:          Name: GB | 
 | # NOSORT-NEXT:     Value: 0x20113C | 
 | # NOSORT:          Name: _init | 
 | # NOSORT-NEXT:     Value: 0x20113D | 
 | # NOSORT:          Name: _init2 | 
 | # NOSORT-NEXT:     Value: 0x20113E |