aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2010-10-21 18:15:00 -0700
committerKen Thompson <ken@golang.org>2010-10-21 18:15:00 -0700
commite5bd12ea90bd5a5727f51ade05c87962ca390670 (patch)
tree68e6933119bff182ed7983f4accfbec3fa639a39
parenta89b0ed7e4b7feaca9828b1f2256fedb9df0191e (diff)
downloadgo-e5bd12ea90bd5a5727f51ade05c87962ca390670.tar.gz
go-e5bd12ea90bd5a5727f51ade05c87962ca390670.zip
bug right shifting 64 bits
by a variable that equals 32 R=rsc CC=golang-dev https://golang.org/cl/2645042
-rw-r--r--src/cmd/5g/cgen64.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cmd/5g/cgen64.c b/src/cmd/5g/cgen64.c
index a22f4a548c..716ec5ed5b 100644
--- a/src/cmd/5g/cgen64.c
+++ b/src/cmd/5g/cgen64.c
@@ -439,12 +439,12 @@ olsh_break:
p3 = gbranch(ABLO, T);
// shift == 32
+ p1 = gins(AMOVW, &bh, &al);
+ p1->scond = C_SCOND_EQ;
if(bh.type->etype == TINT32)
p1 = gshift(AMOVW, &bh, SHIFT_AR, 31, &ah);
else
- p1 = gins(AEOR, &al, &al);
- p1->scond = C_SCOND_EQ;
- p1 = gins(AMOVW, &bh, &al);
+ p1 = gins(AEOR, &ah, &ah);
p1->scond = C_SCOND_EQ;
p4 = gbranch(ABEQ, T);