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
>

Reply via email to