diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-17 16:13:25 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-03-17 16:13:25 +0100 |
commit | aac6784fce5f1814150ea501c24f1fefce1fce12 (patch) | |
tree | b6025000402f4808ff6899c3eaa258321e81fc74 /sys/src | |
parent | 848c477af947ac66168aedba423f224238649684 (diff) | |
parent | f5f9ecdcfa0b27f5971509137d77a5155b4b507d (diff) |
merge
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/cmd/6c/peep.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/src/cmd/6c/peep.c b/sys/src/cmd/6c/peep.c index 64f13b771..7096ce958 100644 --- a/sys/src/cmd/6c/peep.c +++ b/sys/src/cmd/6c/peep.c @@ -100,15 +100,28 @@ loop1: case AMOVQ: case AMOVSS: case AMOVSD: - if(regtyp(&p->to)) + if(!regtyp(&p->to)) + break; if(regtyp(&p->from)) { if(copyprop(r)) { excise(r); t++; - } else + break; + } if(subprop(r) && copyprop(r)) { excise(r); t++; + break; + } + } + if(p->as != AMOVL) + break; + r1 = rnops(uniqs(r)); + if(r1 != R){ + p1 = r1->prog; + if(p1->as == AMOVLQZX && p1->from.type == p->to.type && p1->to.type == p->to.type){ + excise(r1); + t++; } } break; |