NFC: skip FenceInst up-front in AtomicExpandPass.
authorJames Y Knight <jyknight@google.com>
Mon, 28 Mar 2016 15:05:30 +0000 (15:05 +0000)
committerJames Y Knight <jyknight@google.com>
Mon, 28 Mar 2016 15:05:30 +0000 (15:05 +0000)
llvm-svn: 264583

llvm/lib/CodeGen/AtomicExpandPass.cpp

index c7e7efd..40140e4 100644 (file)
@@ -86,9 +86,10 @@ bool AtomicExpand::runOnFunction(Function &F) {
 
   // Changing control-flow while iterating through it is a bad idea, so gather a
   // list of all atomic instructions before we start.
-  for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) {
-    if (I->isAtomic())
-      AtomicInsts.push_back(&*I);
+  for (inst_iterator II = inst_begin(F), E = inst_end(F); II != E; ++II) {
+    Instruction *I = &*II;
+    if (I->isAtomic() && !isa<FenceInst>(I))
+      AtomicInsts.push_back(I);
   }
 
   bool MadeChange = false;
@@ -97,8 +98,7 @@ bool AtomicExpand::runOnFunction(Function &F) {
     auto SI = dyn_cast<StoreInst>(I);
     auto RMWI = dyn_cast<AtomicRMWInst>(I);
     auto CASI = dyn_cast<AtomicCmpXchgInst>(I);
-    assert((LI || SI || RMWI || CASI || isa<FenceInst>(I)) &&
-           "Unknown atomic instruction");
+    assert((LI || SI || RMWI || CASI) && "Unknown atomic instruction");
 
     if (TLI->shouldInsertFencesForAtomic(I)) {
       auto FenceOrdering = Monotonic;