[llvm-commits] [llvm] r84033 - in /llvm/trunk/lib/Transforms/Scalar: InstructionCombining.cpp LICM.cpp LoopUnswitch.cpp
Chris Lattner
clattner at apple.com
Tue Oct 13 15:33:02 PDT 2009
On Oct 13, 2009, at 3:23 PM, Devang Patel wrote:
>
> On Oct 13, 2009, at 2:50 PM, Chris Lattner wrote:
>
>>
>> On Oct 13, 2009, at 2:41 PM, Devang Patel wrote:
>>
>>> Author: dpatel
>>> Date: Tue Oct 13 16:41:20 2009
>>> New Revision: 84033
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=84033&view=rev
>>> Log:
>>> Do not check use_empty() before replaceAllUsesWith(). This gives
>>> ValueHandles a chance to get properly updated.
>>
>> Ok, but two requests:
>>
>> 1. please add a comment that this is updating the uses and the
>> metadata.
>
> This is not metadata specific. use_empty() by passes ValueIsRAUWd
> call back for VHs.
>
> 309 // Notify all ValueHandles (if present) that this value is
> going away.
> 310 if (HasValueHandle)
> 311 ValueHandleBase::ValueIsRAUWd(this, New);
>
> It is somewhat redundant if the value is deleted eventually, but
> that is not the case many times.
I don't understand what you mean.
-Chris
> -
> Devang
>
>> 2. The code may need to check to see that the call doesn't return
>> void. UndefValue::get(void) is not valid.
>>
>> -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=84033&r1=84032&r2=84033&view=diff
>>>
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
>>> (original)
>>> +++ llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp Tue
>>> Oct 13 16:41:20 2009
>>> @@ -9979,8 +9979,7 @@
>>> new StoreInst(ConstantInt::getTrue(*Context),
>>> UndefValue::get(Type::getInt1PtrTy(*Context)),
>>> OldCall);
>>> - if (!OldCall->use_empty())
>>> - OldCall->replaceAllUsesWith(UndefValue::get(OldCall-
>>> >getType()));
>>> + OldCall->replaceAllUsesWith(UndefValue::get(OldCall-
>>> >getType()));
>>> if (isa<CallInst>(OldCall)) // Not worth removing an invoke
>>> here.
>>> return EraseInstFromFunction(*OldCall);
>>> return 0;
>>> @@ -9994,9 +9993,8 @@
>>> UndefValue::get(Type::getInt1PtrTy(*Context)),
>>> CS.getInstruction());
>>>
>>> - if (!CS.getInstruction()->use_empty())
>>> - CS.getInstruction()->
>>> - replaceAllUsesWith(UndefValue::get(CS.getInstruction()-
>>> >getType()));
>>> + 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.
>>> @@ -10251,7 +10249,7 @@
>>> }
>>> }
>>>
>>> -
>>> +
>>> if (!Caller->use_empty())
>>> Caller->replaceAllUsesWith(NV);
>>>
>>> @@ -10398,7 +10396,7 @@
>>> setCallingConv(cast<CallInst>(Caller)->getCallingConv());
>>> cast<CallInst>(NewCaller)->setAttributes(NewPAL);
>>> }
>>> - if (Caller->getType() != Type::getVoidTy(*Context) && !
>>> Caller->use_empty())
>>> + if (Caller->getType() != Type::getVoidTy(*Context))
>>> Caller->replaceAllUsesWith(NewCaller);
>>> Caller->eraseFromParent();
>>> Worklist.Remove(Caller);
>>> @@ -12781,8 +12779,7 @@
>>> ++NumDeadInst;
>>> MadeIRChange = true;
>>> }
>>> - if (!I->use_empty())
>>> - I->replaceAllUsesWith(UndefValue::get(I->getType()));
>>> + 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=84033&r1=84032&r2=84033&view=diff
>>>
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- llvm/trunk/lib/Transforms/Scalar/LICM.cpp (original)
>>> +++ llvm/trunk/lib/Transforms/Scalar/LICM.cpp Tue Oct 13 16:41:20
>>> 2009
>>> @@ -486,8 +486,8 @@
>>> if (!isExitBlockDominatedByBlockInLoop(ExitBlocks[0],
>>> I.getParent())) {
>>> // Instruction is not used, just delete it.
>>> CurAST->deleteValue(&I);
>>> - if (!I.use_empty()) // If I has users in unreachable
>>> blocks, eliminate.
>>> - I.replaceAllUsesWith(UndefValue::get(I.getType()));
>>> + // If I has users in unreachable blocks, eliminate.
>>> + I.replaceAllUsesWith(UndefValue::get(I.getType()));
>>> I.eraseFromParent();
>>> } else {
>>> // Move the instruction to the start of the exit block, after
>>> any PHI
>>> @@ -499,8 +499,8 @@
>>> } else if (ExitBlocks.empty()) {
>>> // The instruction is actually dead if there ARE NO exit blocks.
>>> CurAST->deleteValue(&I);
>>> - if (!I.use_empty()) // If I has users in unreachable blocks,
>>> eliminate.
>>> - I.replaceAllUsesWith(UndefValue::get(I.getType()));
>>> + // If I has users in unreachable blocks, eliminate.
>>> + 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=84033&r1=84032&r2=84033&view=diff
>>>
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> =
>>> ====================================================================
>>> --- llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp (original)
>>> +++ llvm/trunk/lib/Transforms/Scalar/LoopUnswitch.cpp Tue Oct 13
>>> 16:41:20 2009
>>> @@ -781,8 +781,7 @@
>>>
>>> // Anything that uses the instructions in this basic block
>>> should have their
>>> // uses replaced with undefs.
>>> - if (!I->use_empty())
>>> - I->replaceAllUsesWith(UndefValue::get(I->getType()));
>>> + 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