diff options
| author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-26 16:34:18 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-26 16:34:18 -0400 |
| commit | 2273d22ced916fa06a46e3f4894dbb9c04f0c640 (patch) | |
| tree | 373f8a8388f9d559fa8312ff1bf123a1edd0447e /lisc | |
| parent | aa9dc343995ef2eafcb3ef630e2ab8e3ec61ac4f (diff) | |
| download | roux-2273d22ced916fa06a46e3f4894dbb9c04f0c640.tar.gz | |
do not merge phi classes of interfering temps
Diffstat (limited to 'lisc')
| -rw-r--r-- | lisc/ssa.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lisc/ssa.c b/lisc/ssa.c index 9608a93..97ba707 100644 --- a/lisc/ssa.c +++ b/lisc/ssa.c @@ -107,6 +107,7 @@ phirepr(Tmp *tmp, int t) } /* fill union find data for phi classes + * requires live */ void fillphi(Fn *fn) @@ -129,6 +130,13 @@ fillphi(Fn *fn) if (rtype(p->arg[a]) != RTmp) continue; ta = p->arg[a].val; + if (BGET(b->in, ta)) + /* do not merge the + * classes of phi args + * that outlive the phi + * node + */ + continue; ta = phirepr(tmp, ta); tmp[ta].phi = t; } |
