[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