llvm-project/llvm
Adam Nemet c4866d29dd [LAA] Try to prove non-wrapping of pointers if SCEV cannot
Summary:
Scalar evolution does not propagate the non-wrapping flags to values
that are derived from a non-wrapping induction variable because
the non-wrapping property could be flow-sensitive.

This change is a first attempt to establish the non-wrapping property in
some simple cases.  The main idea is to look through the operations
defining the pointer.  As long as we arrive to a non-wrapping AddRec via
a small chain of non-wrapping instruction, the pointer should not wrap
either.

I believe that this essentially is what Andy described in
http://article.gmane.org/gmane.comp.compilers.llvm.cvs/220731 as the way
forward.

Reviewers: aschwaighofer, nadav, sanjoy, atrick

Reviewed By: atrick

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D10472

llvm-svn: 240798
2015-06-26 17:25:43 +00:00
..
autoconf [autoconf] Detect OLE32 for mingw. 2015-06-18 04:16:05 +00:00
bindings Update LLVM bindings after r239940. Apparently these aren't included in 2015-06-18 11:51:16 +00:00
cmake Spelling fixes in comments. 2015-06-24 21:46:53 +00:00
docs Make llvm-dwarfdump exit with non-zero exit code if error was occured. 2015-06-25 23:40:15 +00:00
examples Simplify the Mangler interface now that DataLayout is mandatory. 2015-06-23 13:59:29 +00:00
include Fix ODR violation waiting to happen by making static function definitions in VectorUtils.h non-static and defined out of line 2015-06-26 16:57:30 +00:00
lib [LAA] Try to prove non-wrapping of pointers if SCEV cannot 2015-06-26 17:25:43 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
resources In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. 2015-06-12 15:58:29 +00:00
test [LAA] Try to prove non-wrapping of pointers if SCEV cannot 2015-06-26 17:25:43 +00:00
tools Silencing spurious MSVC C4189 warnings regarding local variables that are initialized but not used; NFC. This bug has been reported to Microsoft (https://connect.microsoft.com/VisualStudio/feedback/details/1475983). 2015-06-26 14:51:22 +00:00
unittests AsmPrinter: Use an intrusively linked list for DIE::Children 2015-06-25 23:52:10 +00:00
utils Pass 2 more variables to lit tests. 2015-06-23 20:57:26 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Do not ignore projects/LLVMBuild.txt in git repo 2015-06-26 10:13:56 +00:00
CMakeLists.txt Do not pass -allow-shlib-undefined to the Solaris linker. 2015-06-22 18:24:01 +00:00
CODE_OWNERS.TXT Added Andrey Churbanov as the owner of the OpenMP runtime library code 2015-05-05 20:17:53 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
Makefile.rules
README.txt
configure [autoconf] Detect OLE32 for mingw. 2015-06-18 04:16:05 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.