Go to file
Hans Wennborg 5c0d7a24e8 Re-commit r355490 "[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default"
Original commit by Ayonam Ray.

This commit adds a regression test for the issue discovered in the
previous commit: that the range check for the jump table can only be
omitted if the fall-through destination of the jump table is
unreachable, which isn't necessarily true just because the default of
the switch is unreachable.

This addresses the missing optimization in PR41242.

> During the lowering of a switch that would result in the generation of a
> jump table, a range check is performed before indexing into the jump
> table, for the switch value being outside the jump table range and a
> conditional branch is inserted to jump to the default block. In case the
> default block is unreachable, this conditional jump can be omitted. This
> patch implements omitting this conditional branch for unreachable
> defaults.
>
> Differential Revision: https://reviews.llvm.org/D52002
> Reviewers: Hans Wennborg, Eli Freidman, Roman Lebedev

llvm-svn: 357067
2019-03-27 14:10:11 +00:00
clang Revert the r348352 "[clang] - Simplify tools::SplitDebugName." 2019-03-27 11:00:03 +00:00
clang-tools-extra Basic: Return a reference from FileManager::getVirtualFileSystem, NFC 2019-03-26 22:32:06 +00:00
compiler-rt Revert "[builtins] Rounding mode support for addxf3/subxf3" 2019-03-27 04:18:37 +00:00
debuginfo-tests Set config.lit_tools_dir, which is needed by lit.llvm.initialize. 2018-11-06 21:54:27 +00:00
libclc sincos: Simplify declaration headers. 2019-03-13 07:13:34 +00:00
libcxx [libc++] Fix return value of snprintf_l() on Windows when buffer is too small 2019-03-26 19:51:30 +00:00
libcxxabi Revert "[runtimes] Move libunwind, libc++abi and libc++ to lib/ and include/" 2019-03-08 20:33:55 +00:00
libunwind Revert "[runtimes] Move libunwind, libc++abi and libc++ to lib/ and include/" 2019-03-08 20:33:55 +00:00
lld Revert "[lld] Reapply "Prevent duplicate files in debug line header in dwarf 5."" 2019-03-26 19:57:13 +00:00
lldb minidump: Add ability to attach (breakpad) symbol files to placeholder modules 2019-03-27 10:54:10 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm Re-commit r355490 "[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default" 2019-03-27 14:10:11 +00:00
openmp [libomptarget] Introduce LIBOMPTARGET_ENABLE_DEBUG cmake option. 2019-03-26 15:19:15 +00:00
parallel-libs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
polly Moving ManagedMemoryRewritePass when hybrid option is selected 2019-03-25 23:26:59 +00:00
pstl [pstl][NFC] Remove some warnings 2019-03-25 20:44:07 +00:00
.arcconfig Update monorepo .arcconfig with new project callsign. 2019-01-31 14:34:59 +00:00
.clang-format Add .clang-tidy and .clang-format files to the toplevel of the 2019-01-29 16:43:16 +00:00
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
README.md

README.md

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.