>>> Index: cgraphbuild.c
>>> ===================================================================
>>> --- cgraphbuild.c.orig 2011-04-03 11:28:45.000000000 +0200
>>> +++ cgraphbuild.c 2011-04-03 11:31:21.000000000 +0200
>>> @@ -53,6 +53,12 @@ record_reference (tree *tp, int *walk_su
>>> tree decl;
>>> struct record_reference_ctx *ctx = (struct record_reference_ctx *)data;
>>>
>>> + t = canonicalize_constructor_val (t);
>>> + if (!t)
>>> + t = *tp;
>>> + else if (t != *tp)
>>> + *tp = t;
>>> +
>>> switch (TREE_CODE (t))
>>> {
>>> case VAR_DECL:
>>
>> This change caused:
>>
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48440
>>
>
> This avoids canonicalizing constructor values for address conversion
> if Pmode != ptr_mode. OK for trunk?
Certainly the right place to fix it is in canonicalize_constructor_val itself.
Paolo