
Utilize common API in PPCTargetParser (https://github.com/llvm/llvm-project/pull/97541) to set default CPU with same interfaces for LLC. This will update AIX default CPU to pwr7 and LoP powerppc64 default CPU to ppc64.
201 lines
7.7 KiB
LLVM
201 lines
7.7 KiB
LLVM
; Testing 32-bit and 64-bit exception section entries, no exception auxilliary
|
|
; entries should be produced as no debug information is specified.
|
|
; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -mcpu=ppc -filetype=obj -o %t_32.o < %s
|
|
; RUN: llvm-readobj --exception-section %t_32.o | FileCheck %s --check-prefix=EXCEPT
|
|
; RUN: llvm-readobj --section-headers %t_32.o | FileCheck %s --check-prefix=READ
|
|
; RUN: llvm-readobj --syms %t_32.o | FileCheck %s --check-prefix=SYMS
|
|
|
|
; RUN: llc -mtriple=powerpc64-unknown-aix -mcpu=ppc -filetype=obj -o %t_64.o < %s
|
|
; RUN: llvm-readobj --exception-section %t_64.o | FileCheck %s --check-prefix=EXCEPT64
|
|
; RUN: llvm-readobj --section-headers %t_64.o | FileCheck %s --check-prefix=READ64
|
|
; RUN: llvm-readobj --syms %t_64.o | FileCheck %s --check-prefix=SYMS64
|
|
|
|
!1 = !{!"ppc-trap-reason", !"1", !"2"}
|
|
declare void @llvm.ppc.trap(i32 %a)
|
|
define dso_local void @sub_test() {
|
|
call void @llvm.ppc.trap(i32 1), !annotation !1
|
|
ret void
|
|
}
|
|
define dso_local void @test__trap_annotation(i32 %a) {
|
|
call void @llvm.ppc.trap(i32 %a), !annotation !1
|
|
call void @sub_test()
|
|
call void @llvm.ppc.trap(i32 %a), !annotation !1
|
|
ret void
|
|
}
|
|
|
|
; EXCEPT: Exception section {
|
|
; EXCEPT-NEXT: Symbol: .sub_test
|
|
; EXCEPT-NEXT: LangID: 0
|
|
; EXCEPT-NEXT: Reason: 0
|
|
; EXCEPT-NEXT: Trap Instr Addr: 0x4
|
|
; EXCEPT-NEXT: LangID: 1
|
|
; EXCEPT-NEXT: Reason: 2
|
|
; EXCEPT-NEXT: Symbol: .test__trap_annotation
|
|
; EXCEPT-NEXT: LangID: 0
|
|
; EXCEPT-NEXT: Reason: 0
|
|
; EXCEPT-NEXT: Trap Instr Addr: 0x3C
|
|
; EXCEPT-NEXT: LangID: 1
|
|
; EXCEPT-NEXT: Reason: 2
|
|
; EXCEPT-NEXT: Trap Instr Addr: 0x44
|
|
; EXCEPT-NEXT: LangID: 1
|
|
; EXCEPT-NEXT: Reason: 2
|
|
; EXCEPT-NEXT: }
|
|
|
|
; There are multiple "Section {" lines in the readobj output so we need to start this READ check
|
|
; on a unique line (Type: STYP_DATA (0x40)) so that the checks know where to start reading
|
|
; READ: Type: STYP_DATA (0x40)
|
|
; READ-NEXT: }
|
|
; READ-NEXT: Section {
|
|
; READ-NEXT: Index: 3
|
|
; READ-NEXT: Name: .except
|
|
; READ-NEXT: PhysicalAddress: 0x0
|
|
; READ-NEXT: VirtualAddress: 0x0
|
|
; READ-NEXT: Size: 0x1E
|
|
; READ-NEXT: RawDataOffset: 0x12C
|
|
; READ-NEXT: RelocationPointer: 0x0
|
|
; READ-NEXT: LineNumberPointer: 0x0
|
|
; READ-NEXT: NumberOfRelocations: 0
|
|
; READ-NEXT: NumberOfLineNumbers: 0
|
|
; READ-NEXT: Type: STYP_EXCEPT (0x100)
|
|
; READ-NEXT: }
|
|
; READ-NEXT: ]
|
|
|
|
; SYMS: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test
|
|
; SYMS-NEXT: Value (RelocatableAddress): 0x0
|
|
; SYMS-NEXT: Section: .text
|
|
; SYMS-NEXT: Type: 0x20
|
|
; SYMS-NEXT: StorageClass: C_EXT (0x2)
|
|
; SYMS-NEXT: NumberOfAuxEntries: 2
|
|
; SYMS-NEXT: Function Auxiliary Entry {
|
|
; SYMS-NEXT: Index: [[#IND+1]]
|
|
; SYMS-NEXT: OffsetToExceptionTable: 0x12C
|
|
; SYMS-NEXT: SizeOfFunction: 0xC
|
|
; SYMS-NEXT: PointerToLineNum: 0x0
|
|
; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]]
|
|
; SYMS-NEXT: }
|
|
; SYMS-NEXT: CSECT Auxiliary Entry {
|
|
; SYMS-NEXT: Index: [[#IND+2]]
|
|
; SYMS-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]
|
|
; SYMS-NEXT: ParameterHashIndex: 0x0
|
|
; SYMS-NEXT: TypeChkSectNum: 0x0
|
|
; SYMS-NEXT: SymbolAlignmentLog2: 0
|
|
; SYMS-NEXT: SymbolType: XTY_LD (0x2)
|
|
; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0)
|
|
; SYMS-NEXT: StabInfoIndex: 0x0
|
|
; SYMS-NEXT: StabSectNum: 0x0
|
|
; SYMS-NEXT: }
|
|
; SYMS-NEXT: }
|
|
; SYMS-NEXT: Symbol {
|
|
; SYMS-NEXT: Index: [[#IND+3]]
|
|
; SYMS-NEXT: Name: .test__trap_annotation
|
|
; SYMS-NEXT: Value (RelocatableAddress): 0x28
|
|
; SYMS-NEXT: Section: .text
|
|
; SYMS-NEXT: Type: 0x20
|
|
; SYMS-NEXT: StorageClass: C_EXT (0x2)
|
|
; SYMS-NEXT: NumberOfAuxEntries: 2
|
|
; SYMS-NEXT: Function Auxiliary Entry {
|
|
; SYMS-NEXT: Index: [[#IND+4]]
|
|
; SYMS-NEXT: OffsetToExceptionTable: 0x138
|
|
; SYMS-NEXT: SizeOfFunction: 0x34
|
|
; SYMS-NEXT: PointerToLineNum: 0x0
|
|
; SYMS-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]]
|
|
; SYMS-NEXT: }
|
|
; SYMS-NEXT: CSECT Auxiliary Entry {
|
|
; SYMS-NEXT: Index: [[#IND+5]]
|
|
; SYMS-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]
|
|
; SYMS-NEXT: ParameterHashIndex: 0x0
|
|
; SYMS-NEXT: TypeChkSectNum: 0x0
|
|
; SYMS-NEXT: SymbolAlignmentLog2: 0
|
|
; SYMS-NEXT: SymbolType: XTY_LD (0x2)
|
|
; SYMS-NEXT: StorageMappingClass: XMC_PR (0x0)
|
|
; SYMS-NEXT: StabInfoIndex: 0x0
|
|
; SYMS-NEXT: StabSectNum: 0x0
|
|
; SYMS-NEXT: }
|
|
; SYMS-NEXT: }
|
|
|
|
; EXCEPT64: Exception section {
|
|
; EXCEPT64-NEXT: Symbol: .sub_test
|
|
; EXCEPT64-NEXT: LangID: 0
|
|
; EXCEPT64-NEXT: Reason: 0
|
|
; EXCEPT64-NEXT: Trap Instr Addr: 0x4
|
|
; EXCEPT64-NEXT: LangID: 1
|
|
; EXCEPT64-NEXT: Reason: 2
|
|
; EXCEPT64-NEXT: Symbol: .test__trap_annotation
|
|
; EXCEPT64-NEXT: LangID: 0
|
|
; EXCEPT64-NEXT: Reason: 0
|
|
; EXCEPT64-NEXT: Trap Instr Addr: 0x3C
|
|
; EXCEPT64-NEXT: LangID: 1
|
|
; EXCEPT64-NEXT: Reason: 2
|
|
; EXCEPT64-NEXT: Trap Instr Addr: 0x44
|
|
; EXCEPT64-NEXT: LangID: 1
|
|
; EXCEPT64-NEXT: Reason: 2
|
|
; EXCEPT64-NEXT: }
|
|
|
|
; READ64: Type: STYP_DATA (0x40)
|
|
; READ64-NEXT: }
|
|
; READ64-NEXT: Section {
|
|
; READ64-NEXT: Index: 3
|
|
; READ64-NEXT: Name: .except
|
|
; READ64-NEXT: PhysicalAddress: 0x0
|
|
; READ64-NEXT: VirtualAddress: 0x0
|
|
; READ64-NEXT: Size: 0x32
|
|
; READ64-NEXT: RawDataOffset: 0x1A8
|
|
; READ64-NEXT: RelocationPointer: 0x0
|
|
; READ64-NEXT: LineNumberPointer: 0x0
|
|
; READ64-NEXT: NumberOfRelocations: 0
|
|
; READ64-NEXT: NumberOfLineNumbers: 0
|
|
; READ64-NEXT: Type: STYP_EXCEPT (0x100)
|
|
; READ64-NEXT: }
|
|
; READ64-NEXT: ]
|
|
|
|
; SYMS64: Index: [[#IND:]]{{.*}}{{[[:space:]] *}}Name: .sub_test
|
|
; SYMS64-NEXT: Value (RelocatableAddress): 0x0
|
|
; SYMS64-NEXT: Section: .text
|
|
; SYMS64-NEXT: Type: 0x0
|
|
; SYMS64-NEXT: StorageClass: C_EXT (0x2)
|
|
; SYMS64-NEXT: NumberOfAuxEntries: 2
|
|
; SYMS64-NEXT: Function Auxiliary Entry {
|
|
; SYMS64-NEXT: Index: [[#IND+1]]
|
|
; SYMS64-NEXT: SizeOfFunction: 0x18
|
|
; SYMS64-NEXT: PointerToLineNum: 0x0
|
|
; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+3]]
|
|
; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE)
|
|
; SYMS64-NEXT: }
|
|
; SYMS64-NEXT: CSECT Auxiliary Entry {
|
|
; SYMS64-NEXT: Index: [[#IND+2]]
|
|
; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]
|
|
; SYMS64-NEXT: ParameterHashIndex: 0x0
|
|
; SYMS64-NEXT: TypeChkSectNum: 0x0
|
|
; SYMS64-NEXT: SymbolAlignmentLog2: 0
|
|
; SYMS64-NEXT: SymbolType: XTY_LD (0x2)
|
|
; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0)
|
|
; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
|
|
; SYMS64-NEXT: }
|
|
; SYMS64-NEXT: }
|
|
; SYMS64-NEXT: Symbol {
|
|
; SYMS64-NEXT: Index: [[#IND+3]]
|
|
; SYMS64-NEXT: Name: .test__trap_annotation
|
|
; SYMS64-NEXT: Value (RelocatableAddress): 0x28
|
|
; SYMS64-NEXT: Section: .text
|
|
; SYMS64-NEXT: Type: 0x0
|
|
; SYMS64-NEXT: StorageClass: C_EXT (0x2)
|
|
; SYMS64-NEXT: NumberOfAuxEntries: 2
|
|
; SYMS64-NEXT: Function Auxiliary Entry {
|
|
; SYMS64-NEXT: Index: [[#IND+4]]
|
|
; SYMS64-NEXT: SizeOfFunction: 0x68
|
|
; SYMS64-NEXT: PointerToLineNum: 0x0
|
|
; SYMS64-NEXT: SymbolIndexOfNextBeyond: [[#IND+6]]
|
|
; SYMS64-NEXT: Auxiliary Type: AUX_FCN (0xFE)
|
|
; SYMS64-NEXT: }
|
|
; SYMS64-NEXT: CSECT Auxiliary Entry {
|
|
; SYMS64-NEXT: Index: [[#IND+5]]
|
|
; SYMS64-NEXT: ContainingCsectSymbolIndex: [[#IND-2]]
|
|
; SYMS64-NEXT: ParameterHashIndex: 0x0
|
|
; SYMS64-NEXT: TypeChkSectNum: 0x0
|
|
; SYMS64-NEXT: SymbolAlignmentLog2: 0
|
|
; SYMS64-NEXT: SymbolType: XTY_LD (0x2)
|
|
; SYMS64-NEXT: StorageMappingClass: XMC_PR (0x0)
|
|
; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
|
|
; SYMS64-NEXT: }
|
|
; SYMS64-NEXT: }
|