[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.

Nadav Rotem nrotem at apple.com
Mon May 13 10:29:17 PDT 2013


I missed the original email with the patch. Do you mind sending it again ?

Thanks,
Nadav

On May 13, 2013, at 10:20 AM, Akira Hatanaka <ahatanak at gmail.com> wrote:

> Hi Duncan,
> 
> No, it hasn't been reviewed yet.
> 
> 
> On Mon, May 13, 2013 at 8:50 AM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Akira, did anything happen with this patch?
> 
> Ciao, Duncan.
> 
> 
> On 09/05/13 04:04, Akira Hatanaka wrote:
> The following code snippet taken from StackColoring::remapInstructions clears a
> mem operand if it can't guarantee whether the memoperand's underlying value
> aliases with the merged allocas:
> 
> // Update the MachineMemOperand to use the new alloca.
>   522       for (MachineInstr::mmo_iterator MM = I->memoperands_begin(),
> ....
>           // Climb up and find the original alloca.
>   532         V = GetUnderlyingObject(V);
>   533         // If we did not find one, or if the one that we found is not in our
>   534         // map, then move on.
>   535         if (!V || !isa<AllocaInst>(V)) {
>   536           // Clear mem operand since we don't know for sure that it doesn't
>   537           // alias a merged alloca.
>   538           MMO->setValue(0);
>   539           continue;
>   540         }
> 
> The attached patch makes the code above less conservative. It avoids clearing a
> mem operand if its underlying value is a PseudoSourceValue and
> PseudoSourceValue::isConstant returns true. This enables MachineLICM to hoist
> loads from GOT out of a loop (see test case in stackcoloring-test.patch).
> 
> Please review.
> 
> Question: Why does it need to clear a mem operand if the underlying object is
> not an AllocaInst? I am not sure if I understand the reason for this.
> 
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130513/8bb8c756/attachment.html>


More information about the llvm-dev mailing list