This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix early inliner inlining uninlinable functions
- From: Diego Novillo <dnovillo at google dot com>
- To: Richard Guenther <rguenther at suse dot de>
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>, Iain Sandoe <developer at sandoe-acoustics dot co dot uk>, gcc-patches Patches <gcc-patches at gcc dot gnu dot org>, Jan Hubicka <jh at suse dot de>, Eric Botcazou <ebotcazou at adacore dot com>
- Date: Thu, 1 Dec 2011 06:54:51 -0500
- Subject: Re: [PATCH] Fix early inliner inlining uninlinable functions
- References: <alpine.LNX.2.00.1110281455210.26779@zhemvz.fhfr.qr> <C75194BF-4970-4C98-A66F-46FF48B4EFFE@sandoe-acoustics.co.uk> <CAD_=9DThnc5n8u7nV3JQe=nxx4qpKnm7BrXLL3xxhsxunxDUBw@mail.gmail.com> <CAD_=9DRAJGWSmYS6RaNV89tDrSQWOs6qZiY6Yghqc3eTNTqDAQ@mail.gmail.com> <CAMe9rOoUkU54pELLGD71cJqPjh6ehwJGn9vsyXWjC6ieY5=MGA@mail.gmail.com> <CAD_=9DSO9aqcwfSfXsTO2EH7UB_Cb7J6v--y+PAtr0wuBy47iQ@mail.gmail.com> <alpine.LNX.2.00.1112011158330.4527@zhemvz.fhfr.qr>
On Thu, Dec 1, 2011 at 05:59, Richard Guenther <rguenther@suse.de> wrote:
> On Tue, 29 Nov 2011, Diego Novillo wrote:
>
>> On Tue, Nov 29, 2011 at 12:49, H.J. Lu <hjl.tools@gmail.com> wrote:
>>
>> > This caused:
>> >
>> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51346
>>
>> Thanks. ÂI'm on it.
>
> The patch was wrong, please revert it. ÂAt the gimple stmt
> modification level we shouldn't modify the cgraph. ÂThat's
> a layering violation at least.
No, this is a pre-existing problem that got aggravated with the new
changes to the inline attribute in fold. I think we need to either
toss out the edge attribute or make it such that they are more
automatically sync'd. Unfortunately, we cannot get rid of it, since
we sometimes do not have the statement.
So, we have to live with the two attributes. How about, we make the
edge attribute always dependent on the statement? If the statement
exists, the edge attribute always take its value from it. Only when
the statement doesn't exist, we take its value from the call. All
this can be put into a small predicate.
> Please file a bug with a reduced testcase that still fails
> without your fix.
I'll add a test to the final patch after it finishes reducing (the
original test case is huge).
Diego.