[llvm-commits] [llvm] r84049 - in /llvm/trunk/lib/Transforms/Scalar: InstructionCombining.cpp LICM.cpp LoopUnswitch.cpp
Chris Lattner
clattner at apple.com
Tue Oct 13 17:54:40 PDT 2009
On Oct 13, 2009, at 3:56 PM, Devang Patel wrote:
> Author: dpatel
> Date: Tue Oct 13 17:56:32 2009
> New Revision: 84049
>
> URL: http://llvm.org/viewvc/llvm-project?rev=84049&view=rev
> Log:
> Check void type before using RAUWd.
Hi Devang,
Thanks for fixing this, please use getType()->isVoid() instead of
pointer equality (it's cheaper)
-Chris
>
> Modified:
> llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> llvm/trunk/lib/Transforms/Scalar/LICM.cpp
> llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp?rev=84049&r1=84048&r2=84049&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Tue
> Oct 13 17:56:32 2009
> @@ -9979,7 +9979,10 @@
> new StoreInst(ConstantInt::getTrue(*Context),
> UndefValue::get(Type::getInt1PtrTy(*Context)),
> OldCall);
> - OldCall->replaceAllUsesWith(UndefValue::get(OldCall-
> >getType()));
> + // If OldCall dues not return void then replaceAllUsesWith
> undef.
> + // This allows ValueHandlers and custom metadata to adjust
> itself.
> + if (OldCall->getType() != Type::getVoidTy(*Context))
> + OldCall->replaceAllUsesWith(UndefValue::get(OldCall-
> >getType()));
> if (isa<CallInst>(OldCall)) // Not worth removing an invoke
> here.
> return EraseInstFromFunction(*OldCall);
> return 0;
> @@ -9993,8 +9996,11 @@
> UndefValue::get(Type::getInt1PtrTy(*Context)),
> CS.getInstruction());
>
> - CS.getInstruction()->
> - replaceAllUsesWith(UndefValue::get(CS.getInstruction()-
> >getType()));
> + // If CS dues not return void then replaceAllUsesWith undef.
> + // This allows ValueHandlers and custom metadata to adjust
> itself.
> + if (CS.getInstruction()->getType() != Type::getVoidTy(*Context))
> + CS.getInstruction()->
> + replaceAllUsesWith(UndefValue::get(CS.getInstruction()-
> >getType()));
>
> if (InvokeInst *II = dyn_cast<InvokeInst>(CS.getInstruction())) {
> // Don't break the CFG, insert a dummy cond branch.
> @@ -12779,7 +12785,12 @@
> ++NumDeadInst;
> MadeIRChange = true;
> }
> - I->replaceAllUsesWith(UndefValue::get(I->getType()));
> +
> +
> + // If I is not void type then replaceAllUsesWith undef.
> + // This allows ValueHandlers and custom metadata to
> adjust itself.
> + if (I->getType() != Type::getVoidTy(*Context))
> + I->replaceAllUsesWith(UndefValue::get(I->getType()));
> I->eraseFromParent();
> }
> }
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LICM.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LICM.cpp?rev=84049&r1=84048&r2=84049&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LICM.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LICM.cpp Tue Oct 13 17:56:32 2009
> @@ -487,7 +487,10 @@
> // Instruction is not used, just delete it.
> CurAST->deleteValue(&I);
> // If I has users in unreachable blocks, eliminate.
> - I.replaceAllUsesWith(UndefValue::get(I.getType()));
> + // If I is not void type then replaceAllUsesWith undef.
> + // This allows ValueHandlers and custom metadata to adjust
> itself.
> + if (I.getType() != Type::getVoidTy(I.getContext()))
> + I.replaceAllUsesWith(UndefValue::get(I.getType()));
> I.eraseFromParent();
> } else {
> // Move the instruction to the start of the exit block, after
> any PHI
> @@ -500,7 +503,10 @@
> // The instruction is actually dead if there ARE NO exit blocks.
> CurAST->deleteValue(&I);
> // If I has users in unreachable blocks, eliminate.
> - I.replaceAllUsesWith(UndefValue::get(I.getType()));
> + // If I is not void type then replaceAllUsesWith undef.
> + // This allows ValueHandlers and custom metadata to adjust
> itself.
> + if (I.getType() != Type::getVoidTy(I.getContext()))
> + I.replaceAllUsesWith(UndefValue::get(I.getType()));
> I.eraseFromParent();
> } else {
> // Otherwise, if we have multiple exits, use the PromoteMem2Reg
> function to
>
> Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp?rev=84049&r1=84048&r2=84049&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp Tue Oct 13
> 17:56:32 2009
> @@ -781,7 +781,10 @@
>
> // Anything that uses the instructions in this basic block
> should have their
> // uses replaced with undefs.
> - I->replaceAllUsesWith(UndefValue::get(I->getType()));
> + // If I is not void type then replaceAllUsesWith undef.
> + // This allows ValueHandlers and custom metadata to adjust
> itself.
> + if (I->getType() != Type::getVoidTy(I->getContext()))
> + I->replaceAllUsesWith(UndefValue::get(I->getType()));
> }
>
> // If this is the edge to the header block for a loop, remove the
> loop and
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list