## 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. ## Fails on windows (https://github.com/llvm/llvm-project/issues/60013). # UNSUPPORTED: system-windows ## 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 Address: 0x0 Feature: 0x1 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 %s --check-prefix=ENTRYCOUNT-BLOCKFREQ --- !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 Address: 0x0 Feature: 0x3 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): ## 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 %s --check-prefix=ENTRY-FREQ-PROB --- !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 Address: 0x0 Feature: 0x7 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: 0x22222222 - ID: 2 BrProb: 0x33333333 - ID: 3 BrProb: 0xaaaaaaaa - BBFreq: 133 Successors: - ID: 2 BrProb: 0x11111111 - ID: 3 BrProb: 0xeeeeeeee - BBFreq: 18 Successors: - ID: 3 BrProb: 0xffffffff - BBFreq: 1000 Successors: [] Symbols: - Name: foo Section: .text.foo Value: 0x0 # ENTRY-FREQ-PROB: : # ENTRY-FREQ-PROB: (Entry count: 1000, Frequency: 1000, Successors: BB1:22222222, BB2:33333333, BB3:aaaaaaaa): # ENTRY-FREQ-PROB: (Frequency: 133, Successors: BB2:11111111, BB3:eeeeeeee): # ENTRY-FREQ-PROB: (Frequency: 18, Successors: BB3:ffffffff): # ENTRY-FREQ-PROB: (Frequency: 1000):