Index: src/cmd/6g/peep.c |
=================================================================== |
--- a/src/cmd/6g/peep.c |
+++ b/src/cmd/6g/peep.c |
@@ -536,8 +536,10 @@ |
p->as = ASHLQ; |
break; |
} |
- } else { |
- // explicit zero extension |
+ } else if(p->from.type >= D_NONE) { |
+ // explicit zero extension, but don't |
+ // do that if source is a byte register |
+ // (only AH can occur and it's forbidden). |
switch(p->as) { |
case AMOVB: |
p->as = AMOVBQZX; |