This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Partial inlining


On Sat, Jun 26, 2010 at 3:31 AM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> > > On 06/26/2010 11:16 AM, Jan Hubicka wrote:
>> > > >>> You seem to be consistently on less dumping by default than me. ?I find dumping
>> > > >>> of reasons why split points are not accepted quite useful, but I guess using
>> > > >>> -details is not problem.
>> > > >>>
>> > > >>>
>> > > >> This breaks C++:
>> > > >>
>> > > >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44671
>> > > >>
>> > > > This does not reproduce for me (at least with "Fix PHI handling in ipa-split" patch my tree)
>> > > > I am now re-trying from scratch.
>> > > >
>> > > The problem is definitely there. See, for example:
>> > >
>> > > ? ? http://gcc.gnu.org/ml/gcc-testresults/2010-06/msg02660.html
>> > >
>> > > and I have just reproduced it myself once more with r161427.
>> >
>> > It is interesting indeed, I get
>> > ? ? ? ? ? ? ? ? === libstdc++ Summary ===
>> >
>> > # of expected passes ? ? ? ? ? ?7160
>> > # of expected failures ? ? ? ? ?61
>> > # of unsupported tests ? ? ? ? ?341
>> >
>> > on build on gcc14 compilation farm. ?On gcc17 the problem however reproduce and goes away when the
>> > testsuite_shard is comiled with -fno-partial-inlining.
>>
>> The difference is use of GOLD as linker. ?I am investigating if we are hitting GNU LD bug or if GCC incorrectly
>> emits direct calls to the function in question.
>
> So it is GOLD's problem, it misses diagnostics here on PCrel relocations
> pointing outside of DSO. ?Ian, perhaps GOLD should be told about this?
>
> I am testing the following fix. ?The problem is that cgraph_function_versioning
> calls cgraph_make_decl_local twice while doing it just once would suffice.
> First time it calls the DECL on the old assembler name that makes
> cgraph_make_decl_local to take away the WEAK flag from RTL symbol of the
> original function. ?This leads us to output the incorrect direct pointers.
>
> I am bootstrapping/regtesting the following patch and will commit it once it
> passes.
>
> My apologizes for the problem.
> Honza
>
> ? ? ? ?PR middle-end/44671
> ? ? ? ?* cgraphunit.c (cgraph_function_versioning): Remove wrong cgraph_make_decl_local
> ? ? ? ?call.
> Index: cgraphunit.c
> ===================================================================
> --- cgraphunit.c ? ? ? ?(revision 161427)
> +++ cgraphunit.c ? ? ? ?(working copy)
> @@ -2196,7 +2196,6 @@ cgraph_function_versioning (struct cgrap
> ? else
> ? ? new_decl = build_function_decl_skip_args (old_decl, args_to_skip);
>
> - ?cgraph_make_decl_local (new_decl);
> ? /* Generate a new name for the new version. */
> ? DECL_NAME (new_decl) = clone_function_name (old_decl, clone_name);
> ? SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
>

I still see many libstdc++ run-time failures on Linux/ia32 even with this fix:

http://gcc.gnu.org/ml/gcc-testresults/2010-06/msg02683.html

GOLD isn't the default linker and gcc is configured with

--enable-clocale=gnu --with-system-zlib --enable-shared
--with-demangler-in-ld -with-plugin-ld=ld.gold --enable-gold
--with-fpmath=sse




-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]