This is the mail archive of the gcc@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: Accessing IP on IA-64 with RTL


> If you move the profile after the prologue, you will have to change the 
> calling sequence.  The current one assumes we are before the prologue, 
> and creates its own register window for output arguments, which then 
> gets overwritten by the register window created by the prologue.  After 
> the prologue, it should look like pretty much like any other function call.
> 
> If we do call it after the prologue, that would fix PR 12455.

This implies that there would be an ABI change to glibc for IA64 Linux.
I am not sure how difficult this is or what GCC/glibc coordination is
required.  I have never messed around with glibc before.

> Yuck.  This should be fixed.  We shouldn't be switching sections inside 
> a function.  This should use xdata instead of data.  Probably better is 
> to define NO_PROFILE_COUNTERS, as we shouldn't need this counter 
> anyways, unless perhaps HPUX uses it.  I'm pretty sure glibc won't use 
> it.  There are already a number of other linux targets that define this.

Linux does not seem to need it, the existing assembly language stub does
not do anything with it and does not even pass it to the C profiling
routine (__mcount) that does the real work.  HP-UX does seem to need it
though.

I am not sure what xdata is.  The data location for the counter is
created in final.c (profile_function) by:

      int align = MIN (BIGGEST_ALIGNMENT, LONG_TYPE_SIZE);
      data_section ();
      ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT));
      targetm.asm_out.internal_label (file, "LP", current_function_funcdef_no);
      assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, align, 1);

Steve Ellcey
sje@cup.hp.com


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