Skip to content
Snippets Groups Projects
Commit eda921ae authored by Aaron Councilman's avatar Aaron Councilman
Browse files

Fix delete uncalled bugs

parent f394bf1e
No related branches found
No related tags found
1 merge request!173Fix delete uncalled bugs
Pipeline #201621 passed
...@@ -50,6 +50,11 @@ pub fn delete_uncalled( ...@@ -50,6 +50,11 @@ pub fn delete_uncalled(
// that all nodes in all functions will be mutable, so panic if any // that all nodes in all functions will be mutable, so panic if any
// edit fails. // edit fails.
for editor in editors.iter_mut() { for editor in editors.iter_mut() {
// Don't make edits to dead functions as they may include calls to dead functions
if new_idx[editor.func_id().idx()].is_none() {
continue;
}
let callsites: Vec<_> = editor let callsites: Vec<_> = editor
.node_ids() .node_ids()
.filter(|id| editor.func().nodes[id.idx()].is_call()) .filter(|id| editor.func().nodes[id.idx()].is_call())
......
...@@ -2,6 +2,7 @@ use std::collections::HashMap; ...@@ -2,6 +2,7 @@ use std::collections::HashMap;
use std::collections::HashSet; use std::collections::HashSet;
use std::hash::Hash; use std::hash::Hash;
#[derive(Debug)]
pub struct Env<K, V> { pub struct Env<K, V> {
table: HashMap<K, Vec<V>>, table: HashMap<K, Vec<V>>,
scope: Vec<HashSet<K>>, scope: Vec<HashSet<K>>,
...@@ -98,6 +99,11 @@ impl<K: Eq + Hash + Copy, V> Env<K, V> { ...@@ -98,6 +99,11 @@ impl<K: Eq + Hash + Copy, V> Env<K, V> {
let mut new_scopes: HashMap<K, Vec<usize>> = HashMap::new(); let mut new_scopes: HashMap<K, Vec<usize>> = HashMap::new();
for (k, vs) in std::mem::take(&mut self.table) { for (k, vs) in std::mem::take(&mut self.table) {
if vs.is_empty() {
assert!(!scopes.contains_key(&k));
continue;
}
let scope_list = scopes.remove(&k).unwrap(); let scope_list = scopes.remove(&k).unwrap();
assert!(scope_list.len() == vs.len()); assert!(scope_list.len() == vs.len());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment