use super::collect_expr_atomics;
use crate::ir::model::node::Node;
use std::collections::HashSet;
#[inline]
pub fn collect_node_atomics(node: &Node, buffers: &mut HashSet<String>) {
match node {
Node::Let { value, .. } | Node::Assign { value, .. } => {
collect_expr_atomics(value, buffers);
}
Node::Store { index, value, .. } => {
collect_expr_atomics(index, buffers);
collect_expr_atomics(value, buffers);
}
Node::If {
cond,
then,
otherwise,
} => {
collect_expr_atomics(cond, buffers);
for node in then.iter().chain(otherwise.iter()) {
collect_node_atomics(node, buffers);
}
}
Node::Loop { from, to, body, .. } => {
collect_expr_atomics(from, buffers);
collect_expr_atomics(to, buffers);
for node in body {
collect_node_atomics(node, buffers);
}
}
Node::Block(nodes) => {
for node in nodes {
collect_node_atomics(node, buffers);
}
}
Node::Return | Node::Barrier => {}
}
}