diff options
author | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
---|---|---|
committer | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
commit | f154da9e12608589e8d5f0508f908a0c3e88a1bb (patch) | |
tree | f8255d51e10c6f1e0ed69702200b966c9556a431 /src/cmd/5c/reg.c | |
parent | 8d8329ed5dfb9622c82a9fbec6fd99a580f9c9f6 (diff) | |
download | golang-upstream/1.4.tar.gz |
Imported Upstream version 1.4upstream/1.4
Diffstat (limited to 'src/cmd/5c/reg.c')
-rw-r--r-- | src/cmd/5c/reg.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/cmd/5c/reg.c b/src/cmd/5c/reg.c index b9ac21abd..9024d5f49 100644 --- a/src/cmd/5c/reg.c +++ b/src/cmd/5c/reg.c @@ -204,6 +204,16 @@ regopt(Prog *p) break; } + /* the mod/div runtime routines smash R12 */ + switch(p->as) { + case AMOD: + case AMODU: + case ADIV: + case ADIVU: + regbits |= RtoB(12); + break; + } + if(p->as == AMOVM) { if(p->from.type == D_CONST) z = p->from.offset; @@ -396,7 +406,7 @@ loop2: rgp->cost = change; nregion++; if(nregion >= NRGN) { - warn(Z, "too many regions"); + fatal(Z, "too many regions"); goto brk; } rgp++; @@ -632,11 +642,8 @@ mkvar(Addr *a, int docon) if(s) if(s->name[0] == '.') goto none; - if(nvar >= NVAR) { - if(debug['w'] > 1 && s) - warn(Z, "variable not optimized: %s", s->name); - goto none; - } + if(nvar >= NVAR) + fatal(Z, "variable not optimized: %s", s->name); i = nvar; nvar++; v = &var[i]; |