Skip to content

Commit af51e5f

Browse files
committed
Fleshed out more of the pass manager builder test
1 parent 35c2892 commit af51e5f

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

tests/test_passes.rs

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,42 @@ fn test_init_all_passes_for_module() {
7979

8080
#[test]
8181
fn test_pass_manager_builder() {
82-
let builder = PassManagerBuilder::create();
82+
let pass_manager_builder = PassManagerBuilder::create();
8383

84-
builder.set_optimization_level(Some(&Aggressive));
85-
builder.set_size_level(2);
86-
builder.set_inliner_with_threshold(42);
87-
builder.set_disable_unit_at_a_time(true);
88-
builder.set_disable_unroll_loops(true);
89-
builder.set_disable_simplify_lib_calls(true);
84+
pass_manager_builder.set_optimization_level(Some(&Aggressive));
85+
pass_manager_builder.set_size_level(2);
86+
pass_manager_builder.set_inliner_with_threshold(42);
87+
pass_manager_builder.set_disable_unit_at_a_time(true);
88+
pass_manager_builder.set_disable_unroll_loops(true);
89+
pass_manager_builder.set_disable_simplify_lib_calls(true);
9090

91-
// TODO: Run on various type of pass managers
91+
let context = Context::create();
92+
let module = context.create_module("my_module");
93+
94+
let fn_pass_manager = PassManager::create_for_function(&module);
95+
96+
pass_manager_builder.populate_function_pass_manager(&fn_pass_manager);
97+
98+
let void_type = context.void_type();
99+
let fn_type = void_type.fn_type(&[], false);
100+
let fn_value = module.add_function("my_fn", &fn_type, None);
101+
let builder = context.create_builder();
102+
let entry = context.append_basic_block(&fn_value, "entry");
103+
104+
builder.position_at_end(&entry);
105+
builder.build_return(None);
106+
107+
// TODO: Test with actual changes? Would be true in that case
108+
assert!(!fn_pass_manager.run_on_function(&fn_value));
109+
110+
let module_pass_manager = PassManager::create_for_module();
111+
112+
pass_manager_builder.populate_module_pass_manager(&module_pass_manager);
113+
114+
// REVIEW: Seems like no changes were made, why does it return true?
115+
assert!(module_pass_manager.run_on_module(&module));
116+
117+
// TODO: Populate LTO pass manager?
92118
}
93119

94120
#[test]

0 commit comments

Comments
 (0)