diff options
| author | Russ Cox <rsc@golang.org> | 2009-08-30 19:21:48 -0700 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2009-08-30 19:21:48 -0700 |
| commit | fda0e78b234f12c9544cd6607c508b8338698239 (patch) | |
| tree | 874e3942c32f0bd4f96ce5a68efb5499f4d1ed08 /src/cmd/ld | |
| parent | 9449e3b02cb18931cd8cb4c0b9407dc1e0f8f80e (diff) | |
| download | go-fda0e78b234f12c9544cd6607c508b8338698239.tar.xz | |
fix line numbers, again.
if first function in file was dead code, it was being
discarded along with the file name information for that file.
leave the functions in the master function list longer:
let xfol take the dead code out of the code list,
and let span skip the unreachable functions during output.
before
throw: sys·mapaccess1: key not in map
panic PC=0x2e7b20
throw+0x33 /Users/rsc/go/src/pkg/runtime/runtime.c:65
throw(0x5834f, 0x0)
sys·mapaccess1+0x73 /Users/rsc/go/src/pkg/runtime/hashmap.c:769
sys·mapaccess1(0x2b9bd0, 0x0)
gob·*Encoder·Encode+0x16b /Users/rsc/go/src/pkg/fmt/print.go:2926
gob·*Encoder·Encode(0x2bb440, 0x0, 0x558b0, 0x0, 0x2e4be0, ...)
main·walk+0x331 :1603
main·walk(0x33a480, 0x0)
main·walk+0x271 :1596
main·walk(0x300640, 0x0)
main·walk+0x271 :1596
main·walk(0x300520, 0x0)
main·walk+0x271 :1596
main·walk(0x300240, 0x0)
main·walk+0x271 :1596
main·walk(0x678f8, 0x0)
main·main+0x22 :1610
main·main()
after
throw: sys·mapaccess1: key not in map
panic PC=0x2e7b20
throw+0x33 /Users/rsc/go/src/pkg/runtime/runtime.c:65
throw(0x5834f, 0x0)
sys·mapaccess1+0x73 /Users/rsc/go/src/pkg/runtime/hashmap.c:769
sys·mapaccess1(0x2b9bd0, 0x0)
gob·*Encoder·Encode+0x16b /Users/rsc/go/src/pkg/gob/encoder.go:319
gob·*Encoder·Encode(0x2bb3c0, 0x0, 0x558b0, 0x0, 0x2e4be0, ...)
main·walk+0x331 /Users/rsc/dir.go:121
main·walk(0x2f6ab0, 0x0)
main·walk+0x271 /Users/rsc/dir.go:114
main·walk(0x301640, 0x0)
main·walk+0x271 /Users/rsc/dir.go:114
main·walk(0x301520, 0x0)
main·walk+0x271 /Users/rsc/dir.go:114
main·walk(0x301240, 0x0)
main·walk+0x271 /Users/rsc/dir.go:114
main·walk(0x678f8, 0x0)
main·main+0x22 /Users/rsc/dir.go:128
main·main()
mainstart+0xe /Users/rsc/go/src/pkg/runtime/amd64/asm.s:55
mainstart()
goexit /Users/rsc/go/src/pkg/runtime/proc.c:133
goexit()
R=r
DELTA=46 (20 added, 25 deleted, 1 changed)
OCL=34094
CL=34103
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/go.c | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index 30d8348c7d..f86b457b63 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -433,22 +433,6 @@ sweeplist(Prog **first, Prog **last) case ADATA: case AGLOBL: reachable = p->from.sym->reachable; - if(!reachable) { - if(debug['v'] > 1) - Bprint(&bso, "discard %s\n", p->from.sym->name); - p->from.sym->type = Sxxx; - break; - } - if(p->as == ATEXT) { - // keeping this function; link into textp list - if(etextp == P) - textp = p; - else - etextp->pcond = p; - etextp = p; - etextp->pcond = P; - } - break; } if(reachable) { if(q == P) @@ -496,15 +480,6 @@ deadcode(void) for(i=0; i<nelem(morename); i++) mark(lookup(morename[i], 0)); - // remove dead code. - // sweeplist will rebuild the list of functions at textp - textp = P; - etextp = P; - - // follow is going to redo the firstp, lastp list - // but update it anyway just to keep things consistent. - sweeplist(&firstp, &lastp); - // remove dead data sweeplist(&datap, &edatap); } |
