diff options
-rw-r--r-- | linearize.c | 6 | ||||
-rw-r--r-- | linearize.h | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/linearize.c b/linearize.c index 71a23a1..037b3f5 100644 --- a/linearize.c +++ b/linearize.c @@ -758,9 +758,13 @@ pseudo_t value_pseudo(long long val) static pseudo_t argument_pseudo(struct entrypoint *ep, int nr) { pseudo_t pseudo = __alloc_pseudo(0); + struct instruction *entry = ep->entry; + pseudo->type = PSEUDO_ARG; pseudo->nr = nr; - pseudo->def = ep->entry; + pseudo->def = entry; + add_pseudo(&entry->arg_list, pseudo); + /* Argument pseudos have neither usage nor def */ return pseudo; } diff --git a/linearize.h b/linearize.h index 76d275a..eb30e7f 100644 --- a/linearize.h +++ b/linearize.h @@ -48,6 +48,9 @@ struct instruction { pseudo_t cond; /* for branch and switch */ }; union { + struct /* entrypoint */ { + struct pseudo_list *arg_list; + }; struct /* branch */ { struct basic_block *bb_true, *bb_false; }; |