From 851f879f32bdb4487b3ee82c8e9139e0acdb4729 Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Thu, 12 May 2016 18:49:32 +0000 Subject: [PATCH] [PM] Make LowerAtomic a FunctionPass. Differential Revision: http://reviews.llvm.org/D20025 llvm-svn: 269322 --- llvm/lib/Transforms/Scalar/LowerAtomic.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/LowerAtomic.cpp b/llvm/lib/Transforms/Scalar/LowerAtomic.cpp index c7e75470f298..da245354e5f0 100644 --- a/llvm/lib/Transforms/Scalar/LowerAtomic.cpp +++ b/llvm/lib/Transforms/Scalar/LowerAtomic.cpp @@ -110,16 +110,27 @@ static bool LowerStoreInst(StoreInst *SI) { } namespace { - struct LowerAtomic : public BasicBlockPass { + struct LowerAtomic : public FunctionPass { static char ID; - LowerAtomic() : BasicBlockPass(ID) { + + LowerAtomic() : FunctionPass(ID) { initializeLowerAtomicPass(*PassRegistry::getPassRegistry()); } - bool runOnBasicBlock(BasicBlock &BB) override { - if (skipBasicBlock(BB)) + + bool runOnFunction(Function &F) override { + if (skipFunction(F)) return false; bool Changed = false; - for (BasicBlock::iterator DI = BB.begin(), DE = BB.end(); DI != DE; ) { + for (BasicBlock &BB: F) { + Changed |= runOnBasicBlock(BB); + } + return Changed; + } + + private: + bool runOnBasicBlock(BasicBlock &BB) { + bool Changed = false; + for (BasicBlock::iterator DI = BB.begin(), DE = BB.end(); DI != DE;) { Instruction *Inst = &*DI++; if (FenceInst *FI = dyn_cast(Inst)) Changed |= LowerFenceInst(FI);