When building LLVM as a (potentially dynamic) library that can be linked against
by multiple compilers, the default triple is not really meaningful.
We allow to explicitely set it to an empty string when configuring LLVM.
In this case, said "target independent" tests in the test suite that are using
the default triple are disabled by matching the newly available feature
"default_triple".
Reviewers: probinson, echristo
Differential Revision: http://reviews.llvm.org/D12660
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247775
91177308-0d34-0410-b5e6-
96231b3b80d8
/* Installation directory for data files */
#cmakedefine LLVM_DATADIR "${LLVM_DATADIR}"
-/* Target triple LLVM will generate code for by default */
-#cmakedefine LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}"
+/* Target triple LLVM will generate code for by default
+ * Doesn't use `cmakedefine` because it is allowed to be empty.
+ */
+#define LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}"
/* Installation directory for documentation */
#cmakedefine LLVM_DOCSDIR "${LLVM_DOCSDIR}"
; Test to make sure that arguments are removed from the function if they are
; unnecessary. And clean up any types that frees up too.
-; CHECK: target triple
+; CHECK: ModuleID
; CHECK-NOT: struct.anon
%struct.anon = type { i32 }
-if 'native' not in config.available_features:
+if not config.target_triple:
config.unsupported = True
; RUN: llc < %s
+; REQUIRES: default_triple
define void @iterative_hash_host_wide_int() {
%zero = alloca i32 ; <i32*> [#uses=2]
; RUN: llc < %s
+; REQUIRES: default_triple
%struct..0anon = type { i32 }
%struct.rtx_def = type { i16, i8, i8, [1 x %struct..0anon] }
; RUN: llc < %s -march=ppc64
; RUN: llc < %s -march=ppc32
; RUN: llc < %s
+; REQUIRES: default_triple
define void @bitap() {
entry:
; RUN: llc < %s -march=ppc64
; RUN: llc < %s -march=ppc32
; RUN: llc < %s
+; REQUIRES: default_triple
@qsz.b = external global i1 ; <i1*> [#uses=1]
; RUN: llc < %s -march=ppc32 -mcpu=g3
; RUN: llc < %s -march=ppc32 -mcpu=g5
; PR1811
+; REQUIRES: default_triple
define void @execute_shader(<4 x float>* %OUT, <4 x float>* %IN, <4 x float>*
%CONST) {
; RUN: llc < %s
+; REQUIRES: default_triple
; This used to cause a crash. A standard load is converted to a pre-increment
; load. Later the pre-increment load is combined with a subsequent SRL to
; RUN: llc < %s
; PR933
+; REQUIRES: default_triple
define fastcc i1 @test() {
ret i1 true
; RUN: llc < %s
+; REQUIRES: default_triple
define <2 x i64> @_mm_insert_epi16(<2 x i64> %a, i32 %b, i32 %imm) nounwind readnone {
entry:
; RUN: llc < %s
+; REQUIRES: default_triple
define <2 x i64> @_mm_movpi64_pi64(<1 x i64> %a, <1 x i64> %b) nounwind readnone {
entry:
; RUN: llc -O1 < %s
+; REQUIRES: default_triple
+
; ModuleID = 'pr6157.bc'
; formerly crashed in SelectionDAGBuilder
; RUN: llc -O0 -relocation-model pic < %s -o /dev/null
+; REQUIRES: default_triple
; PR7545
@.str = private constant [4 x i8] c"one\00", align 1 ; <[4 x i8]*> [#uses=1]
@.str1 = private constant [4 x i8] c"two\00", align 1 ; <[5 x i8]*> [#uses=1]
; RUN: llc < %s
+; REQUIRES: default_triple
declare i8* @llvm_gc_allocate(i32)
; RUN: llc < %s -O0
+; REQUIRES: default_triple
define i32 @main() {
entry:
; RUN: llc < %s
+; REQUIRES: default_triple
%Env = type i8*
; RUN: llc < %s
+; REQUIRES: default_triple
; Examples that exhibits a bug in DAGCombine. The case is triggered by the
; following program. The bug is DAGCombine assumes that the bit convert
; RUN: llc < %s
+; REQUIRES: default_triple
; Legalization test that requires scalarizing a vector.
--- /dev/null
+if not config.target_triple:
+ config.unsupported = True
+
+++ /dev/null
-if 'native' not in config.available_features:
- config.unsupported = True
-
; RUN: llc -O3 -debug %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=LLC-Ox
; RUN: llc -misched-postra -debug %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=LLC-MORE
-; REQUIRES: asserts, native
+; REQUIRES: asserts, default_triple
; This test verifies that we don't run Machine Function optimizations
; on optnone functions.
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
-; REQUIRE: native
; Check for the presence of attribute optnone in the disassembly.
; RUN: llvm-lto -exported-symbol=main -exported-symbol=_main -o %T/bcsection.macho.o %T/bcsection.macho.bco
; RUN: llvm-nm %T/bcsection.macho.o | FileCheck %s
+; REQUIRES: default_triple
+
; CHECK: main
define i32 @main() {
ret i32 0
; RUN: llvm-as < %s >%t1
; RUN: llvm-lto -o %t2 %t1
+; REQUIRES: default_triple
module asm ".align 4"
; RUN: llvm-as -o %T/1.bc %s
; RUN: llvm-as -o %T/2.bc %S/Inputs/list-symbols.ll
; RUN: llvm-lto -list-symbols-only %T/1.bc %T/2.bc | FileCheck %s
+; REQUIRES: default_triple
; CHECK-LABEL: 1.bc:
; CHECK-DAG: foo
-; REQUIRES: native
; RUN: llvm-link %s %S/Inputs/subprogram-linkonce-weak.ll -S -o %t1
; RUN: FileCheck %s -check-prefix=LW -check-prefix=CHECK <%t1
; RUN: llvm-link %S/Inputs/subprogram-linkonce-weak.ll %s -S -o %t2
; RUN: FileCheck %s -check-prefix=WL -check-prefix=CHECK <%t2
+; REQUIRES: default_triple
; This testcase tests the following flow:
; - File A defines a linkonce version of @foo which has inlined into @bar.
-; REQUIRES: object-emission, native
+; REQUIRES: default_triple, object-emission
;
; RUN: llvm-link %s %p/type-unique-odr-b.ll -S -o - | %llc_dwarf -dwarf-linkage-names=Enable -filetype=obj -O0 | llvm-dwarfdump -debug-dump=info - | FileCheck %s
;
-; REQUIRES: object-emission, native
+; REQUIRES: default_triple, object-emission
; RUN: llvm-link %s %p/type-unique-simple-b.ll -S -o %t
; RUN: cat %t | FileCheck %s -check-prefix=LINK
-; REQUIRES: object-emission, native
+; REQUIRES: default_triple, object-emission
;
; RUN: llvm-link %s %p/type-unique-simple2-b.ll -S -o - | %llc_dwarf -filetype=obj -O0 | llvm-dwarfdump -debug-dump=info - | FileCheck %s
;
-; REQUIRES: object-emission; native
+; REQUIRES: object-emission
+; REQUIRES: default_triple
; RUN: llvm-link %S/Inputs/type-unique-simple2-a.ll %S/Inputs/type-unique-simple2-b.ll -S -o %t
; RUN: cat %t | FileCheck %S/Inputs/type-unique-simple2-a.ll -check-prefix=LINK
-; REQUIRES: object-emission, native
+; REQUIRES: default_triple, object-emission
;
; RUN: llvm-link %s %p/type-unique-type-array-b.ll -S -o - | %llc_dwarf -filetype=obj -O0 | llvm-dwarfdump -debug-dump=info - | FileCheck %s
;
; .debug_frame is not emitted for targeting Windows x64.
; REQUIRES: debug_frame
+; REQUIRES: default_triple
; Function Attrs: nounwind
define i32 @foo() #0 {
-; REQUIRES: native
; RUN: llc -O2 -print-after-all < %s 2>/dev/null
+; REQUIRES: default_triple
define void @tester(){
ret void
; RUN: opt < %s -O3 | llc -no-integrated-as | FileCheck %s
-; REQUIRES: X86
+; REQUIRES: default_triple
+
;; We don't want branch folding to fold asm directives.
; CHECK: bork_directive
%tmp = icmp eq i32 %param, 0
br i1 %tmp, label %cond_true, label %cond_false
-cond_true:
+cond_true:
call void asm sideeffect ".bork_directive /* ${0:c}:${1:c} */", "i,i,~{dirflag},~{fpsr},~{flags}"( i32 37, i32 927 )
ret void
else:
config.available_features.add("nozlib")
-# Native compilation: host arch == target arch and native backend built-in
+# LLVM can be configured with an empty default triple
+# Some tests are "generic" and require a valid default triple
+if config.target_triple:
+ config.available_features.add("default_triple")
+
+# Native compilation: host arch == default triple arch
# FIXME: Consider cases that target can be executed
# even if host_triple were different from target_triple.
-if (config.host_triple == config.target_triple and
- config.native_target in config.targets_to_build):
+if config.host_triple == config.target_triple:
config.available_features.add("native")
import subprocess
# RUN: not llvm-mc %t.blah -o %t2 2>&1 | FileCheck --check-prefix=ENOENT %s
-# REQUIRES: native
+# REQUIRES: default_triple
# ENOENT: {{.*}}.blah: {{[Nn]}}o such file or directory
# RUN: not llvm-mc --fatal-warnings %s 2>&1 | FileCheck %s
# XFAIL: hexagon
-# REQUIRES: native
+# REQUIRES: default_triple
# CHECK: error: .warning directive invoked in source file
.warning
RUN: llvm-mc -disassemble %s
-# REQUIRES: native
+# REQUIRES: default_triple
--- /dev/null
+if not config.target_triple:
+ config.unsupported = True
+
# RUN: llvm-mc --no-warn %s 2>&1 | FileCheck %s
# XFAIL: hexagon
-# REQUIRES: native
+# REQUIRES: default_triple
# CHECK-NOT: warning:
.warning