[Bug target/25372] Aligned args on IA64

sje at cup dot hp dot com gcc-bugzilla@gcc.gnu.org
Fri Feb 3 18:44:00 GMT 2006



------- Comment #2 from sje at cup dot hp dot com  2006-02-03 18:44 -------
It looks like we have an interaction between the alignment attribute and the
IA64 calling conventions.  In this example GCC is treating my_t type as an
aligned pointer and not as a pointer to aligned data.  Is that what you intend?

Assuming we do want an aligned pointer I think the pointers should be passed in
r36 and r37, not r36 and r38.  the IA64 runtime document says pointers are
passed in the next available register.  It is only values with size greater
than 64 bits where you might skip a register in order to use the next even
register.  Of course the runtime document doesn't explicitly talk about what to
do when a type is given an alignment different than its natural alignment.

I also wonder if this program is something GCC should be warning about.  We are
declaring f to take a my_t type (aligned pointer) and passing it a regular
pointer.  This is a different type.  Should GCC issue a warning?


-- 

sje at cup dot hp dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sje at cup dot hp dot com
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-02-03 18:44:13
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25372



More information about the Gcc-bugs mailing list