aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/simplify.c
diff options
Diffstat (limited to 'simplify.c')
-rw-r--r--simplify.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/simplify.c b/simplify.c
index 851f9420..a877b693 100644
--- a/simplify.c
+++ b/simplify.c
@@ -308,6 +308,15 @@ static void kill_use_list(struct pseudo_list *list)
} END_FOR_EACH_PTR(p);
}
+static void kill_asm(struct instruction *insn)
+{
+ struct asm_constraint *con;
+
+ FOR_EACH_PTR(insn->asm_rules->inputs, con) {
+ kill_use(&con->pseudo);
+ } END_FOR_EACH_PTR(con);
+}
+
///
// kill an instruction
// @insn: the instruction to be killed
@@ -373,6 +382,12 @@ int kill_insn(struct instruction *insn, int force)
kill_use(&insn->target);
break;
+ case OP_ASM:
+ if (!force)
+ return 0;
+ kill_asm(insn);
+ break;
+
case OP_ENTRY:
/* ignore */
return 0;