mirror of
https://github.com/golang/go
synced 2024-11-26 10:08:23 -07:00
cmd/5l, cmd/6l, cmd/8l: accept CALL reg, reg
The new src argument is ignored during linking (that is, CALL r1, r2 is identical to CALL r2 for linking), but it serves as a hint to the 5g/6g/8g optimizer that the src register is live on entry to the called function and must be preserved. It is possible to avoid exposing this fact to the rest of the toolchain, keeping it entirely within 5g/6g/8g, but I think it will help to be able to look in object files and assembly listings and linker -a / -W output to see CALL instructions are "Go func value" calls and which are "C function pointer" calls. R=ken2 CC=golang-dev https://golang.org/cl/7364045
This commit is contained in:
parent
9c7aa5fea9
commit
d57fcbf05c
@ -63,6 +63,7 @@ Optab optab[] =
|
||||
|
||||
{ AB, C_NONE, C_NONE, C_ROREG, 6, 4, 0, LPOOL },
|
||||
{ ABL, C_NONE, C_NONE, C_ROREG, 7, 8, 0 },
|
||||
{ ABL, C_REG, C_NONE, C_ROREG, 7, 8, 0 },
|
||||
{ ABX, C_NONE, C_NONE, C_ROREG, 75, 12, 0 },
|
||||
{ ABXRET, C_NONE, C_NONE, C_ROREG, 76, 4, 0 },
|
||||
|
||||
|
@ -326,7 +326,8 @@ uchar yloop[] =
|
||||
};
|
||||
uchar ycall[] =
|
||||
{
|
||||
Ynone, Yml, Zo_m64, 2,
|
||||
Ynone, Yml, Zo_m64, 0,
|
||||
Yrx, Yrx, Zo_m64, 2,
|
||||
Ynone, Ybr, Zcall, 1,
|
||||
0
|
||||
};
|
||||
|
@ -266,7 +266,8 @@ uchar yloop[] =
|
||||
};
|
||||
uchar ycall[] =
|
||||
{
|
||||
Ynone, Yml, Zo_m, 2,
|
||||
Ynone, Yml, Zo_m, 0,
|
||||
Yrx, Yrx, Zo_m, 2,
|
||||
Ynone, Ycol, Zcallind, 2,
|
||||
Ynone, Ybr, Zcall, 0,
|
||||
Ynone, Yi32, Zcallcon, 1,
|
||||
|
Loading…
Reference in New Issue
Block a user