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.
tcc-xref
Shinichiro Hamaji 2008-12-01 01:51:34 +09:00 committed by grischka
parent 73a84cefda
commit d6072d3703
2 changed files with 19 additions and 0 deletions

18
tcc.c
View File

@ -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;

View File

@ -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__")