-=======
-bool CdsPass::runOnFunction(Function &F) {
- if (F.getName() == "main")
- F.setName("user_main");
-
- initializeCallbacks( *F.getParent() );
-
- SmallVector<Instruction*, 8> AllLoadsAndStores;
- SmallVector<Instruction*, 8> LocalLoadsAndStores;
- SmallVector<Instruction*, 8> AtomicAccesses;
-
- std::vector<Instruction *> worklist;
-
- bool Res = false;
- const DataLayout &DL = F.getParent()->getDataLayout();
-
- errs() << "Before\n";
- F.dump();
-
- for (auto &B : F) {
- for (auto &I : B) {
- if ( (&I)->isAtomic() ) {
- AtomicAccesses.push_back(&I);
- } else if (isa<LoadInst>(I) || isa<StoreInst>(I)) {
- LocalLoadsAndStores.push_back(&I);
- }
- }
- chooseInstructionsToInstrument(LocalLoadsAndStores, AllLoadsAndStores, DL);
- }
-
- for (auto Inst : AllLoadsAndStores) {
- Res |= instrumentLoadOrStore(Inst, DL);
- }
-
- for (auto Inst : AtomicAccesses) {
- Res |= instrumentAtomic(Inst);
- }
-
- errs() << "After\n";
- F.dump();
->>>>>>> 0d737ead79278a1a67c5829f9c6bf84ee6a90cec