diff options
author | Teddy <ted.sybil@gmail.com> | 2014-05-04 09:27:32 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2014-05-04 09:27:32 +0800 |
commit | ee16d16e23f53704722b111e8791be49000c2965 (patch) | |
tree | ea0b9924386c771d224a58035af896ce7245fe6f /ssa.c | |
parent | 8ef3cac508d203cec57d911cbe61019364a11807 (diff) |
...reg
Diffstat (limited to 'ssa.c')
-rw-r--r-- | ssa.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1895,6 +1895,7 @@ void cinterv_union(COpr_t a, COpr_t b) { if (a == b) return; b->range = crange_merge(b->range, a->range); a->par = b; + b->mod |= a->mod; } void init_def() { @@ -2132,6 +2133,11 @@ void register_alloc() { colist_add(active, c); /* move cur to active */ } } + else if (cur->mod) /* may be referenced by a pointer */ + { + cur->reg = -1; /* assign a memory location to cur */ + free(c); /* and move cur to handled */ + } else { cur->reg = reg; /* cur.reg <- any register in f */ |