On Tue, Apr 5, 2011 at 8:44 AM, Paolo Bonzini <bonz...@gnu.org> wrote: >>>> 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.
There should never be any Pmode pointer types in the gimple IL. The proper place to fix it if any is in useless_type_conversion_p. Richard. > Paolo >