## Check how yaml2obj produces PGO Analysis Map in .llvm_bb_addr_map section. # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s # Case 4: Specify Entries. # CHECK: Name: .llvm_bb_addr_map (1) # CHECK: SectionData ( # CHECK-NEXT: 0000: 02872000 00000000 0000010B 010203E8 # CHECK-NEXT: 0010: 07E80764 020CEEDD BBF70E28 0D91A2C4 # CHECK-NEXT: 0020: 880100 # CHECK-NEXT: ) # Case 7: Not including a field which is enabled in feature doesn't emit value # CHECK: Name: .llvm_bb_addr_map (1) # CHECK: SectionData ( # CHECK-NEXT: 0000: 02012000 00000000 0000020D 010203 | # CHECK-NEXT: ) --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Sections: ## Test the following cases: ## 1) We can produce an .llvm_bb_addr_map section from a description with ## Entries and PGO Analysis and Post Link data. - Name: '.llvm_bb_addr_map (1)' Type: SHT_LLVM_BB_ADDR_MAP Entries: - Version: 2 Feature: 0x87 BBRanges: - BaseAddress: 0x0000000000000020 BBEntries: - ID: 11 AddressOffset: 0x00000001 Size: 0x00000002 Metadata: 0x00000003 PGOAnalyses: - FuncEntryCount: 1000 PGOBBEntries: - BBFreq: 1000 PostLinkBBFreq: 100 Successors: - ID: 12 BrProb: 0xeeeeeeee PostLinkBrFreq: 40 - ID: 13 BrProb: 0x11111111 ## 2) According to feature we have FuncEntryCount but none is provided in yaml - Name: '.llvm_bb_addr_map (2)' Type: SHT_LLVM_BB_ADDR_MAP Entries: - Version: 2 Feature: 0x1 BBRanges: - BaseAddress: 0x0000000000000020 NumBlocks: 2 BBEntries: - ID: 13 AddressOffset: 0x00000001 Size: 0x00000002 Metadata: 0x00000003 ## Check that yaml2obj generates a warning when we use unsupported feature. # RUN: yaml2obj --docnum=2 %s 2>&1 | FileCheck %s --check-prefix=INVALID-FEATURE # INVALID-FEATURE: warning: invalid encoding for BBAddrMap::Features: 0x100 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Sections: - Name: '.llvm_bb_addr_map' Type: SHT_LLVM_BB_ADDR_MAP Entries: - Version: 2 ## Specify unsupported feature Feature: 0x100