llvm-project/llvm
Max Kazantsev 073b254cff [SimplifyCFG] Redirect switch cases that lead to UB into an unreachable block
When following a case of a switch instruction is guaranteed to lead to
UB, we can safely break these edges and redirect those cases into a newly
created unreachable block. As result, CFG will become simpler and we can
remove some of Phi inputs to make further analyzes easier.

Patch by Dmitry Bakunevich!

Differential Revision: https://reviews.llvm.org/D109428
Reviewed By: lebedev.ri
2021-09-21 10:45:19 +07:00
..
benchmarks
bindings [NFC][C API] Make LLVMSetInstrParamAlignment's index param type LLVMAttributeIndex 2021-09-07 15:13:45 -07:00
cmake Revert "Fix CLANG_ENABLE_STATIC_ANALYZER=OFF building all analyzer source" 2021-09-20 16:18:03 -04:00
docs llvm doc: remove the old reference to subversion and add a link to the GH repo instead 2021-09-18 12:45:32 +02:00
examples
include [NFC] Rename Context->CtxI in SCEV for uniformity reasons 2021-09-21 10:12:20 +07:00
lib [SimplifyCFG] Redirect switch cases that lead to UB into an unreachable block 2021-09-21 10:45:19 +07:00
projects
resources
runtimes [libomptarget][amdcgn] Only add opt/llvm-link dependency if TARGET is available 2021-08-30 17:32:11 +02:00
test [SimplifyCFG] Redirect switch cases that lead to UB into an unreachable block 2021-09-21 10:45:19 +07:00
tools [RISCV] Add a pass to recognize VLS strided loads/store from gather/scatter. 2021-09-20 09:39:44 -07:00
unittests GlobalISel/Utils: Refactor integer/float constant match functions 2021-09-17 11:22:13 +02:00
utils [X86] Rename the X86WinAllocaExpander pass and related symbols to "DynAlloca". NFC. 2021-09-20 16:19:28 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [cmake] Put check from D110016 behind (default-on) flag 2021-09-20 15:09:05 -04: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.