Andrea Di Biagio a34cab9be7 [InstCombine] Fix wrong folding of constant comparison involving ahsr and negative quantities (PR20945).
Example:
define i1 @foo(i32 %a) {
  %shr = ashr i32 -9, %a
  %cmp = icmp ne i32 %shr, -5
  ret i1 %cmp
}

Before this fix, the instruction combiner wrongly thought that %shr
could have never been equal to -5. Therefore, %cmp was always folded to 'true'.
However, when %a is equal to 1, then %cmp evaluates to 'false'. Therefore,
in this example, it is not valid to fold %cmp to 'true'.
The problem was only affecting the case where the comparison was between
negative quantities where one of the quantities was obtained from arithmetic
shift of a negative constant.

This patch fixes the problem with the wrong folding (fixes PR20945).
With this patch, the 'icmp' from the example is now simplified to a
comparison between %a and 1. This still allows us to get rid of the arithmetic
shift (%shr).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217950 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-17 11:32:31 +00:00
2014-08-14 15:15:09 +00:00
2014-09-02 22:28:02 +00:00
2014-09-12 11:08:59 +00:00
2014-09-17 08:12:12 +00:00
2014-04-07 03:57:04 +00:00
2014-03-02 13:08:46 +00:00
2014-06-25 13:13:36 +00:00
2014-08-14 15:15:09 +00:00
2014-03-12 22:40:22 +00:00
2014-07-16 16:50:34 +00:00
2014-09-02 22:28:02 +00:00
2014-04-26 19:05:45 +00:00

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

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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.
Description
Old fork of llvm-mirror, used on older RPCS3 builds
Readme 850 MiB
Languages
LLVM 52.9%
C++ 32.7%
Assembly 13.2%
Python 0.4%
C 0.4%
Other 0.3%