diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2011-07-27 01:08:30 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2011-07-27 01:08:30 +0000 |
| commit | 89b694b09652e6923d26c57038cfa94c01c43a53 (patch) | |
| tree | a9d5d7307b044fbd3241e13816cf0ed7ae86d37d /llvm/lib/Transforms/Scalar/LowerAtomic.cpp | |
| parent | 538482373bba8f268b179eabde85652f630af826 (diff) | |
| download | bcm5719-llvm-89b694b09652e6923d26c57038cfa94c01c43a53.tar.gz bcm5719-llvm-89b694b09652e6923d26c57038cfa94c01c43a53.zip | |
Misc mid-level changes for new 'fence' instruction.
llvm-svn: 136205
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LowerAtomic.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/LowerAtomic.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/LowerAtomic.cpp b/llvm/lib/Transforms/Scalar/LowerAtomic.cpp index 9087b46c138..7f4d9e9c43e 100644 --- a/llvm/lib/Transforms/Scalar/LowerAtomic.cpp +++ b/llvm/lib/Transforms/Scalar/LowerAtomic.cpp @@ -115,6 +115,11 @@ static bool LowerAtomicIntrinsic(IntrinsicInst *II) { return true; } +static bool LowerFenceInst(FenceInst *FI) { + FI->eraseFromParent(); + return true; +} + namespace { struct LowerAtomic : public BasicBlockPass { static char ID; @@ -123,9 +128,13 @@ namespace { } bool runOnBasicBlock(BasicBlock &BB) { bool Changed = false; - for (BasicBlock::iterator DI = BB.begin(), DE = BB.end(); DI != DE; ) - if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(DI++)) + for (BasicBlock::iterator DI = BB.begin(), DE = BB.end(); DI != DE; ) { + Instruction *Inst = DI++; + if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Inst)) Changed |= LowerAtomicIntrinsic(II); + if (FenceInst *FI = dyn_cast<FenceInst>(Inst)) + Changed |= LowerFenceInst(FI); + } return Changed; } }; |

