aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/simplify.c
diff options
Diffstat (limited to 'simplify.c')
-rw-r--r--simplify.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/simplify.c b/simplify.c
index b8944f0f..cacf81f9 100644
--- a/simplify.c
+++ b/simplify.c
@@ -236,6 +236,17 @@ void kill_insn(struct instruction *insn, int force)
kill_use(&insn->cond);
break;
+ case OP_CALL:
+ if (!force) {
+ /* a "pure" function can be killed too */
+ if (!(insn->func->type == PSEUDO_SYM))
+ return;
+ if (!(insn->func->sym->ctype.modifiers & MOD_PURE))
+ return;
+ }
+ kill_use_list(insn->arguments);
+ break;
+
case OP_ENTRY:
/* ignore */
return;