Skip to content
Snippets Groups Projects

Do DC subst in float-collections

Merged rarbore2 requested to merge fix-float into main
1 file
+ 14
5
Compare changes
  • Side-by-side
  • Inline
use std::collections::BTreeMap;
use std::collections::{BTreeMap, HashMap};
use hercules_ir::*;
@@ -83,10 +83,6 @@ pub fn float_collections(
.map(|(idx, node)| (NodeID::new(idx), node.clone()))
.collect();
let success = editors.get_mut(&caller).unwrap().edit(|mut edit| {
let cons_ids: Vec<_> = cons
.iter()
.map(|(_, node)| edit.add_node(node.clone()))
.collect();
for (id, node) in calls {
let Node::Call {
control,
@@ -97,6 +93,19 @@ pub fn float_collections(
else {
panic!()
};
let dc_args = (0..dynamic_constants.len())
.map(|i| edit.add_dynamic_constant(DynamicConstant::Parameter(i)));
let substs = dc_args
.zip(dynamic_constants.iter().map(|id| *id))
.collect::<HashMap<_, _>>();
let cons_ids: Vec<_> = cons
.iter()
.map(|(_, node)| {
let mut node = node.clone();
substitute_dynamic_constants_in_node(&substs, &mut node, &mut edit);
edit.add_node(node)
})
.collect();
let mut args = Vec::from(args);
args.extend(cons_ids.iter());
let new_call = edit.add_node(Node::Call {
Loading