[LLVMdev] [PATCH] Minor fix to StackColoring to avoid needlessly clearing mem operands.
Duncan Sands
baldrick at free.fr
Mon May 13 08:50:18 PDT 2013
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
>
More information about the llvm-dev
mailing list