Lines Matching refs:target

21 #include "target.h"
44 // found a phi-node in the target BB,
69 // remove all phisources but the one corresponding to the given target
70 static int remove_other_phisources(struct basic_block *bb, struct multijmp_list *list, struct basic_block *target)
76 if (jmp->target == target) {
77 target = NULL;
80 changed |= remove_phisources(bb, jmp->target);
122 if (insn->opcode == OP_SYMADDR && insn->target == pseudo)
134 static int bb_depends_on(struct basic_block *target, struct basic_block *src)
139 if (pseudo_in_list(target->needs, pseudo))
153 static int bb_depends_on_phi(struct basic_block *target, struct basic_block *src)
161 if (pseudo_in_list(target->needs, insn->target))
239 struct basic_block *source, *target;
258 target = cond ? second->bb_true : second->bb_false;
259 if (bb_depends_on(target, bb))
261 if (bb_depends_on_phi(target, bb))
263 changed |= rewrite_branch(source, &br->bb_true, bb, target);
264 changed |= rewrite_branch(source, &br->bb_false, bb, target);
322 struct basic_block *target = *target_p, *final;
326 if (target == bb)
328 insn = last_instruction(target->insns);
337 if (bb_has_side_effects(target))
339 if (bb_depends_on(final, target))
341 if (bb_depends_on_phi(final, target))
343 return rewrite_branch(bb, target_p, target, final);
350 if (bb_list_size(target->parents) != 1)
394 pseudo_t target;
399 target = insn->target;
400 if (target == src)
402 FOR_EACH_PTR(target->users, pu) {
404 assert(*pu->userp == target);
409 concat_user_list(target->users, &src->users);
410 target->users = NULL;
609 pseudo_t target = insn->target;
611 if (!has_use_list(target))
613 if (target->def != insn)
687 changed |= rewrite_branch(bb, &jmp->target, old, new);
700 struct basic_block *target = br->bb_true;
706 target = cond->value ? target : br->bb_false;
714 if (!rewrite_parent_branch(parent, bb, target))
717 return target;
762 vrfy_bb_in_list(jmp->target, bb->children);
795 int convert_to_jump(struct instruction *insn, struct basic_block *target)
803 changed |= remove_phisources(insn->bb, insn->bb_true == target ? insn->bb_false : insn->bb_true);
806 changed |= remove_other_phisources(insn->bb, insn->multijmp_list, target);
810 insn->bb_true = target;
817 if (child == target) {
818 target = NULL; // leave first occurence
830 static int retarget_parents(struct basic_block *bb, struct basic_block *target)
839 if (!rewrite_parent_branch(parent, bb, target))