diff --git a/hercules_opt/src/gcm.rs b/hercules_opt/src/gcm.rs index 1dcedd97cfa2365d905cb17ea74624349be866b3..2579e73ec889424f19e7d5ac6940a4566e45634d 100644 --- a/hercules_opt/src/gcm.rs +++ b/hercules_opt/src/gcm.rs @@ -883,6 +883,13 @@ fn spill_clones( init == *b && editor.func().schedules[a.idx()].contains(&Schedule::ParallelReduce) }) + .unwrap_or(false) + && !editor.func().nodes[a.idx()] + .try_phi() + .map(|(_, data)| { + data.contains(b) + && editor.func().schedules[a.idx()].contains(&Schedule::ParallelReduce) + }) .unwrap_or(false)) }); diff --git a/juno_samples/rodinia/srad/src/cpu.sch b/juno_samples/rodinia/srad/src/cpu.sch index 2b45e8c956e10cb6af538282df98e32eb35b6b5e..a4cd49569aedadf42d3965bee040391f4d56cef9 100644 --- a/juno_samples/rodinia/srad/src/cpu.sch +++ b/juno_samples/rodinia/srad/src/cpu.sch @@ -29,6 +29,8 @@ fixpoint { } simpl!(*); fork-interchange[0, 1](loop1); +reduce-slf(*); +simpl!(*); fork-split(*); unforkify(*);