Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C)
authorDuncan Sands <baldrick@free.fr>
Wed, 22 Dec 2010 13:36:08 +0000 (13:36 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 22 Dec 2010 13:36:08 +0000 (13:36 +0000)
commit37bf92b5238434b00fde79347ba5336e7554e562
treee0594f4d7ad0969d3807ec13dc85a8b50e0381f8
parentfc7072c3c4db03555a0a62220d61a2b85acd01fd
Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C)
if both A op B and A op C simplify.  This fires fairly often but doesn't
make that much difference.  On gcc-as-one-file it removes two "and"s and
turns one branch into a select.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122399 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombine.h
lib/Transforms/InstCombine/InstCombineAddSub.cpp
lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
lib/Transforms/InstCombine/InstructionCombining.cpp
test/Transforms/InstCombine/2010-11-23-Distributed.ll