https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78306

--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 14 Nov 2016, iblue at gmx dot net wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78306
> 
> --- Comment #2 from Markus Fenske <iblue at gmx dot net> ---
> Thanks for the suggested workaround. Moving all the always_inline functions
> into a wrapper was no option, because it's not just memset but my code relies
> on avx intrinsics and would be dead slow if I would need a function all for
> every instruction.
> 
> So I just removed the cilk sections in ipa-inline-analysis.c and ipa-inline.c
> and compiled my code with gcc-trunk. It compiles and produces the same results
> as with icc and clang.
> 
> I'm not an expert in gcc code, but I would propose this patch to solve the
> issue:
> 
> Index: gcc/ipa-inline-analysis.c
> ===================================================================
> --- gcc/ipa-inline-analysis.c   (revision 242386)
> +++ gcc/ipa-inline-analysis.c   (working copy)
> @@ -1507,9 +1507,6 @@
>      e->inline_failed = CIF_BODY_NOT_AVAILABLE;
>    else if (callee->local.redefined_extern_inline)
>      e->inline_failed = CIF_REDEFINED_EXTERN_INLINE;
> -  else if (cfun && fn_contains_cilk_spawn_p (cfun))
> -    /* We can't inline if the function is spawing a function.  */
> -    e->inline_failed = CIF_CILK_SPAWN;
>    else
>      e->inline_failed = CIF_FUNCTION_NOT_CONSIDERED;
>    gcc_checking_assert (!e->call_stmt_cannot_inline_p
> Index: gcc/ipa-inline.c
> ===================================================================
> --- gcc/ipa-inline.c    (revision 242386)
> +++ gcc/ipa-inline.c    (working copy)
> @@ -368,11 +368,6 @@
>        e->inline_failed = CIF_FUNCTION_NOT_INLINABLE;
>        inlinable = false;
>      }
> -  else if (inline_summaries->get (caller)->contains_cilk_spawn)
> -    {
> -      e->inline_failed = CIF_CILK_SPAWN;
> -      inlinable = false;
> -    }
>    /* Don't inline a function with mismatched sanitization attributes. */
>    else if (!sanitize_attrs_match_for_inline_p (caller->decl, callee->decl))
>      {

Bootstrapped and tested on x86_64-unknown-linux-gnu (I expect that
->contains_cilk_spawn might be completely dead).

Richard.

Reply via email to