llvm-project/llvm
Nuno Lopes 24a49e99f3 [NewGVN] FIx phi-of-ops in the presence of memory read operations
The phi-of-ops functionality has a function OpIsSafeForPHIOfOps
to determine when it's safe to create the new phi.
But this function only checks for the obvious dominator conditions
and ignores memory.
This patch takes the conservative approach and disables phi-of-ops
whenever there's a load that doesn't dominate the phi, as its
value may be affected by a store inside the loop.

This can be improved later to check aliasing between the
load/stores.

Fixes https://llvm.org/PR53277

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D117999
2022-01-26 10:19:18 +00:00
..
benchmarks
bindings
cmake [cmake] Some NFC changes in preparation for accomodating `Ninja Multi-Config` 2022-01-25 11:46:44 -08:00
docs [docs] HowToCrossCompileLLVM.rst: prefer --target= over legacy -target 2022-01-25 12:39:32 -08:00
examples
include [NFC] Additional header dependency cleanup LLVMSupport 2022-01-26 11:16:15 +01:00
lib [NewGVN] FIx phi-of-ops in the presence of memory read operations 2022-01-26 10:19:18 +00:00
projects
resources
runtimes [CMake] Passthrough OSX CMake options to builtins and runtimes 2022-01-21 16:54:22 -08:00
test [NewGVN] FIx phi-of-ops in the presence of memory read operations 2022-01-26 10:19:18 +00:00
tools [NFC] Remove uses of PointerType::getElementType() 2022-01-25 09:44:52 +01:00
unittests [OpenMPIRBuilderTest] Avoid pointer element type access 2022-01-26 11:02:43 +01:00
utils [lld-macho] Rename CallGraphSort.{h,cpp} to SectionPriorities 2022-01-25 12:15:14 -05:00
.clang-format
.clang-tidy
.gitattributes [split-file] Respect input file's line endings 2022-01-21 18:45:03 -06:00
.gitignore
CMakeLists.txt [cmake] Make include(GNUInstallDirs) always below project(..) 2022-01-20 18:59:17 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

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.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.