blob: b2b778f0e25e46aae3e2e6d4935c4e4d0c84aa1e [file] [edit]
; Check that the "target-abi" module flag selects the PPC ELF ABI, so the ABI
; is taken from the IR when no -target-abi option is given. The flag overrides
; the triple default in both directions (.abiversion 2 is emitted for ELFv2).
; RUN: split-file %s %t
; powerpc64 big-endian defaults to ELFv1; an elfv2 module flag overrides that.
; RUN: llc -mtriple=powerpc64-unknown-linux < %t/elfv2.ll | FileCheck %s --check-prefix=ELFv2
; powerpc64le defaults to ELFv2; an elfv1 module flag overrides that.
; RUN: llc -mtriple=powerpc64le-unknown-linux < %t/elfv1.ll | FileCheck %s --check-prefix=ELFv1
; A matching -target-abi option is accepted.
; RUN: llc -mtriple=powerpc64-unknown-linux -target-abi elfv2 < %t/elfv2.ll | FileCheck %s --check-prefix=ELFv2
; A conflicting -target-abi option is rejected.
; RUN: not llc -mtriple=powerpc64-unknown-linux -target-abi elfv1 < %t/elfv2.ll 2>&1 | FileCheck %s --check-prefix=CONFLICT
; ELFv2: .abiversion 2
; ELFv1-NOT: .abiversion 2
; CONFLICT: -target-abi option != target-abi module flag
;--- elfv1.ll
define void @f() {
ret void
}
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"target-abi", !"elfv1"}
;--- elfv2.ll
define void @g() {
ret void
}
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"target-abi", !"elfv2"}