llvm-project/llvm/lib/Transforms
Craig Topper 1604f0773b [InstCombine] Remove canonicalization for (X & C1) | C2 --> (X | C2) & (C1|C2) when C1 & C2 have common bits.
It turns out that SimplifyDemandedInstructionBits will get called earlier and remove bits from C1 first. Effectively doing (X & (C1&C2)) | C2. So by the time it got to this check there could be no common bits.

I think the DAGCombiner has the same check but its check can be executed because it handles demanded bits later. I'll look at it next.

llvm-svn: 299384
2017-04-03 20:41:47 +00:00
..
Coroutines Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
Hello Add auto-exporting of symbols from tools so that plugins work on Windows 2016-05-26 11:16:43 +00:00
IPO ThinLTOBitcodeWriter: Use Module::global_values(). NFCI. 2017-03-30 23:43:08 +00:00
InstCombine [InstCombine] Remove canonicalization for (X & C1) | C2 --> (X | C2) & (C1|C2) when C1 & C2 have common bits. 2017-04-03 20:41:47 +00:00
Instrumentation Revert "[asan] Delay creation of asan ctor." 2017-03-27 23:11:50 +00:00
ObjCARC Rename AttributeSet to AttributeList 2017-03-21 16:57:19 +00:00
Scalar NewGVN: Handle coercion of constant stores, loads, memory insts. 2017-04-02 13:23:44 +00:00
Utils [BypassSlowDivision] Do not bypass division of hash-like values 2017-04-02 13:14:30 +00:00
Vectorize [LV] Transform truncations of non-primary induction variables 2017-03-27 20:07:38 +00:00
CMakeLists.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
LLVMBuild.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00