diff options
Diffstat (limited to 'llvm/lib/IR/Instruction.cpp')
| -rw-r--r-- | llvm/lib/IR/Instruction.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/IR/Instruction.cpp b/llvm/lib/IR/Instruction.cpp index c1fafd759b5a..a8bb34f69c62 100644 --- a/llvm/lib/IR/Instruction.cpp +++ b/llvm/lib/IR/Instruction.cpp @@ -865,7 +865,7 @@ const char *Instruction::getOpcodeName(unsigned OpCode) { bool Instruction::hasSameSpecialState(const Instruction *I2, bool IgnoreAlignment, bool IntersectAttrs) const { - auto I1 = this; + const auto *I1 = this; assert(I1->getOpcode() == I2->getOpcode() && "Can not compare special state of different instructions"); @@ -918,6 +918,8 @@ bool Instruction::hasSameSpecialState(const Instruction *I2, FI->getSyncScopeID() == cast<FenceInst>(I2)->getSyncScopeID(); if (const AtomicCmpXchgInst *CXI = dyn_cast<AtomicCmpXchgInst>(I1)) return CXI->isVolatile() == cast<AtomicCmpXchgInst>(I2)->isVolatile() && + (CXI->getAlign() == cast<AtomicCmpXchgInst>(I2)->getAlign() || + IgnoreAlignment) && CXI->isWeak() == cast<AtomicCmpXchgInst>(I2)->isWeak() && CXI->getSuccessOrdering() == cast<AtomicCmpXchgInst>(I2)->getSuccessOrdering() && @@ -928,6 +930,8 @@ bool Instruction::hasSameSpecialState(const Instruction *I2, if (const AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(I1)) return RMWI->getOperation() == cast<AtomicRMWInst>(I2)->getOperation() && RMWI->isVolatile() == cast<AtomicRMWInst>(I2)->isVolatile() && + (RMWI->getAlign() == cast<AtomicRMWInst>(I2)->getAlign() || + IgnoreAlignment) && RMWI->getOrdering() == cast<AtomicRMWInst>(I2)->getOrdering() && RMWI->getSyncScopeID() == cast<AtomicRMWInst>(I2)->getSyncScopeID(); if (const ShuffleVectorInst *SVI = dyn_cast<ShuffleVectorInst>(I1)) |
