@@ -1011,25 +1011,22 @@ static bool isSimplePointerUseValidToReplace(const TargetTransformInfo &TTI,
1011
1011
Use &U, unsigned AddrSpace) {
1012
1012
User *Inst = U.getUser ();
1013
1013
unsigned OpNo = U.getOperandNo ();
1014
- bool VolatileIsAllowed = false ;
1015
- if (auto *I = dyn_cast<Instruction>(Inst))
1016
- VolatileIsAllowed = TTI.hasVolatileVariant (I, AddrSpace);
1017
1014
1018
1015
if (auto *LI = dyn_cast<LoadInst>(Inst))
1019
1016
return OpNo == LoadInst::getPointerOperandIndex () &&
1020
- (VolatileIsAllowed || !LI->isVolatile ());
1017
+ (!LI->isVolatile () || TTI. hasVolatileVariant (LI, AddrSpace ));
1021
1018
1022
1019
if (auto *SI = dyn_cast<StoreInst>(Inst))
1023
1020
return OpNo == StoreInst::getPointerOperandIndex () &&
1024
- (VolatileIsAllowed || !SI->isVolatile ());
1021
+ (!SI->isVolatile () || TTI. hasVolatileVariant (SI, AddrSpace ));
1025
1022
1026
1023
if (auto *RMW = dyn_cast<AtomicRMWInst>(Inst))
1027
1024
return OpNo == AtomicRMWInst::getPointerOperandIndex () &&
1028
- (VolatileIsAllowed || !RMW->isVolatile ());
1025
+ (!RMW->isVolatile () || TTI. hasVolatileVariant (RMW, AddrSpace ));
1029
1026
1030
1027
if (auto *CmpX = dyn_cast<AtomicCmpXchgInst>(Inst))
1031
1028
return OpNo == AtomicCmpXchgInst::getPointerOperandIndex () &&
1032
- (VolatileIsAllowed || !CmpX->isVolatile ());
1029
+ (!CmpX->isVolatile () || TTI. hasVolatileVariant (CmpX, AddrSpace ));
1033
1030
1034
1031
return false ;
1035
1032
}
0 commit comments