This give us: - a clearer name (than alloc_phi()) - more flexibility when we need the instruction and not the pseudo. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> --- linearize.c | 26 ++++++++++++++++---------- linearize.h | 2 ++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/linearize.c b/linearize.c index a0cce0373..80bc9e290 100644 --- a/linearize.c +++ b/linearize.c @@ -835,26 +835,32 @@ static pseudo_t argument_pseudo(struct entrypoint *ep, int nr) return pseudo; } -pseudo_t alloc_phi(struct basic_block *source, pseudo_t pseudo, struct symbol *type) +struct instruction *alloc_phisrc(pseudo_t pseudo, struct symbol *type) { - struct instruction *insn; - pseudo_t phi; + struct instruction *insn = alloc_typed_instruction(OP_PHISOURCE, type); + pseudo_t phi = __alloc_pseudo(0); static int nr = 0; - if (!source) - return VOID; - - insn = alloc_typed_instruction(OP_PHISOURCE, type); - phi = __alloc_pseudo(0); phi->type = PSEUDO_PHI; phi->nr = ++nr; phi->def = insn; use_pseudo(insn, pseudo, &insn->phi_src); - insn->bb = source; insn->target = phi; + return insn; +} + +pseudo_t alloc_phi(struct basic_block *source, pseudo_t pseudo, struct symbol *type) +{ + struct instruction *insn; + + if (!source) + return VOID; + + insn = alloc_phisrc(pseudo, type); + insn->bb = source; add_instruction(&source->insns, insn); - return phi; + return insn->target; } /* diff --git a/linearize.h b/linearize.h index 52e99e5ad..8790b7e58 100644 --- a/linearize.h +++ b/linearize.h @@ -368,6 +368,8 @@ struct entrypoint { extern void insert_select(struct basic_block *bb, struct instruction *br, struct instruction *phi, pseudo_t if_true, pseudo_t if_false); extern void insert_branch(struct basic_block *bb, struct instruction *br, struct basic_block *target); +struct instruction *alloc_phisrc(pseudo_t pseudo, struct symbol *type); + pseudo_t alloc_phi(struct basic_block *source, pseudo_t pseudo, struct symbol *type); pseudo_t alloc_pseudo(struct instruction *def); pseudo_t value_pseudo(long long val); -- 2.16.2 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html