diff --git a/hercules_opt/src/forkify.rs b/hercules_opt/src/forkify.rs index 65ccb586df1609d2d16e840831b81781ed0cc34f..082f1ae958c7c9f90fd4719a17535fc7e604dfdd 100644 --- a/hercules_opt/src/forkify.rs +++ b/hercules_opt/src/forkify.rs @@ -349,19 +349,23 @@ pub fn forkify_loop( }; let reduce_id = edit.add_node(reduce); - if edit.get_schedule(init).contains(&Schedule::ParallelReduce) - || edit - .get_schedule(continue_latch) - .contains(&Schedule::ParallelReduce) + if (!edit.get_node(init).is_reduce() + && edit.get_schedule(init).contains(&Schedule::ParallelReduce)) + || (!edit.get_node(continue_latch).is_reduce() + && edit + .get_schedule(continue_latch) + .contains(&Schedule::ParallelReduce)) { edit = edit.add_schedule(reduce_id, Schedule::ParallelReduce)?; } - if edit - .get_schedule(init) - .contains(&Schedule::TightAssociative) - || edit - .get_schedule(continue_latch) - .contains(&Schedule::TightAssociative) + if (!edit.get_node(init).is_reduce() + && edit + .get_schedule(init) + .contains(&Schedule::TightAssociative)) + || (!edit.get_node(continue_latch).is_reduce() + && edit + .get_schedule(continue_latch) + .contains(&Schedule::TightAssociative)) { edit = edit.add_schedule(reduce_id, Schedule::TightAssociative)?; }