aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2016-09-26 21:52:57 +0200
committerMichael Matz <matz@suse.de>2016-12-15 17:47:12 +0100
commitce55d03eef8cefff5ed731c0e1176425d59c600f (patch)
tree7d2d70b30c3e8b84f727196c0f3d9a876024ad82
parentfb933ae0eb25af6b03c0098902d215fa7fe7fdbd (diff)
downloadtinycc-ce55d03eef8cefff5ed731c0e1176425d59c600f.tar.gz
tinycc-ce55d03eef8cefff5ed731c0e1176425d59c600f.tar.bz2
Handle __builtin_extract_return_addr
Our architectures don't need anything special for this builtin, just pass through the argument.
-rw-r--r--libtcc.c3
-rw-r--r--tests/tcctest.c2
2 files changed, 5 insertions, 0 deletions
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