Go to file
Nemanja Ivanovic 6c9a392c8e [PowerPC] Move TOC save to prologue when profitable
The indirect call sequence on PPC requires that the TOC base register be saved
prior to the indirect call and restored after the call since the indirect call
may branch to a global entry point in another DSO which will update the TOC
base. Over the last couple of years, we have improved this to:

- be able to hoist TOC saves from loops (with changes to MachineLICM)
- avoid multiple saves when one dominates the other[s]

However, it is still possible to have multiple TOC saves dynamically in the
execution path if there is no dominance relationship between them.

This patch moves the TOC save to the prologue when one of the TOC saves is in a
block that post-dominates entry (i.e. it cannot be avoided) or if it is in a
block that is hotter than entry.

Differential revision: https://reviews.llvm.org/D63803

llvm-svn: 365232
2019-07-05 18:38:09 +00:00
clang Add a comment explaining why a function exists 2019-07-05 15:12:31 +00:00
clang-tools-extra [clangd] Added highlighting for variable references (declrefs) 2019-07-05 13:06:03 +00:00
compiler-rt [TSan] Improve handling of stack pointer mangling in {set,long}jmp, pt.5 2019-07-05 18:00:16 +00:00
debuginfo-tests Make nrvo-string test more robust. 2019-06-27 20:38:37 +00:00
libclc travis: Add LLVM-8 build 2019-03-27 21:28:31 +00:00
libcxx [libc++] Do not cleverly link against libc++abi just because it happens to be there 2019-07-05 17:06:23 +00:00
libcxxabi [demangle] Support for C++2a char8_t 2019-06-28 19:54:19 +00:00
libunwind [libunwind][AArch64] Fix libunwind::Registers_arm64::jumpto 2019-06-17 11:00:21 +00:00
lld lld, llvm-dlltool, llvm-lib: Use getAsString() instead of getSpelling() for printing unknown args 2019-07-05 12:31:32 +00:00
lldb Change LaunchThread interface to return an expected. 2019-07-05 17:42:08 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm [PowerPC] Move TOC save to prologue when profitable 2019-07-05 18:38:09 +00:00
openmp Create a runtime option to disable task throttling. 2019-07-02 15:10:20 +00:00
parallel-libs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
polly [test] Add wrap flags after D61934. 2019-06-17 19:17:07 +00:00
pstl [pstl] Add missing includes 2019-07-05 16:05:26 +00:00
.arcconfig Update monorepo .arcconfig with new project callsign. 2019-01-31 14:34:59 +00:00
.clang-format Add .clang-tidy and .clang-format files to the toplevel of the 2019-01-29 16:43:16 +00:00
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
.gitignore Add a reduced copy of the llvm .gitignore 2019-04-09 00:52:49 +00:00
README.md

README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.