summaryrefslogtreecommitdiff
path: root/src/cmd/6g/obj.c
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2008-11-18 19:24:37 -0800
committerKen Thompson <ken@golang.org>2008-11-18 19:24:37 -0800
commit4bf15b40fa33e98c482ed71411673911f30ef25f (patch)
treebdb5dcac84a5eb0582a3a1cc2f6da58af50abc15 /src/cmd/6g/obj.c
parent6e160f185b07be86556fbbad266fc8203473b9a7 (diff)
downloadgolang-4bf15b40fa33e98c482ed71411673911f30ef25f.tar.gz
first cut at optimizing
R=r OCL=19564 CL=19564
Diffstat (limited to 'src/cmd/6g/obj.c')
-rw-r--r--src/cmd/6g/obj.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cmd/6g/obj.c b/src/cmd/6g/obj.c
index 20763cf38..38ba1ad58 100644
--- a/src/cmd/6g/obj.c
+++ b/src/cmd/6g/obj.c
@@ -90,6 +90,15 @@ dumpobj(void)
}
sym = 1;
+ // fix up pc
+ pcloc = 0;
+ for(pl=plist; pl!=nil; pl=pl->link) {
+ for(p=pl->firstpc; p!=P; p=p->link) {
+ p->loc = pcloc;
+ pcloc++;
+ }
+ }
+
// put out functions
for(pl=plist; pl!=nil; pl=pl->link) {
@@ -204,8 +213,13 @@ zaddr(Biobuf *b, Addr *a, int s)
t |= T_SYM;
switch(a->type) {
+
+ case D_BRANCH:
+ a->offset = a->branch->loc;
+
default:
t |= T_TYPE;
+
case D_NONE:
if(a->offset != 0) {
t |= T_OFFSET;