Go to file
Dean Michael Berris 28ecff5cf1 [XRay] Reduce synthetic references emitted by XRay
Summary:
When we're building with XRay instrumentation, we use a trick that
preserves references from the function to a function sled index. This
index table lives in a separate section, and without this trick the
linker is free to garbage-collect this section and all the segments it
refers to. Until we're able to tell the linkers to preserve these
sections, we use this reference trick to keep around both the index and
the entries in the instrumentation map.

Before this change we emitted both a synthetic reference to the label in
the instrumentation map, and to the entry in the function map index.
This change removes the first synthetic reference and only emits one
synthetic reference to the index -- the index entry has the references
to the labels in the instrumentation map, so the linker will still
preserve those if the function itself is preserved.

This reduces the amount of synthetic references we emit from 16 bytes to
just 8 bytes in x86_64, and similarly to other platforms.

Reviewers: dblaikie

Subscribers: javed.absar, kpw, pelikan, llvm-commits

Differential Revision: https://reviews.llvm.org/D34340

llvm-svn: 305880
2017-06-21 06:39:42 +00:00
clang Changed wording in comment 2017-06-21 05:41:39 +00:00
clang-tools-extra [clang-tidy] readability-function-size: fix nesting level calculation 2017-06-16 13:07:47 +00:00
compiler-rt Revert "[compiler-rt] Don't reset non-default user handler if allow_user_segv_handler is true." 2017-06-21 01:10:23 +00:00
debuginfo-tests Add a test for PR33166. 2017-05-25 19:33:16 +00:00
libclc generic: add missing get_work_dim include 2017-06-02 15:58:35 +00:00
libcxx [libcxx] [test] Fix -Wmismatched-tags in tuple_size_structured_bindings.pass.cpp. 2017-06-20 21:10:53 +00:00
libcxxabi Use _LIBCPP_FALLTHROUGH() to avoid warnings about [[gnu::fallthrough]] being unsupported 2017-06-15 20:18:10 +00:00
libunwind [libunwind] Fix executable stack directive on Linux. 2017-05-16 20:18:57 +00:00
lld Remove redundant namespace specifier. 2017-06-21 03:05:08 +00:00
lldb Fix a python object leak in SWIG glue. 2017-06-21 01:52:37 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [XRay] Reduce synthetic references emitted by XRay 2017-06-21 06:39:42 +00:00
openmp Set affinity to none/false in child processes 2017-06-15 21:51:07 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [ScopInfo] Fix crash with sum of invariant load and AddRec. 2017-06-20 22:53:02 +00:00