egcs 980315 bug on powerpc-unknown-linux-gnulibc1
Jeffrey A Law
law@cygnus.com
Thu May 21 02:50:00 GMT 1998
In message < 9805191958.AA22380@rios1.watson.ibm.com >you write:
> rs6000.c:rs6000_output_load_toc_table() -- non-TARGET_RELOCATABLE
> branch -- does something similar and there it is:
>
> asm_fprintf (file, "\t{cau|addis} %s,%s,", reg_names[reg], reg_names[
> 0]);
> assemble_name (file, buf);
> asm_fprintf (file, "@ha\n");
>
> which really is "lis". It looks like someone was trying to avoid two
> different syntax formats, but that was a waste of time because two lines
> later it needs to support both anyway. The new mnemonic form should just
> duplicate the code and use "lis" there as well for consitency instead of
> trying to use {cau|addis} choice.
Let's deal with this one separately, since it's just a cleanup. OK?
> My only concern about rs6000.c:output_function_profiler() is that
> it explicitly uses r11 earlier (to gain GOT addressibility?) I guess it is
> using r11 as a scratch. From my understanding of GOT, it definitely does
> not make sense to *add* the GOT relocation high address to a value in a
> register.
Actually, those other uses are in different if/else arms and are
not executed for the two cases we're proposing to fix.
This also probably points to at least one reason why profiling
doesn't work with nested functions -- r11 is the static chain, and
we're clobbering it in the profiling code. :-) I think Meissner
mentioned this recently.
jeff
More information about the Gcc-bugs
mailing list