On Sun, Jul 24, 2011 at 7:12 PM, Eric Botcazou <ebotca...@adacore.com> wrote: > Hi, > > we sometimes get messages like this in Ada: > > prime-mc2-other.adb: In function 'PRIME.MC2.OTHER.DO_SOMETHING': > prime-mc2.adb:2:4: warning: inlining failed in call > to 'PRIME.MC2.GET_INPUT_VALUE.PART': non-call exception handling mismatch > [-Winline] > prime-mc2-other.adb:3:4: warning: called from here [-Winline] > > Since this is for a pure Ada program, it's unexpected. This stems from > virtual > cloning: cgraph_create_virtual_clone creates the virtual clone and does: > > DECL_STRUCT_FUNCTION (new_decl) = NULL; > > so the can_throw_non_call_exceptions flag isn't preserved and > can_inline_edge_p > is fooled into thinking that it cannot inline. > > It's probably better not to fiddle with virtual cloning so the attached patch > teaches can_inline_edge_p to look into DECL_STRUCT_FUNCTION of the original > nodes if it is dealing with virtual clones. > > Tested on i586-suse-linux, OK for the mainline?
Doesn't cgraph_function_or_thunk_node already deal with this? Honza? Richard. > > 2011-07-24 Eric Botcazou <ebotca...@adacore.com> > > * ipa-inline.c (can_inline_edge_p): Look into DECL_STRUCT_FUNCTION of > original nodes if we are dealing with virtual clones. > > > -- > Eric Botcazou >