diff options
Diffstat (limited to 'mem.c')
| -rw-r--r-- | mem.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mem.c b/mem.c index ea0bef7..11527fa 100644 --- a/mem.c +++ b/mem.c @@ -86,15 +86,18 @@ memopt(Fn *fn) /* try to turn loads into copies so we * can eliminate them later */ switch(l->op) { - case Oload: case Oloadsw: case Oloaduw: + if (k == Kl) + goto Extend; + case Oload: if (KBASE(k) != KBASE(l->cls)) l->op = Ocast; else l->op = Ocopy; break; default: + Extend: l->op = Oextsb + (l->op - Oloadsb); break; } |
