Fix a use after free. An instruction can't be both an intrinsic call and a fence.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 28 Jul 2011 01:20:19 +0000 (01:20 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 28 Jul 2011 01:20:19 +0000 (01:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136319 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LowerAtomic.cpp

index 7f4d9e9c43ede5d81f22db5b8653308ab8fecb8e..0954f77f3bfcaa1c9b6422574cefc223ef91426c 100644 (file)
@@ -132,7 +132,7 @@ namespace {
         Instruction *Inst = DI++;
         if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Inst))
           Changed |= LowerAtomicIntrinsic(II);
-        if (FenceInst *FI = dyn_cast<FenceInst>(Inst))
+        else if (FenceInst *FI = dyn_cast<FenceInst>(Inst))
           Changed |= LowerFenceInst(FI);
       }
       return Changed;