On Wed, Jun 1, 2011 at 5:36 PM, Michael Matz <m...@suse.de> wrote: > Hi, > > I noticed this a while ago while working on early merging of decls. When > we build thunk decls ourself we give RESULT_DECL of it integer_type, even > when the thunk decl itself says something else. (In particular thunks can > very well return void or a pointer type). This fixes that glitch. > > Regstrapping in progress (on top the wpa[2/n] patch) on x86_64-linux. > Okay for trunk?
Ok. Thanks, Richard. > > Ciao, > Michael. > --------------------------------- > * cgraphunit.c (assemble_thunk): Use correct return type. > > Index: cgraphunit.c > =================================================================== > *** cgraphunit.c (revision 174523) > --- cgraphunit.c (working copy) > *************** assemble_thunk (struct cgraph_node *node > *** 1412,1421 **** > { > const char *fnname; > tree fn_block; > > DECL_RESULT (thunk_fndecl) > ! = build_decl (DECL_SOURCE_LOCATION (thunk_fndecl), > ! RESULT_DECL, 0, integer_type_node); > fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk_fndecl)); > > /* The back end expects DECL_INITIAL to contain a BLOCK, so we > --- 1412,1422 ---- > { > const char *fnname; > tree fn_block; > + tree restype = TREE_TYPE (TREE_TYPE (thunk_fndecl)); > > DECL_RESULT (thunk_fndecl) > ! = build_decl (DECL_SOURCE_LOCATION (thunk_fndecl), > ! RESULT_DECL, 0, restype); > fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk_fndecl)); > > /* The back end expects DECL_INITIAL to contain a BLOCK, so we >