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 | ba306ff2abbc5c53e5799c2bafe893704400c0f1 (patch) | |
tree | affc5edcb81f63c541a419ae06c99b63d60fd2a9 /src/cmd/6l | |
parent | 76ac7db9b36a0ffbc96ea8c4b53a2c9689f74cb1 (diff) | |
download | go-ba306ff2abbc5c53e5799c2bafe893704400c0f1.tar.gz |
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://codereview.appspot.com/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 3aa177b27..c354967b9 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 77defed39..644d898b9 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); |