aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-11-23 14:23:14 -0800
committerRuss Cox <rsc@golang.org>2009-11-23 14:23:14 -0800
commite69f12ae1d2e2206c6104acee31c6639bb93705f (patch)
treea8cd735e9d2789044824191d9531e812b424f154 /src
parentb90f67329031127a6cb0796022ff4d81054406db (diff)
downloadgo-e69f12ae1d2e2206c6104acee31c6639bb93705f.tar.xz
two more if(h<0) that gcc 4.3 -O2 miscompiles
R=r https://golang.org/cl/160044
Diffstat (limited to 'src')
-rw-r--r--src/cmd/cc/lexbody3
-rw-r--r--src/libmach/obj.c4
2 files changed, 2 insertions, 5 deletions
diff --git a/src/cmd/cc/lexbody b/src/cmd/cc/lexbody
index f5a250fcf7..ba5eda8242 100644
--- a/src/cmd/cc/lexbody
+++ b/src/cmd/cc/lexbody
@@ -226,8 +226,7 @@ lookup(void)
for(p=symb; c = *p; p++)
h = h+h+h + c;
l = (p - symb) + 1;
- if(h < 0)
- h = ~h;
+ h &= 0xffffff;
h %= NHASH;
c = symb[0];
for(s = hash[h]; s != S; s = s->link) {
diff --git a/src/libmach/obj.c b/src/libmach/obj.c
index aa914e2c76..dacb2ae1fa 100644
--- a/src/libmach/obj.c
+++ b/src/libmach/obj.c
@@ -257,9 +257,7 @@ objlookup(int id, char *name, int type, uint sig)
h = *name;
for(cp = name+1; *cp; h += *cp++)
h *= HASHMUL;
- if(h < 0)
- h = ~h;
- h &= (NHASH-1);
+ h &= NHASH-1;
if (type == 'U' || type == 'b' || islocal(type)) {
for(sp = hash[h]; sp; sp = sp->next)
if(strcmp(sp->s.name, name) == 0) {