Go to file
Philip Reames f562fc8dbf [LICM] Hoist stores of invariant values to invariant addresses out of loops
Teach LICM to hoist stores out of loops when the store writes to a location otherwise unused in the loop, writes a value which is invariant, and is guaranteed to execute if the loop is entered.

Worth noting is that this transformation is partially overlapping with the existing promotion transformation. Reasons this is worthwhile anyway include:
 * For multi-exit loops, this doesn't require duplication of the store.
 * It kicks in for case where we can't prove we exit through a normal exit (i.e. we may throw), but can prove the store executes before that possible side exit.

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

llvm-svn: 340974
2018-08-29 21:49:30 +00:00
clang [analyzer] Fix tests on 32-bit platforms by specifying the tuple explicitly 2018-08-29 21:18:47 +00:00
clang-tools-extra [clang-tidy] Add abseil-no-internal-dependencies check 2018-08-29 14:23:15 +00:00
compiler-rt [hwasan] simplify the realloc implementation: always allocate/deallocate on realloc. This may slowdown some realloc-heavy code, but at least at this point a want simpler code. Also added a test 2018-08-29 21:28:14 +00:00
debuginfo-tests Revert "(Retry) Add a basic integration test for C++ smart pointers" 2018-08-20 19:53:33 +00:00
libclc amdgcn: Use __constant AS for amdgcn builtins. 2018-08-03 15:14:08 +00:00
libcxx Use addressof instead of operator& in make_shared. Fixes PR38729. As a drive-by, make the same change in raw_storage_iterator (twice). 2018-08-28 13:29:30 +00:00
libcxxabi Port my recent changes from LLVM copy of the demangler: 2018-08-24 23:30:26 +00:00
libunwind NFC: Test commit access 2018-08-16 16:55:07 +00:00
lld [WebAssembly] clang-format (NFC) 2018-08-29 21:03:16 +00:00
lldb Don't include the Age in the UUID for CvRecordPdb70 UUID records in minidump files for Apple vendors. 2018-08-29 20:34:08 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm [LICM] Hoist stores of invariant values to invariant addresses out of loops 2018-08-29 21:49:30 +00:00
openmp [OPENMP][NVPTX] Replace assert() by ASSERT0() macro, NFC. 2018-08-29 19:22:06 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
README.md

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.