[llvm-commits] [llvm] r81813 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAG.h include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp

Nate Begeman natebegeman at mac.com
Tue Sep 15 10:36:28 PDT 2009


On Sep 14, 2009, at 11:41 PM, Chris Lattner wrote:

>
> On Sep 14, 2009, at 5:13 PM, Nate Begeman wrote:
>
>> Author: sampo
>> Date: Mon Sep 14 19:13:12 2009
>> New Revision: 81813
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=81813&view=rev
>> Log:
>> Add an "original alignment" field to load and store nodes.  This  
>> enables the
>> DAG Combiner to disambiguate chains for loads and stores of types  
>> which are
>> broken up by the Legalizer into smaller pieces.
>
> Hi Nate,
>
>> +  //! OrigAlign - The original alignment of this MemSDNode in the  
>> case where
>> +  // this node was created by legalize from a MemSDNode with known  
>> alignment.
>> +  unsigned OrigAlign;
>
> I don't understand what this means.  Is this saying that the load/ 
> store is always an access to [ptr_with_some_alignment]+SVOffset?
>
> If so, it seems that the ultimate alignment of the access is actually:
>  MinAlign(OrigAlign, SVOffset)
> (from MathExtras.h).
>
> If this is true, then you can make the comment much more strong, and  
> fix MemSDNode to never actually store the alignment of the access  
> (store OrigAlign instead and compute the access alignment when  
> needed).
>
> If we do need to keep both alignments around, is there any way to  
> encode this in SubclassData like the alignment field itself is to  
> avoid growing MemSDNode (the biggest sdnode)?

Thanks for the feedback, I'm working on it.

Cheers,
Nate

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20090915/1612af60/attachment.html>


More information about the llvm-commits mailing list