aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linearize.c6
-rw-r--r--linearize.h3
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;
};