>>> 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