1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
Go to file
Eli Friedman 915fc454ff [ScalarEvolution] Fix overflow in computeBECount.
There are two issues with the current implementation of computeBECount:

1. It doesn't account for the possibility that adding "Stride - 1" to
Delta might overflow. For almost all loops, it doesn't, but it's not
actually proven anywhere.
2. It doesn't account for the possibility that Stride is zero. If Delta
is zero, the backedge is never taken; the value of Stride isn't
relevant. To handle this, we have to make sure that the expression
returned by computeBECount evaluates to zero.

To deal with this, add two new checks:

1. Use a variety of tricks to try to prove that the addition doesn't
overflow.  If the proof is impossible, use an alternate sequence which
never overflows.
2. Use umax(Stride, 1) to handle the possibility that Stride is zero.

Differential Revision: https://reviews.llvm.org/D105216
2021-07-08 10:09:55 -07:00
benchmarks
bindings [SanitizeCoverage] Add support for NoSanitizeCoverage function attribute 2021-05-25 12:57:14 +02:00
cmake [cmake] Invoke strip without -l and with non-grouped flags. 2021-07-01 13:37:58 -07:00
docs [LangRef] Clarify !associated 2021-07-08 10:07:10 -07:00
examples [Orc] At CBindings for LazyRexports 2021-07-01 21:52:05 +02:00
include [ScalarEvolution] Fix overflow in computeBECount. 2021-07-08 10:09:55 -07:00
lib [ScalarEvolution] Fix overflow in computeBECount. 2021-07-08 10:09:55 -07:00
projects [RFC][debuginfo-test] Rename debug-info lit tests for general purposes 2021-06-28 11:31:40 +01:00
resources
runtimes [runtimes] Fix umbrella component targets 2021-06-12 19:49:44 -07:00
test [ScalarEvolution] Fix overflow in computeBECount. 2021-07-08 10:09:55 -07:00
tools Revert "[MCA] [AMDGPU] Adding an implementation to AMDGPUCustomBehaviour for handling s_waitcnt instructions." 2021-07-07 20:48:42 -07:00
unittests Recommit: Support: add llvm::thread class that supports specifying stack size. 2021-07-08 16:22:26 +01:00
utils [gn build] Port 321c2ea91cb1 2021-07-08 15:35:54 +00:00
.clang-format
.clang-tidy NFC: .clang-tidy: Inherit configs from parents to improve maintainability 2021-06-08 08:25:59 -07:00
.gitattributes
.gitignore Remove .gitignore entries not relevant in the monorepo. 2021-04-07 12:25:02 -07:00
CMakeLists.txt [RFC][debuginfo-test] Rename debug-info lit tests for general purposes 2021-06-28 11:31:40 +01: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 Test commit. 2020-03-14 18:08:26 -07:00
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.