diff options
author | Davide Italiano <davide@freebsd.org> | 2016-05-12 18:49:32 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2016-05-12 18:49:32 +0000 |
commit | 851f879f32bdb4487b3ee82c8e9139e0acdb4729 (patch) | |
tree | 735e67c629583b152ef0ee9831338182f686aa92 /llvm/lib/Transforms/Scalar/LowerAtomic.cpp | |
parent | 82e7df5a5822c61d3df1f574b8412e09c374815b (diff) | |
download | bcm5719-llvm-851f879f32bdb4487b3ee82c8e9139e0acdb4729.tar.gz bcm5719-llvm-851f879f32bdb4487b3ee82c8e9139e0acdb4729.zip |
[PM] Make LowerAtomic a FunctionPass.
Differential Revision: http://reviews.llvm.org/D20025
llvm-svn: 269322
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LowerAtomic.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LowerAtomic.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Scalar/LowerAtomic.cpp b/llvm/lib/Transforms/Scalar/LowerAtomic.cpp index c7e75470f29..da245354e5f 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<FenceInst>(Inst)) Changed |= LowerFenceInst(FI); |