Bill Wendling 7d9f2b93a3 This test case:
long test(long x) { return (x & 123124) | 3; }

Currently compiles to:

_test:
        orl     $3, %edi
        movq    %rdi, %rax
        andq    $123127, %rax
        ret

This is because instruction and DAG combiners canonicalize

  (or (and x, C), D) -> (and (or, D), (C | D))

However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97616 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-03 00:35:56 +00:00
..
2010-02-11 06:24:37 +00:00
2010-02-17 00:54:58 +00:00
2010-01-18 22:00:46 +00:00
2010-01-05 21:54:09 +00:00
2010-01-11 23:18:33 +00:00
2010-01-05 21:32:59 +00:00
2009-12-21 06:08:50 +00:00
2009-12-02 05:34:35 +00:00
2010-03-03 00:35:56 +00:00

This directory contains test cases for the instcombine transformation.  The
dated tests are actual bug tests, whereas the named tests are used to test
for features that the this pass should be capable of performing.