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 | 8a552bb85a5e9a6c250c0a899941fbd3ae7b5006 (patch) | |
tree | 9577dd8f2a50604b5dd734cc240adb81390776ec /lib/Transforms/Scalar/LowerAtomic.cpp | |
parent | 751bef77d0ac9776ac5133bd806be4a22ea4fa55 (diff) | |
download | llvm-8a552bb85a5e9a6c250c0a899941fbd3ae7b5006.tar.gz llvm-8a552bb85a5e9a6c250c0a899941fbd3ae7b5006.tar.bz2 llvm-8a552bb85a5e9a6c250c0a899941fbd3ae7b5006.tar.xz |
Misc mid-level changes for new 'fence' instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136205 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/LowerAtomic.cpp')
-rw-r--r-- | lib/Transforms/Scalar/LowerAtomic.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Transforms/Scalar/LowerAtomic.cpp b/lib/Transforms/Scalar/LowerAtomic.cpp index 9087b46c13..7f4d9e9c43 100644 --- a/lib/Transforms/Scalar/LowerAtomic.cpp +++ b/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; } }; |