llvm-project/llvm/utils
Dean Michael Berris 52735fc435 XRay: Add entry and exit sleds
Summary:
In this patch we implement the following parts of XRay:

- Supporting a function attribute named 'function-instrument' which currently only supports 'xray-always'. We should be able to use this attribute for other instrumentation approaches.
- Supporting a function attribute named 'xray-instruction-threshold' used to determine whether a function is instrumented with a minimum number of instructions (IR instruction counts).
- X86-specific nop sleds as described in the white paper.
- A machine function pass that adds the different instrumentation marker instructions at a very late stage.
- A way of identifying which return opcode is considered "normal" for each architecture.

There are some caveats here:

1) We don't handle PATCHABLE_RET in platforms other than x86_64 yet -- this means if IR used PATCHABLE_RET directly instead of a normal ret, instruction lowering for that platform might do the wrong thing. We think this should be handled at instruction selection time to by default be unpacked for platforms where XRay is not availble yet.

2) The generated section for X86 is different from what is described from the white paper for the sole reason that LLVM allows us to do this neatly. We're taking the opportunity to deviate from the white paper from this perspective to allow us to get richer information from the runtime library.

Reviewers: sanjoy, eugenis, kcc, pcc, echristo, rnk

Subscribers: niravd, majnemer, atrick, rnk, emaste, bmakam, mcrosier, mehdi_amini, llvm-commits

Differential Revision: http://reviews.llvm.org/D19904

llvm-svn: 275367
2016-07-14 04:06:33 +00:00
..
FileCheck [FileCheck] Add --check-prefixes as a shorthand for multiple --check-prefix options. 2016-06-14 14:28:04 +00:00
KillTheDoctor Explicitly specify the ANSI version of these Win32 APIs. While these are seemingly unrelated changes, they are all NFC because we currently default to the ANSI versions of the APIs when building for Windows. This simply makes the ANSI usage explicit. 2016-06-23 14:45:54 +00:00
LLVMVisualizers Improved Visual Studio 2015 visualization of SmallVectorImpl 2016-06-13 01:43:14 +00:00
Misc Delete mergefunctions.clang.svn.patch 2016-04-12 19:44:40 +00:00
PerfectShuffle Remove autoconf support 2016-01-26 21:29:08 +00:00
TableGen XRay: Add entry and exit sleds 2016-07-14 04:06:33 +00:00
Target/ARM
abtest abtest: Cleanup, improve comments 2016-03-26 04:07:55 +00:00
bugpoint
count Remove autoconf support 2016-01-26 21:29:08 +00:00
crosstool
emacs Cleaning up LLVM IR mode for Emacs. 2015-09-10 13:44:28 +00:00
fpcmp Remove autoconf support 2016-01-26 21:29:08 +00:00
gdb-scripts Reference gdb python type printer scripts from SmallString, SmallVector, ArrayRef, and StringRef 2016-06-01 01:02:32 +00:00
git
git-svn
jedit Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
kate Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
lint
lit [lit] Add SANITIZER_IGNORE_CVE_2016_2143 to pass_vars. 2016-06-26 21:49:58 +00:00
llvm-build llvm-config: Add preliminary Windows support 2016-02-09 19:41:14 +00:00
llvm-lit Remove autoconf support 2016-01-26 21:29:08 +00:00
not Remove autoconf support 2016-01-26 21:29:08 +00:00
release If the revision number starts with r, drop it. It will get added back 2016-06-18 23:23:38 +00:00
testgen
textmate
unittest Search for llvm-symbolizer binary in the same directory as argv[0], before 2016-06-09 00:53:21 +00:00
valgrind
vim vim: separate the keywords into one per line 2016-07-13 03:47:58 +00:00
yaml-bench Remove autoconf support 2016-01-26 21:29:08 +00:00
DSAclean.py
DSAextract.py
GenLibDeps.pl Remove bit-rotten CppBackend. 2016-05-05 14:35:40 +00:00
GetRepositoryPath
GetSourceVersion
LLVMBuild.txt
UpdateCMakeLists.pl
bisect
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
create_ladder_graph.py
extract_symbols.py Make extract_symbols.py be compatible with Python 3 2016-07-01 17:05:58 +00:00
findmisopt
findoptdiff Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
findsym.pl
getsrcs.sh
lldbDataFormatters.py
llvm-compilers-check
llvm-native-gxx
llvm.grm
llvmdo
llvmgrep
makellvm
prepare-code-coverage-artifact.py Add support for collating profiles for use with code coverage 2016-06-13 23:33:48 +00:00
schedcover.py [MISched] Python script to check coverage of misched info 2015-10-12 08:50:47 +00:00
shuffle_fuzz.py [Utils] Updated shuffle fuzz script to generate more modern (valid) IR. 2015-11-22 16:04:32 +00:00
sort_includes.py
test_debuginfo.pl
update_llc_test_checks.py [X86][AVX512] Add support for masked shuffle comments 2016-07-03 13:08:29 +00:00
update_test_checks.py [X86][AVX512] Add support for masked shuffle comments 2016-07-03 13:08:29 +00:00
wciia.py