OSDN Git Service

[XRay] Reduce synthetic references emitted by XRay
authorDean Michael Berris <dberris@google.com>
Wed, 21 Jun 2017 06:39:42 +0000 (06:39 +0000)
committerDean Michael Berris <dberris@google.com>
Wed, 21 Jun 2017 06:39:42 +0000 (06:39 +0000)
commite479ac85d5b2f79eb765701933b2de640aa94525
tree6e19a9b89959ac470f6f3f5d4d18f6b413a857f6
parent608be862ffd6d075ca3628d8e34577a044906043
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305880 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/AArch64/xray-attribute-instrumentation.ll
test/CodeGen/AArch64/xray-tail-call-sled.ll
test/CodeGen/ARM/xray-armv6-attribute-instrumentation.ll
test/CodeGen/ARM/xray-armv7-attribute-instrumentation.ll
test/CodeGen/X86/xray-attribute-instrumentation.ll
test/CodeGen/X86/xray-custom-log.ll
test/CodeGen/X86/xray-log-args.ll
test/CodeGen/X86/xray-tail-call-sled.ll