[llvm-commits] [llvm] r43262 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Evan Cheng evan.cheng at apple.com
Tue Oct 23 15:00:12 PDT 2007


Hi Bill,

This disables too much. Even as a first step you should only disable  
this when it may be possible to generate a unaligned load / store.  
Also please add comments to describe what can go wrong when the  
destination is a stack object.

Also, is it possible the same issue can arise when the source is a  
frameindex?

Evan

On Oct 23, 2007, at 2:30 PM, Bill Wendling wrote:

> Author: void
> Date: Tue Oct 23 16:30:25 2007
> New Revision: 43262
>
> URL: http://llvm.org/viewvc/llvm-project?rev=43262&view=rev
> Log:
> Lowering a memcpy to the stack is killing PPC. The ARM and X86  
> backends already
> have their own custom memcpy lowering code. This code needs to be  
> factored out
> into a target-independent lowering method with hooks to the backend.  
> In the
> meantime, just call memcpy if we're trying to copy onto a stack.
>
> Modified:
>    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=43262&r1=43261&r2=43262&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  
> (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Tue Oct  
> 23 16:30:25 2007
> @@ -4302,6 +4302,10 @@
>       break;
>     }
>     case ISD::MEMCPY: {
> +      // FIXME: Disabling memcpy lowering for copying onto the stack.
> +      if (Op1.getOpcode() == ISD::FrameIndex)
> +        break;
> +
>       if (MeetsMaxMemopRequirement(MemOps,  
> TLI.getMaxStoresPerMemcpy(),
>                                    Size->getValue(), Align, TLI)) {
>         unsigned NumMemOps = MemOps.size();
>
>
> _______________________________________________
> 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