aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/simplify.c
diff options
Diffstat (limited to 'simplify.c')
-rw-r--r--simplify.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/simplify.c b/simplify.c
index e5e555c1..6216caf1 100644
--- a/simplify.c
+++ b/simplify.c
@@ -184,23 +184,28 @@ out:
return count;
}
-static inline void remove_usage(pseudo_t p, pseudo_t *usep)
+static inline void rem_usage(pseudo_t p, pseudo_t *usep, int kill)
{
if (has_use_list(p)) {
if (p->type == PSEUDO_SYM)
repeat_phase |= REPEAT_SYMBOL_CLEANUP;
delete_pseudo_user_list_entry(&p->users, usep, 1);
- if (!p->users)
+ if (kill && !p->users)
kill_instruction(p->def);
}
}
+static inline void remove_usage(pseudo_t p, pseudo_t *usep)
+{
+ rem_usage(p, usep, 1);
+}
+
void kill_use(pseudo_t *usep)
{
if (usep) {
pseudo_t p = *usep;
*usep = VOID;
- remove_usage(p, usep);
+ rem_usage(p, usep, 1);
}
}