This is the mail archive of the
mailing list for the GCC project.
Re: Variable DECL_SIZE
On Fri, Oct 5, 2012 at 10:28 AM, Ilya Enkovich <firstname.lastname@example.org> wrote:
> 2012/10/4 Richard Guenther <email@example.com>:
>> On Wed, Oct 3, 2012 at 7:05 PM, Ilya Enkovich <firstname.lastname@example.org> wrote:
>>> I fall into ssa verification failure when try to pass field's
>>> DECL_SIZE as an operand for CALL_EXPR. The fail occurs if field's size
>>> is not a constant. In such case DECL_SIZE holds a VAR_DECL and I need
>>> to find it's proper SSA_NAME. I thought it may be the default one but
>>> gimple_default_def returns NULL. What is the right way to obtain
>>> correct ssa_name in such case?
>> There is no way. You have to know that you need it's size at the point of
>> gimplification. Later there is no way to recover it.
> Wow. It means I cannot also get an address of subsequent fields in the
> structure. It looks weird. Is there a way to somehow preserve this
> information during gimplification and use in later passes?
By using it ;) See how gimplification of COMPONENT_REF works
for example. The offset becomes an explicit operand and its
computation get put into explicit statements. There is no 'reverse-mapping'
to lookup or even re-construct this information at later time.