Skip to content

Commit

Permalink
In SimplifyDemandedUseBits, use computeKnownBits directly to handle C…
Browse files Browse the repository at this point in the history
…onstants

Currently we don't explicitly process ConstantDataSequential, ConstantAggregateZero, or ConstantVector, or Undef before applying the Depth limit. Instead they occur after the depth check in the non-instruction path.

For the constant types that we do handle, the code is replicated from computeKnownBits.

This patch fixes the missing constant handling and the reduces the amount of code by just using computeKnownBits directly for any type of Constant.

Differential Revision: https://reviews.llvm.org/D32123



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300849 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
topperc committed Apr 20, 2017
1 parent 503ce9f commit 1772e90
Showing 1 changed file with 4 additions and 15 deletions.
19 changes: 4 additions & 15 deletions lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,27 +117,16 @@ Value *InstCombiner::SimplifyDemandedUseBits(Value *V, APInt DemandedMask,
KnownOne.getBitWidth() == BitWidth &&
"Value *V, DemandedMask, KnownZero and KnownOne "
"must have same BitWidth");
const APInt *C;
if (match(V, m_APInt(C))) {
// We know all of the bits for a scalar constant or a splat vector constant!
KnownOne = *C;
KnownZero = ~KnownOne;
return nullptr;
}
if (isa<ConstantPointerNull>(V)) {
// We know all of the bits for a constant!
KnownOne.clearAllBits();
KnownZero.setAllBits();

if (isa<Constant>(V)) {
computeKnownBits(V, KnownZero, KnownOne, Depth, CxtI);
return nullptr;
}

KnownZero.clearAllBits();
KnownOne.clearAllBits();
if (DemandedMask == 0) { // Not demanding any bits from V.
if (isa<UndefValue>(V))
return nullptr;
if (DemandedMask == 0) // Not demanding any bits from V.
return UndefValue::get(VTy);
}

if (Depth == 6) // Limit search depth.
return nullptr;
Expand Down

0 comments on commit 1772e90

Please sign in to comment.