Skip to content
Snippets Groups Projects
Commit e1c2a470 authored by Xavier Routh's avatar Xavier Routh
Browse files

helper macro

parent cb6be59e
No related branches found
No related tags found
1 merge request!28Draft: Interpreter, Tests, Debug Info, Misc.
...@@ -514,14 +514,7 @@ impl<'a> FunctionExecutionState<'a> { ...@@ -514,14 +514,7 @@ impl<'a> FunctionExecutionState<'a> {
} }
pub fn run(&mut self) -> InterpreterVal { pub fn run(&mut self) -> InterpreterVal {
let start_node: NodeID = NodeID::new( let start_node: NodeID = NodeID::new(0);
self.get_function()
.nodes
.iter()
.find_position(|node| node.is_start())
.expect("PANIC: no start node")
.0,
);
let start_token = ControlToken { let start_token = ControlToken {
curr: start_node, curr: start_node,
......
...@@ -147,3 +147,28 @@ macro_rules! interp_module { ...@@ -147,3 +147,28 @@ macro_rules! interp_module {
} }
}; };
} }
#[macro_export]
macro_rules! interp_file_with_passes {
($path:literal, $dynamic_constants:expr, $passes:expr, $($args:expr), *) => {
{
let module = parse_file($path);
let result_before = interp_module!(module, $dynamic_constants, $($args), *);
let mut pm = hercules_opt::pass::PassManager::new(module.clone());
for pass in $passes {
pm.add_pass(pass);
}
pm.run_passes();
let module = pm.get_module();
let result_after = interp_module!(module, $dynamic_constants, $($args), *);
assert_eq!(result_after, result_before);
}
};
}
\ No newline at end of file
...@@ -180,4 +180,22 @@ fn sum_int2() { ...@@ -180,4 +180,22 @@ fn sum_int2() {
let module = pm.get_module(); let module = pm.get_module();
let result_2 = interp_module!(module, dyn_consts, vec); let result_2 = interp_module!(module, dyn_consts, vec);
assert_eq!(result_1, result_2) assert_eq!(result_1, result_2)
}
#[test]
fn sum_int2_smaller() {
interp_file_with_passes!("../test_inputs/sum_int2.hir",
[100],
vec![
Pass::Verify,
Pass::CCP,
Pass::DCE,
Pass::GVN,
Pass::DCE,
Pass::Forkify,
Pass::DCE,
Pass::Predication,
Pass::DCE,
],
vec![1; 100]);
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment