Don't DCE FreeInst's. We were using those! Patch from Owen Anderson.
authorNick Lewycky <nicholas@mxc.ca>
Wed, 30 Jan 2008 07:45:37 +0000 (07:45 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Wed, 30 Jan 2008 07:45:37 +0000 (07:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46553 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/DeadStoreElimination.cpp

index 7e2588ab77d87dccadd46cbc2a2f87d15a8ed510..ba0d1bdf2bd5a3a1800b39b63ac5a625b65681dc 100644 (file)
@@ -420,7 +420,7 @@ bool DSE::handleEndBlock(BasicBlock& BB,
     } else {
       // For any non-memory-affecting non-terminators, DCE them as we reach them
       Instruction *CI = BBI;
-      if (!CI->isTerminator() && CI->getNumUses() == 0) {
+      if (!CI->isTerminator() && CI->getNumUses() == 0 && !isa<FreeInst>(CI)) {
         
         // DCE instructions only used to calculate that load
         for (Instruction::op_iterator OI = CI->op_begin(), OE = CI->op_end();