diff options
Diffstat (limited to 'src/compiletest')
| -rw-r--r-- | src/compiletest/header.rs | 4 | ||||
| -rw-r--r-- | src/compiletest/util.rs | 25 | 
2 files changed, 29 insertions, 0 deletions
| diff --git a/src/compiletest/header.rs b/src/compiletest/header.rs index 6899fa13974..29123173f5b 100644 --- a/src/compiletest/header.rs +++ b/src/compiletest/header.rs @@ -163,6 +163,9 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool { fn ignore_target(config: &Config) -> String { format!("ignore-{}", util::get_os(&config.target)) } + fn ignore_architecture(config: &Config) -> String { + format!("ignore-{}", util::get_arch(&config.target)) + } fn ignore_stage(config: &Config) -> String { format!("ignore-{}", config.stage_id.split('-').next().unwrap()) @@ -226,6 +229,7 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool { let val = iter_header(testfile, &mut |ln| { !parse_name_directive(ln, "ignore-test") && !parse_name_directive(ln, &ignore_target(config)) && + !parse_name_directive(ln, &ignore_architecture(config)) && !parse_name_directive(ln, &ignore_stage(config)) && !(config.mode == common::Pretty && parse_name_directive(ln, "ignore-pretty")) && !(config.target != config.host && parse_name_directive(ln, "ignore-cross-compile")) && diff --git a/src/compiletest/util.rs b/src/compiletest/util.rs index 16e2806f72c..2e11cf47d1e 100644 --- a/src/compiletest/util.rs +++ b/src/compiletest/util.rs @@ -25,6 +25,23 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[ ("openbsd", "openbsd"), ]; +const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[ + ("i386", "x86"), + ("i686", "x86"), + ("amd64", "x86_64"), + ("x86_64", "x86_64"), + ("sparc", "sparc"), + ("powerpc", "powerpc"), + ("arm64", "aarch64"), + ("arm", "arm"), + ("aarch64", "aarch64"), + ("mips", "mips"), + ("xcore", "xcore"), + ("msp430", "msp430"), + ("hexagon", "hexagon"), + ("s390x", "systemz"), +]; + pub fn get_os(triple: &str) -> &'static str { for &(triple_os, os) in OS_TABLE { if triple.contains(triple_os) { @@ -33,6 +50,14 @@ pub fn get_os(triple: &str) -> &'static str { } panic!("Cannot determine OS from triple"); } +pub fn get_arch(triple: &str) -> &'static str { + for &(triple_arch, arch) in ARCH_TABLE { + if triple.contains(triple_arch) { + return arch + } + } + panic!("Cannot determine Architecture from triple"); +} pub fn make_new_path(path: &str) -> String { assert!(cfg!(windows)); | 
