diff options
author | Nikita Popov <npopov@redhat.com> | 2025-08-28 15:51:01 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2025-08-28 15:53:37 +0200 |
commit | 24924a8be1bb7c6083303330ecc0e7dc647247d3 (patch) | |
tree | bd7e116d36ef9f4524516ac5baf6bcddad4acf29 /llvm/lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | a01933d586343b7006bf354dc6557ba65621072e (diff) | |
download | llvm-24924a8be1bb7c6083303330ecc0e7dc647247d3.zip llvm-24924a8be1bb7c6083303330ecc0e7dc647247d3.tar.gz llvm-24924a8be1bb7c6083303330ecc0e7dc647247d3.tar.bz2 |
[SimplifyCFG] Move token type check into canReplaceOperandWithVariable()
We cannot form phis/selects of token type, so this should be checked
inside canReplaceOperandWithVariable().
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index ef110a6..93ace4d 100644 --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -2260,10 +2260,6 @@ static bool canSinkInstructions( for (unsigned OI = 0, OE = I0->getNumOperands(); OI != OE; ++OI) { Value *Op = I0->getOperand(OI); - if (Op->getType()->isTokenTy()) - // Don't touch any operand of token type. - return false; - auto SameAsI0 = [&I0, OI](const Instruction *I) { assert(I->getNumOperands() == I0->getNumOperands()); return I->getOperand(OI) == I0->getOperand(OI); @@ -2764,8 +2760,7 @@ bool CompatibleSets::shouldBelongToSameSet(ArrayRef<InvokeInst *> Invokes) { Use &U1 = std::get<1>(Ops); if (U0 == U1) return false; - return U0->getType()->isTokenTy() || - !canReplaceOperandWithVariable(cast<Instruction>(U0.getUser()), + return !canReplaceOperandWithVariable(cast<Instruction>(U0.getUser()), U0.getOperandNo()); }; assert(Invokes.size() == 2 && "Always called with exactly two candidates."); |