------- Comment #5 from sje at cup dot hp dot com  2007-02-16 23:26 -------
It looks like GCC is running afoul of the IA64 Runtime standard.  In section
8.6 (return values) it says that aggregates larger than 256 bytes (mallinfo is
320 bytes), the caller must allocate a buffer and pass a pointer to that buffer
to the callee.  It also says that the buffer must be 16 byte aligned.  GCC is
passing a pointer to the local mi variable.  That local variable is only
required to have 4 byte alignment because that is the maximum alignment of any
of its fields.

The inlining is incidental in that it is what results in mi being 4 (but not 8)
byte aligned and thus causing the segfault.

There is another bug (PR15087) about GCC not obeying the IA64 runtime alignment
requrements in other cases.


-- 

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         |2007-02-16 23:26:10
               date|                            |


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

Reply via email to