Go to file
Jessica Paquette 3291e7353e [MachineOutliner] AArch64: Handle instrs that use SP and will never need fixups
This commit does two things. Firstly, it adds a collection of flags which can
be passed along to the target to encode information about the MBB that an
instruction lives in to the outliner.

Second, it adds some of those flags to the AArch64 outliner in order to add
more stack instructions to the list of legal instructions that are handled
by the outliner. The two flags added check if

- There are calls in the MachineBasicBlock containing the instruction
- The link register is available in the entire block

If the link register is available and there are no calls, then a stack
instruction can always be outlined without fixups, regardless of what it is,
since in this case, the outliner will never modify the stack to create a
call or outlined frame.

The motivation for doing this was checking which instructions are most often
missed by the outliner. Instructions like, say

%sp<def> = ADDXri %sp, 32, 0; flags: FrameDestroy

are very common, but cannot be outlined in the case that the outliner might
modify the stack. This commit allows us to outline instructions like this.
  

llvm-svn: 322048
2018-01-09 00:26:18 +00:00
clang Document attribute target multiversioning. 2018-01-08 23:36:29 +00:00
clang-tools-extra [clang-tidy] Fix DanglingHandleCheck for the correct conversion operation between basic_string and basic_string_view. 2018-01-08 15:59:08 +00:00
compiler-rt o -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17 2018-01-05 07:57:24 +00:00
debuginfo-tests [debuginfo-tests] Support moving debuginfo-tests to llvm/projects 2017-12-12 16:54:20 +00:00
libclc configure.py: Add gfx900 (Vega, Raven) 2017-11-27 11:14:06 +00:00
libcxx [libcxx] Support the use of compiler-rt in lit tests 2018-01-08 23:36:53 +00:00
libcxxabi Update version to 7.0.0svn 2018-01-03 15:42:34 +00:00
libunwind Update PACKAGE_VERSION to 7.0.0svn 2018-01-03 16:59:48 +00:00
lld Rewrite our relocation processing. 2018-01-09 00:13:54 +00:00
lldb [test] Use full PATH lookup for tools 2018-01-06 10:20:25 +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 [MachineOutliner] AArch64: Handle instrs that use SP and will never need fixups 2018-01-09 00:26:18 +00:00
openmp Correct types of pointers to doacross_num_done 2018-01-07 16:54:36 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly Docs, release notes: update version to 7.0.0 2018-01-03 15:54:54 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

Low Level Virtual Machine (LLVM)

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