@@ -301,16 +301,23 @@ void kill_insn(struct instruction *insn, int force)
return;
}
+static int has_users(pseudo_t p)
+{
+ struct pseudo_user *pu;
+ FOR_EACH_PTR(p->users, pu) {
+ if (*pu->userp != VOID)
+ return 1;
+ } END_FOR_EACH_PTR(pu);
+ return 0;
+}
+
/*
* Kill trivially dead instructions
*/
static int dead_insn(struct instruction *insn, pseudo_t *src1, pseudo_t *src2, pseudo_t *src3)
{
- struct pseudo_user *pu;
- FOR_EACH_PTR(insn->target->users, pu) {
- if (*pu->userp != VOID)
- return 0;
- } END_FOR_EACH_PTR(pu);
+ if (has_users(insn->target))
+ return 0;
insn->bb = NULL;
kill_use(src1);
so that it can be reused for others uses. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- simplify.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)