llvm-project/llvm
Hideto Ueno 188f9a348d [Attributor] AAValueConstantRange: Value range analysis using constant range
Summary:
This patch introduces `AAValueConstantRange`, which answers a possible range for integer value in a specific program point.
One of the motivations is propagating existing `range` metadata. (I think we need to change the situation that `range` metadata cannot be put to Argument).

The state is a tuple of `ConstantRange` and it is initialized to (known, assumed) = ([-∞, +∞], empty).

Currently, AAValueConstantRange is created in `getAssumedConstant` method when `AAValueSimplify` returns `nullptr`(worst state).

Supported
 - BinaryOperator(add, sub, ...)
 - CmpInst(icmp eq, ...)
 - !range metadata

`AAValueConstantRange` is not intended to extend to polyhedral range value analysis.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: phosek, davezarzycki, baziotis, hiraditya, javed.absar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71620
2020-01-15 16:34:23 +09:00
..
benchmarks
bindings [NFC] Fix trivial typos in comments 2020-01-06 10:50:26 +00:00
cmake Fix several issues with compiler extensions 2020-01-10 10:10:20 +01:00
docs [TableGen] Introduce an if/then/else statement. 2020-01-14 10:19:53 +00:00
examples [examples] Add missing dependency in llvm examples 2020-01-11 02:32:39 +09:00
include [Attributor] AAValueConstantRange: Value range analysis using constant range 2020-01-15 16:34:23 +09:00
lib [Attributor] AAValueConstantRange: Value range analysis using constant range 2020-01-15 16:34:23 +09:00
projects
resources
runtimes [llvm/runtimes] Add runtimes as a dependency of clang-bootstrap-deps 2019-12-16 16:58:15 -08:00
test [Attributor] AAValueConstantRange: Value range analysis using constant range 2020-01-15 16:34:23 +09:00
tools Removed PointerUnion3 and PointerUnion4 aliases in favor of the variadic template 2020-01-14 18:56:29 +01:00
unittests CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
utils CMake: Make most target symbols hidden by default 2020-01-14 19:46:52 -08:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Re-apply "[Examples] Add IRTransformations directory to examples." 2020-01-04 15:47:23 +00:00
CODE_OWNERS.TXT [VE] Target stub for NEC SX-Aurora 2020-01-09 11:17:35 +01:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.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.