// errs() << "load and store are replaced\n";
}
for (auto Inst : AtomicAccesses) {
Res |= instrumentAtomic(Inst);
// errs() << "load and store are replaced\n";
}
for (auto Inst : AtomicAccesses) {
Res |= instrumentAtomic(Inst);
Instruction* funcInst=CallInst::Create(CDSAtomicStore[index], args,"");
ReplaceInstWithInst(SI, funcInst);
Instruction* funcInst=CallInst::Create(CDSAtomicStore[index], args,"");
ReplaceInstWithInst(SI, funcInst);
} else if (LoadInst *LI = dyn_cast<LoadInst>(I)) {
int atomic_order_index = getAtomicOrderIndex(LI->getOrdering());
} else if (LoadInst *LI = dyn_cast<LoadInst>(I)) {
int atomic_order_index = getAtomicOrderIndex(LI->getOrdering());
Instruction* funcInst=CallInst::Create(CDSAtomicLoad[index], args, "");
ReplaceInstWithInst(LI, funcInst);
Instruction* funcInst=CallInst::Create(CDSAtomicLoad[index], args, "");
ReplaceInstWithInst(LI, funcInst);
} else if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(I)) {
int atomic_order_index = getAtomicOrderIndex(RMWI->getOrdering());
} else if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(I)) {
int atomic_order_index = getAtomicOrderIndex(RMWI->getOrdering());
Instruction* funcInst = CallInst::Create(CDSAtomicRMW[RMWI->getOperation()][index], args, "");
ReplaceInstWithInst(RMWI, funcInst);
Instruction* funcInst = CallInst::Create(CDSAtomicRMW[RMWI->getOperation()][index], args, "");
ReplaceInstWithInst(RMWI, funcInst);
CallInst *funcInst = CallInst::Create(CDSAtomicThreadFence, Args);
ReplaceInstWithInst(FI, funcInst);
CallInst *funcInst = CallInst::Create(CDSAtomicThreadFence, Args);
ReplaceInstWithInst(FI, funcInst);