From ce55d03eef8cefff5ed731c0e1176425d59c600f Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Mon, 26 Sep 2016 21:52:57 +0200 Subject: [PATCH] Handle __builtin_extract_return_addr Our architectures don't need anything special for this builtin, just pass through the argument. --- libtcc.c | 3 +++ tests/tcctest.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/libtcc.c b/libtcc.c index 1346fa6..76ee11c 100644 --- a/libtcc.c +++ b/libtcc.c @@ -904,6 +904,9 @@ LIBTCCAPI TCCState *tcc_new(void) # endif #endif /* ndef TCC_TARGET_PE */ + /* Some GCC builtins that are simple to express as macros. */ + tcc_define_symbol(s, "__builtin_extract_return_addr(x)", "x"); + return s; } diff --git a/tests/tcctest.c b/tests/tcctest.c index ff88688..0485a74 100644 --- a/tests/tcctest.c +++ b/tests/tcctest.c @@ -3027,6 +3027,8 @@ void builtin_test(void) printf("bce: %d\n", i); i = sizeof (__builtin_choose_expr (0, ll, s)); printf("bce: %d\n", i); + + printf("bera: %p\n", __builtin_extract_return_addr((void*)43)); } #ifndef _WIN32