On Tue, Apr 8, 2014 at 8:12 AM, Ryan Hill <rh...@gentoo.org> wrote:
> On Fri, 4 Apr 2014 08:18:26 +0200
> Jan Hubicka <hubi...@ucw.cz> wrote:
>
>> Hi,
>> here is an updated version of my earlier ipa.c change.  It turns out that the
>> problem was that I did not drop always_inline.
>> In this version I just drop always_inline attribute on all functions whose
>> body is removed.  The patch will affect non-LTO compilation, too, but IMO
>> only by making us to not inline&diagnose the cases where indirect call to
>> always inline is turned direct in between early opts and inline. Does that
>> seem acceptable? (I personally would preffer this over inventing yet another
>> way to special case always_inline for LTO only; we never made any strong
>> promises on always_inline and indirect calls)
>>
>> Honza
>>
>>       * lto-cgraph.c (input_overwrite_node): Check that partitioning
>>       flags are set only during streaming.
>>       * ipa.c (process_references, walk_polymorphic_call_targets,
>>       symtab_remove_unreachable_nodes): Drop bodies of always inline
>>       after early inlining.
>>       (symtab_remove_unreachable_nodes): Remove always_inline attribute.
>>
>>       * gcc.dg/lto/pr59626_0.c: New testcase.
>>       * gcc.dg/lto/pr59626_1.c: New testcase.
>
> Would it be possible to backport this to 4.8?  It fixes a number of issues
> we're seeing, including a couple unrelated to LTO (eg. PR50506).

Let it have some burn-in on 4.9 please.  It may cause unexpected behavior
for people relying on always-inlining through indirect function calls.

Richard.

>
> --
> Ryan Hill                        psn: dirtyepic_sk
>    gcc-porting/toolchain/wxwidgets @ gentoo.org
>
> 47C3 6D62 4864 0E49 8E9E  7F92 ED38 BD49 957A 8463

Reply via email to