## Test that in the presence of SHT_LLVM_BB_ADDR_MAP sections which also ## contain PGO data, --symbolize-operands is able to label the basic blocks ## correctly. ## Check the case where we only have entry counts. # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-objdump %t1 -d --symbolize-operands --no-show-raw-insn --no-leading-addr | \ # RUN: FileCheck %s --check-prefix=ENTRYCOUNT --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text.foo Type: SHT_PROGBITS Address: 0x0 Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: '50' - Name: .llvm_bb_addr_map.foo Type: SHT_LLVM_BB_ADDR_MAP Link: .text.foo Entries: - Version: 2 Feature: 0x1 BBRanges: - BaseAddress: 0x0 BBEntries: - ID: 3 AddressOffset: 0x0 Size: 0x1 Metadata: 0x1 PGOAnalyses: - FuncEntryCount: 1000 Symbols: - Name: foo Section: .text.foo Value: 0x0 # ENTRYCOUNT: : # ENTRYCOUNT: (Entry count: 1000): ## Check the case where we have entry points and block frequency information # RUN: yaml2obj %s --docnum=2 -o %t2 # RUN: llvm-objdump %t2 -d --symbolize-operands --no-show-raw-insn --no-leading-addr | \ # RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRYCOUNT-BLOCKFREQ # RUN: llvm-objdump %t2 -d --symbolize-operands --pretty-pgo-analysis-map --no-show-raw-insn --no-leading-addr | \ # RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRYCOUNT-BLOCKFREQ-PRETTY --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text.foo Type: SHT_PROGBITS Address: 0x0 Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: '503b0505200000907d02ebf5c3' - Name: .llvm_bb_addr_map.foo Type: SHT_LLVM_BB_ADDR_MAP Link: .text.foo Entries: - Version: 2 Feature: 0x3 BBRanges: - BaseAddress: 0x0 BBEntries: - ID: 3 AddressOffset: 0x0 Size: 0x1 Metadata: 0x1 - ID: 1 AddressOffset: 0x0 Size: 0x6 Metadata: 0x0 - ID: 2 AddressOffset: 0x1 Size: 0x4 Metadata: 0x0 - ID: 5 AddressOffset: 0x0 Size: 0x1 Metadata: 0x2 PGOAnalyses: - FuncEntryCount: 1000 PGOBBEntries: - BBFreq: 1000 - BBFreq: 133 - BBFreq: 18 - BBFreq: 1000 Symbols: - Name: foo Section: .text.foo Value: 0x0 # ENTRYCOUNT-BLOCKFREQ:: # ENTRYCOUNT-BLOCKFREQ: (Entry count: 1000, Frequency: 1000): # ENTRYCOUNT-BLOCKFREQ: (Frequency: 133): # ENTRYCOUNT-BLOCKFREQ: (Frequency: 18): # ENTRYCOUNT-BLOCKFREQ: (Frequency: 1000): # ENTRYCOUNT-BLOCKFREQ-PRETTY:: # ENTRYCOUNT-BLOCKFREQ-PRETTY: (Entry count: 1000, Frequency: 1.0): # ENTRYCOUNT-BLOCKFREQ-PRETTY: (Frequency: 0.133): # ENTRYCOUNT-BLOCKFREQ-PRETTY: (Frequency: 0.018): # ENTRYCOUNT-BLOCKFREQ-PRETTY: (Frequency: 1.0): ## Check the case where we have entry points, block frequency, and branch ## proabability information. # RUN: yaml2obj %s --docnum=3 -o %t3 # RUN: llvm-objdump %t3 -d --symbolize-operands --no-show-raw-insn --no-leading-addr | \ # RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRY-FREQ-PROB # RUN: llvm-objdump %t3 -d --symbolize-operands --pretty-pgo-analysis-map --no-show-raw-insn --no-leading-addr | \ # RUN: FileCheck --match-full-lines --strict-whitespace %s --check-prefix=ENTRY-FREQ-PROB-PRETTY # RUN: llvm-objdump %t3 -d --pretty-pgo-analysis-map --no-show-raw-insn --no-leading-addr 2>&1 | \ # RUN: FileCheck %s --check-prefix=MISSING-SYMBOLIZE-OPERANDS --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text.foo Type: SHT_PROGBITS Address: 0x0 Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: '503b0505200000907d02ebf5c3' - Name: .llvm_bb_addr_map.foo Type: SHT_LLVM_BB_ADDR_MAP Link: .text.foo Entries: - Version: 2 Feature: 0x7 BBRanges: - BaseAddress: 0x0 BBEntries: - ID: 3 AddressOffset: 0x0 Size: 0x1 Metadata: 0x1 - ID: 1 AddressOffset: 0x0 Size: 0x6 Metadata: 0x0 - ID: 2 AddressOffset: 0x1 Size: 0x4 Metadata: 0x0 - ID: 5 AddressOffset: 0x0 Size: 0x1 Metadata: 0x2 PGOAnalyses: - FuncEntryCount: 1000 PGOBBEntries: - BBFreq: 1000 Successors: - ID: 1 BrProb: 0x10000000 - ID: 2 BrProb: 0x15000000 - ID: 3 BrProb: 0x50000000 - BBFreq: 133 Successors: - ID: 2 BrProb: 0x10000000 - ID: 3 BrProb: 0x70000000 - BBFreq: 18 Successors: - ID: 3 BrProb: 0x80000000 - BBFreq: 1000 Successors: [] Symbols: - Name: foo Section: .text.foo Value: 0x0 # ENTRY-FREQ-PROB:: # ENTRY-FREQ-PROB: (Entry count: 1000, Frequency: 1000, Successors: BB1:10000000, BB2:15000000, BB3:50000000): # ENTRY-FREQ-PROB: (Frequency: 133, Successors: BB2:10000000, BB3:70000000): # ENTRY-FREQ-PROB: (Frequency: 18, Successors: BB3:80000000): # ENTRY-FREQ-PROB: (Frequency: 1000): # ENTRY-FREQ-PROB-PRETTY:: # ENTRY-FREQ-PROB-PRETTY: (Entry count: 1000, Frequency: 1.0, Successors: BB1:[0x10000000 / 0x80000000 = 12.50%], BB2:[0x15000000 / 0x80000000 = 16.41%], BB3:[0x50000000 / 0x80000000 = 62.50%]): # ENTRY-FREQ-PROB-PRETTY: (Frequency: 0.133, Successors: BB2:[0x10000000 / 0x80000000 = 12.50%], BB3:[0x70000000 / 0x80000000 = 87.50%]): # ENTRY-FREQ-PROB-PRETTY: (Frequency: 0.018, Successors: BB3:[0x80000000 / 0x80000000 = 100.00%]): # ENTRY-FREQ-PROB-PRETTY: (Frequency: 1.0): # MISSING-SYMBOLIZE-OPERANDS: warning: --symbolize-operands must be enabled for --pretty-pgo-analysis-map to have an effect