mirror of
https://github.com/mirror/tinycc.git
synced 2025-01-15 05:20:06 +08:00
Add __builtin_frame_address(0)
Adding the GCC extension __builtin_frame_address(). We support only zero as the argument for now. With this functionality, we can implement GCC compatible stdarg by macros in x86-64.
This commit is contained in:
parent
73a84cefda
commit
d6072d3703
18
tcc.c
18
tcc.c
@ -7599,6 +7599,24 @@ static void unary(void)
|
||||
vpushi(res);
|
||||
}
|
||||
break;
|
||||
case TOK_builtin_frame_address:
|
||||
{
|
||||
CType type;
|
||||
next();
|
||||
skip('(');
|
||||
if (tok != TOK_CINT) {
|
||||
error("__builtin_frame_address only takes integers");
|
||||
}
|
||||
if (tokc.i != 0) {
|
||||
error("TCC only supports __builtin_frame_address(0)");
|
||||
}
|
||||
next();
|
||||
skip(')');
|
||||
type.t = VT_VOID;
|
||||
mk_pointer(&type);
|
||||
vset(&type, VT_LOCAL, 0);
|
||||
}
|
||||
break;
|
||||
case TOK_INC:
|
||||
case TOK_DEC:
|
||||
t = tok;
|
||||
|
1
tcctok.h
1
tcctok.h
@ -109,6 +109,7 @@
|
||||
DEF(TOK_NORETURN2, "__noreturn__")
|
||||
DEF(TOK_builtin_types_compatible_p, "__builtin_types_compatible_p")
|
||||
DEF(TOK_builtin_constant_p, "__builtin_constant_p")
|
||||
DEF(TOK_builtin_frame_address, "__builtin_frame_address")
|
||||
DEF(TOK_REGPARM1, "regparm")
|
||||
DEF(TOK_REGPARM2, "__regparm__")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user