diff options
| author | Russ Cox <rsc@golang.org> | 2013-07-16 16:23:11 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2013-07-16 16:23:11 -0400 |
| commit | 567818224edce362fa040ee89e9597982f2bcdf6 (patch) | |
| tree | 77605ec3fd6e6b2e54343aae26f72e63446616a9 /src/cmd/6l | |
| parent | 8fb6c3ac25f077f5207215dc4868014a29e61759 (diff) | |
| download | go-567818224edce362fa040ee89e9597982f2bcdf6.tar.xz | |
cmd/5l, cmd/6l, cmd/8l: accept PCDATA instruction in input
The portable code in cmd/ld already knows how to process it,
we just have to ignore it during code generation.
R=ken2
CC=golang-dev
https://golang.org/cl/11363043
Diffstat (limited to 'src/cmd/6l')
| -rw-r--r-- | src/cmd/6l/optab.c | 14 | ||||
| -rw-r--r-- | src/cmd/6l/pass.c | 5 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/cmd/6l/optab.c b/src/cmd/6l/optab.c index 3aa177b270..c354967b98 100644 --- a/src/cmd/6l/optab.c +++ b/src/cmd/6l/optab.c @@ -53,6 +53,16 @@ uchar ynop[] = Yxr, Ynone, Zpseudo,1, 0 }; +uchar yfuncdata[] = +{ + Yi32, Ym, Zpseudo, 0, + 0 +}; +uchar ypcdata[] = +{ + Yi32, Yi32, Zpseudo, 0, + 0 +}; uchar yxorb[] = { Yi32, Yal, Zib_, 1, @@ -1342,8 +1352,8 @@ Optab optab[] = { APCLMULQDQ, yxshuf, Pq, 0x3a,0x44,0 }, { AUSEFIELD, ynop, Px, 0,0 }, - { AFUNCDATA, ynop, Px, 0,0 }, - { APCDATA, ynop, Px, 0,0 }, + { AFUNCDATA, yfuncdata, Px, 0,0 }, + { APCDATA, ypcdata, Px, 0,0 }, { AEND }, 0 diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index 77defed394..644d898b9c 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -589,7 +589,10 @@ dostkoff(void) if(StackTop + textarg + PtrSize + autoffset + PtrSize + StackLimit >= StackMin) moreconst1 = autoffset; moreconst2 = textarg; - + if(moreconst2 == 1) // special marker + moreconst2 = 0; + if((moreconst2&7) != 0) + diag("misaligned argument size in stack split"); // 4 varieties varieties (const1==0 cross const2==0) // and 6 subvarieties of (const1==0 and const2!=0) p = appendp(p); |
