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

Akira Hatanaka ahatanak at gmail.com
Mon May 13 10:20:21 PDT 2013


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<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<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/95778804/attachment.html>


More information about the llvm-dev mailing list