Add options for parsing test files (#942)

* Add options for parsing test files

This change allows adding parsing parameters more easily; e.g. a parameter is needed for setting the default calling convention for functions parsed as a part of the `run` test feature.

* Set default calling convention that of the host for `test run` file tests

Previously `test run` used the parser's hard-coded CallConv::Fast as the default calling convention but with this change any test being `run` will use the default calling convention of the machine running the test. `test run` will now throw an error if the calling convention of the function does not match the host's.
This commit is contained in:
Andrew Brown
2019-08-27 11:31:08 -07:00
committed by Till Schneidereit
parent e4702d695e
commit 6fdc69ff2e
8 changed files with 116 additions and 36 deletions

View File

@@ -9,7 +9,7 @@ use cranelift_codegen::ir::{
use cranelift_codegen::isa::TargetIsa;
use cranelift_codegen::Context;
use cranelift_entity::PrimaryMap;
use cranelift_reader::parse_test;
use cranelift_reader::{parse_test, ParseOptions};
use std::collections::HashMap;
use std::path::Path;
@@ -27,7 +27,8 @@ pub fn run(
let path = Path::new(&filename).to_path_buf();
let buffer = read_to_string(&path).map_err(|e| format!("{}: {}", filename, e))?;
let test_file = parse_test(&buffer, None, None).map_err(|e| format!("{}: {}", filename, e))?;
let test_file =
parse_test(&buffer, ParseOptions::default()).map_err(|e| format!("{}: {}", filename, e))?;
// If we have an isa from the command-line, use that. Otherwise if the
// file contains a unique isa, use that.
@@ -754,12 +755,13 @@ impl<'a> CrashCheckContext<'a> {
#[cfg(test)]
mod tests {
use super::*;
use cranelift_reader::ParseOptions;
#[test]
fn test_reduce() {
const TEST: &'static str = include_str!("./bugpoint_test.clif");
let test_file = parse_test(TEST, None, None).unwrap();
let test_file = parse_test(TEST, ParseOptions::default()).unwrap();
// If we have an isa from the command-line, use that. Otherwise if the
// file contains a unique isa, use that.