compiletest: Support ignoring tests requiring missing LLVM components
This commit is contained in:
parent
e8876ae2c1
commit
d3277b927a
@ -1158,13 +1158,19 @@ fn run(self, builder: &Builder<'_>) {
|
||||
cmd.arg("--quiet");
|
||||
}
|
||||
|
||||
let mut llvm_components_passed = false;
|
||||
let mut copts_passed = false;
|
||||
if builder.config.llvm_enabled() {
|
||||
let llvm_config = builder.ensure(native::Llvm { target: builder.config.build });
|
||||
if !builder.config.dry_run {
|
||||
let llvm_version = output(Command::new(&llvm_config).arg("--version"));
|
||||
let llvm_components = output(Command::new(&llvm_config).arg("--components"));
|
||||
// Remove trailing newline from llvm-config output.
|
||||
let llvm_version = llvm_version.trim_end();
|
||||
cmd.arg("--llvm-version").arg(llvm_version);
|
||||
cmd.arg("--llvm-version")
|
||||
.arg(llvm_version.trim())
|
||||
.arg("--llvm-components")
|
||||
.arg(llvm_components.trim());
|
||||
llvm_components_passed = true;
|
||||
}
|
||||
if !builder.is_rust_llvm(target) {
|
||||
cmd.arg("--system-llvm");
|
||||
@ -1182,15 +1188,13 @@ fn run(self, builder: &Builder<'_>) {
|
||||
// Only pass correct values for these flags for the `run-make` suite as it
|
||||
// requires that a C++ compiler was configured which isn't always the case.
|
||||
if !builder.config.dry_run && suite == "run-make-fulldeps" {
|
||||
let llvm_components = output(Command::new(&llvm_config).arg("--components"));
|
||||
cmd.arg("--cc")
|
||||
.arg(builder.cc(target))
|
||||
.arg("--cxx")
|
||||
.arg(builder.cxx(target).unwrap())
|
||||
.arg("--cflags")
|
||||
.arg(builder.cflags(target, GitRepo::Rustc).join(" "))
|
||||
.arg("--llvm-components")
|
||||
.arg(llvm_components.trim());
|
||||
.arg(builder.cflags(target, GitRepo::Rustc).join(" "));
|
||||
copts_passed = true;
|
||||
if let Some(ar) = builder.ar(target) {
|
||||
cmd.arg("--ar").arg(ar);
|
||||
}
|
||||
@ -1220,15 +1224,11 @@ fn run(self, builder: &Builder<'_>) {
|
||||
}
|
||||
}
|
||||
|
||||
if suite != "run-make-fulldeps" {
|
||||
cmd.arg("--cc")
|
||||
.arg("")
|
||||
.arg("--cxx")
|
||||
.arg("")
|
||||
.arg("--cflags")
|
||||
.arg("")
|
||||
.arg("--llvm-components")
|
||||
.arg("");
|
||||
if !llvm_components_passed {
|
||||
cmd.arg("--llvm-components").arg("");
|
||||
}
|
||||
if !copts_passed {
|
||||
cmd.arg("--cc").arg("").arg("--cxx").arg("").arg("--cflags").arg("");
|
||||
}
|
||||
|
||||
if builder.remote_tested(target) {
|
||||
|
@ -2,6 +2,7 @@
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
// needs-llvm-components: aarch64
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -1,6 +1,7 @@
|
||||
// no-system-llvm
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
// needs-llvm-components: aarch64
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs, repr_simd)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -3,6 +3,7 @@
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
// compile-flags: -C target-feature=+neon
|
||||
// needs-llvm-components: arm
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs, repr_simd)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -2,6 +2,7 @@
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
// compile-flags: -C target-feature=+neon
|
||||
// needs-llvm-components: arm
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs, repr_simd)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -1,6 +1,7 @@
|
||||
// no-system-llvm
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target hexagon-unknown-linux-musl
|
||||
// needs-llvm-components: hexagon
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs, repr_simd)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -2,6 +2,7 @@
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target nvptx64-nvidia-cuda
|
||||
// compile-flags: --crate-type cdylib
|
||||
// needs-llvm-components: nvptx
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs)]
|
||||
#![no_core]
|
||||
|
@ -3,6 +3,7 @@
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target riscv64gc-unknown-linux-gnu
|
||||
// compile-flags: -C target-feature=+f
|
||||
// needs-llvm-components: riscv
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -4,6 +4,7 @@
|
||||
//[riscv64] compile-flags: --target riscv64imac-unknown-none-elf
|
||||
//[riscv32] compile-flags: --target riscv32imac-unknown-none-elf
|
||||
// compile-flags: -C target-feature=+d
|
||||
// needs-llvm-components: riscv
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs)]
|
||||
#![crate_type = "rlib"]
|
||||
|
@ -1,12 +1,14 @@
|
||||
// Checks if the correct annotation for the efiapi ABI is passed to llvm.
|
||||
|
||||
// revisions:x86_64 i686 arm
|
||||
|
||||
// revisions:x86_64 i686 aarch64 arm riscv
|
||||
// min-llvm-version: 9.0
|
||||
// needs-llvm-components: aarch64 arm riscv
|
||||
|
||||
//[x86_64] compile-flags: --target x86_64-unknown-uefi
|
||||
//[i686] compile-flags: --target i686-unknown-linux-musl
|
||||
//[aarch64] compile-flags: --target aarch64-unknown-none
|
||||
//[arm] compile-flags: --target armv7r-none-eabi
|
||||
//[riscv] compile-flags: --target riscv64gc-unknown-none-elf
|
||||
// compile-flags: -C no-prepopulate-passes
|
||||
|
||||
#![crate_type = "lib"]
|
||||
@ -22,6 +24,8 @@ trait Copy { }
|
||||
|
||||
//x86_64: define win64cc void @has_efiapi
|
||||
//i686: define void @has_efiapi
|
||||
//aarch64: define void @has_efiapi
|
||||
//arm: define void @has_efiapi
|
||||
//riscv: define void @has_efiapi
|
||||
#[no_mangle]
|
||||
pub extern "efiapi" fn has_efiapi() {}
|
||||
|
@ -1,4 +1,5 @@
|
||||
// compile-flags: -O --target=avr-unknown-unknown --crate-type=rlib
|
||||
// needs-llvm-components: avr
|
||||
|
||||
// This test validates that function pointers can be stored in global variables
|
||||
// and called upon. It ensures that Rust emits function pointers in the correct
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
// compile-flags: --target=thumbv6m-none-eabi
|
||||
// ignore-arm
|
||||
// needs-llvm-components: arm
|
||||
|
||||
// error-pattern:target may not be installed
|
||||
fn main() { }
|
||||
|
@ -1,6 +1,7 @@
|
||||
//~ ERROR 1:1: 1:1: can't find crate for `core` [E0463]
|
||||
|
||||
// compile-flags: --target thumbv7em-none-eabihf
|
||||
// needs-llvm-components: arm
|
||||
#![deny(unsafe_code)]
|
||||
#![deny(warnings)]
|
||||
#![no_std]
|
||||
|
@ -1,4 +1,5 @@
|
||||
// compile-flags: --crate-type dylib --target thumbv7em-none-eabihf
|
||||
// needs-llvm-components: arm
|
||||
// build-pass
|
||||
// error-pattern: dropping unsupported crate type `dylib` for target `thumbv7em-none-eabihf`
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
use std::collections::HashSet;
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
use std::io::prelude::*;
|
||||
@ -186,6 +187,17 @@ fn ignore_llvm(config: &Config, line: &str) -> bool {
|
||||
if config.system_llvm && line.starts_with("no-system-llvm") {
|
||||
return true;
|
||||
}
|
||||
if let Some(needed_components) =
|
||||
config.parse_name_value_directive(line, "needs-llvm-components")
|
||||
{
|
||||
let components: HashSet<_> = config.llvm_components.split_whitespace().collect();
|
||||
if !needed_components
|
||||
.split_whitespace()
|
||||
.all(|needed_component| components.contains(needed_component))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if let Some(actual_version) = config.llvm_version {
|
||||
if let Some(rest) = line.strip_prefix("min-llvm-version:").map(str::trim) {
|
||||
let min_version = extract_llvm_version(rest).unwrap();
|
||||
|
Loading…
Reference in New Issue
Block a user