This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


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

Re: A very "strange" bug in gcc 2.96


On Tue, May 23, 2000 at 09:04:58AM -0700, Ian Lance Taylor wrote:
>    Sparc, Alpha, and IA-64 at a minimum adjust the compiler's notion
>    of the appropriate name binding rules depending on -fpic.
> 
> In what way, other than the recently introduced optimization?  I'm
> genuinely curious.

Symbols that are known to be defined locally are referenced with
gp-relative addressing instead of indirectly through the got.
This is trivially all static variables, but also includes

	int i = 0;
	int j;		// if !TREE_COMMON (via -fno-common or c++)

On Alpha it also controls whether we fold

	ldq $27, foo($29)	!literal!0
	jsr $26, ($27), foo	!lituse_jsr!0
	ldah $29, 0($26)	!gpdisp!1
	lda $29, 0($29)		!gpdisp!1
to 
	bsr $26, $foo..ng

where "$foo..ng" is a special symbol emitted by the compiler
in foo after the gp is loaded.



r~

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