aboutsummaryrefslogtreecommitdiff
path: root/gcc/internal-fn.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-01-05 22:47:51 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-01-05 22:47:51 +0100
commitfca4adf2095dfcd453ab32250984d85ff66bbd32 (patch)
tree71684c10bc82a08750e567f3a2526c6817160a6b /gcc/internal-fn.c
parente534110031564716a1e495a38bf8d893b23a5993 (diff)
downloadgcc-fca4adf2095dfcd453ab32250984d85ff66bbd32.zip
gcc-fca4adf2095dfcd453ab32250984d85ff66bbd32.tar.gz
gcc-fca4adf2095dfcd453ab32250984d85ff66bbd32.tar.bz2
re PR sanitizer/64265 (r217669 broke tsan)
PR sanitizer/64265 * gimplify.c (gimplify_function_tree): Add TSAN_FUNC_EXIT internal call as cleanup of the whole body. * internal-fn.def (TSAN_FUNC_EXIT): New internal call. * tsan.c (replace_func_exit): New function. (instrument_func_exit): Moved earlier. (instrument_memory_accesses): Adjust TSAN_FUNC_EXIT internal calls. Call instrument_func_exit if no TSAN_FUNC_EXIT internal calls have been found. (tsan_pass): Don't call instrument_func_exit. * internal-fn.c (expand_TSAN_FUNC_EXIT): New function. * tree-inline.c (copy_bb): Drop TSAN_FUNC_EXIT internal calls during inlining. From-SVN: r219202
Diffstat (limited to 'gcc/internal-fn.c')
-rw-r--r--gcc/internal-fn.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index 50f5694..50e3c51 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -208,6 +208,14 @@ expand_ASAN_CHECK (gcall *stmt ATTRIBUTE_UNUSED)
gcc_unreachable ();
}
+/* This should get expanded in the tsan pass. */
+
+static void
+expand_TSAN_FUNC_EXIT (gcall *)
+{
+ gcc_unreachable ();
+}
+
/* Helper function for expand_addsub_overflow. Return 1
if ARG interpreted as signed in its precision is known to be always
positive or 2 if ARG is known to be always negative, or 3 if ARG may