1
0
mirror of https://github.com/golang/go synced 2024-11-11 21:00:23 -07:00

code optmization

drip init function if it doesnt do anything

R=r
OCL=28180
CL=28180
This commit is contained in:
Ken Thompson 2009-05-01 18:55:16 -07:00
parent 1ed7f18165
commit 49f7494894

View File

@ -1259,6 +1259,40 @@ mixed:
// return (8)
// }
int
anyinit(Node *n)
{
uint32 h;
Sym *s;
// are there any init statements
if(n != N)
return 1;
// is this main
if(strcmp(package, "main") == 0)
return 1;
// is there an explicit init function
snprint(namebuf, sizeof(namebuf), "init·%s", filename);
s = lookup(namebuf);
if(s->oname != N)
return 1;
// are there any imported init functions
for(h=0; h<NHASH; h++)
for(s = hash[h]; s != S; s = s->link) {
if(s->name[0] != 'I' || strncmp(s->name, "Init·", 6) != 0)
continue;
if(s->oname == N)
continue;
return 1;
}
// then none
return 0;
}
void
fninit(Node *n)
{
@ -1272,6 +1306,9 @@ fninit(Node *n)
return;
}
if(!anyinit(n))
return;
r = N;
// (1)