On Mon, Apr 4, 2011 at 3:00 PM, H.J. Lu wrote: > On Sun, Apr 3, 2011 at 3:14 AM, Michael Matz wrote: >> Hi, >> >> On Thu, 31 Mar 2011, Richard Guenther wrote: >> >>> > In the meanwhile, is the below version okay? >>> >>> If it bootstraps & tests ok then yes.  The java parts look obvious. >> >> So, we indeed can't remove the other calls to >> canonicalize_constructor_val, because of local ctors.  And fortran has a >> similar problem with java.  Instead of fixing up all these places of >> resetting cfun (where otherwise the frontends don't deal at all with it, >> it's mostly just set from the various cgraph routines), I decided to >> simply clear this at the appropriate place in >> cgraph_finalize_compilation_unit. >> >> Regstrapping in progress again.  Still okay if that works? >> >> >> Ciao, >> Michael. >> -- >>        * cgraphbuild.c (record_reference): Canonicalize constructor >>        values. > >> >> 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? Thanks. -- H.J. ---- 2011-04-04 H.J. Lu PR middle-end/48440 * cgraphbuild.c (record_reference): Don't canonicalize constructor values for address conversion if Pmode != ptr_mode.