1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
Go to file
Teresa Johnson 2ba9de8337 [SimplifyCFG] Look for control flow changes instead of side effects.
When passingValueIsAlwaysUndefined scans for an instruction between an
inst with a null or undef argument and its first use, it was checking
for instructions that may have side effects, which is a superset of the
instructions it intended to find (as per the comments, control flow
changing instructions that would prevent reaching the uses). Switch
to using isGuaranteedToTransferExecutionToSuccessor() instead.

Without this change, when enabling -fwhole-program-vtables, which causes
assumes to be inserted by clang, we can get different simplification
decisions. In particular, when building with instrumentation FDO it can
affect the optimizations decisions before FDO matching, leading to some
mismatches.

I had to modify d83507-knowledge-retention-bug.ll since this fix enables
more aggressive optimization of that code such that it no longer tested
the original bug it was meant to test. I removed the undef which still
provokes the original failure (confirmed by temporarily reverting the
fix) and also changed it to just invoke the passes of interest to narrow
the testing.

Similarly I needed to adjust code for UnreachableEliminate.ll to avoid
an undef which was causing the function body to get optimized away with
this fix.

Differential Revision: https://reviews.llvm.org/D101507
2021-05-03 13:32:22 -07:00
benchmarks
bindings [NFC][OCaml] Reformat to clean up following CAMLprim removal 2021-04-05 10:55:08 +01:00
cmake [cmake] Use -ffunction-sections and -Wl,--gc-sections on MinGW targets 2021-04-30 10:53:40 +03:00
docs [docs][NewPM] Add section on analyses 2021-05-03 10:15:02 -07:00
examples [Orc][examples] Add missing FileCheck for lit test and polish output 2021-04-07 11:12:20 +02:00
include [OpenMPIRBuilder] Add createOffloadMaptypes and createOffloadMapnames functions 2021-05-03 15:42:32 -04:00
lib [SimplifyCFG] Look for control flow changes instead of side effects. 2021-05-03 13:32:22 -07:00
projects
resources
runtimes [runtimes] Add the libc project to the list of runtimes. 2021-03-23 17:33:03 +00:00
test [SimplifyCFG] Look for control flow changes instead of side effects. 2021-05-03 13:32:22 -07:00
tools Reland "AMDGPU/llvm-readobj: Add missing tests for note parsing/displaying" 2021-05-02 22:56:17 -04:00
unittests [OpenMPIRBuilder] Add createOffloadMaptypes and createOffloadMapnames functions 2021-05-03 15:42:32 -04:00
utils Partial revert of "Use std::foo_t rather than std::foo in LLVM." in googlebench 2021-05-03 07:49:30 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore Remove .gitignore entries not relevant in the monorepo. 2021-04-07 12:25:02 -07:00
CMakeLists.txt [cmake] Configure policy CMP0116 2021-04-23 08:57:40 -07:00
CODE_OWNERS.TXT [M68k][CODE_OWNERS](0/8) Add code owner for the M68k target 2021-03-08 12:30:56 -08:00
configure
CREDITS.TXT Update personal info in CREDITS.TXT 2021-04-11 19:25:02 +08:00
LICENSE.TXT
llvm.spec.in
README.txt
RELEASE_TESTERS.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.