From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26382 invoked by alias); 16 Feb 2007 23:26:21 -0000 Received: (qmail 26349 invoked by uid 48); 16 Feb 2007 23:26:10 -0000 Date: Fri, 16 Feb 2007 23:26:00 -0000 Message-ID: <20070216232610.26348.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/30826] alignment error when optimizing with inlining In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "sje at cup dot hp dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-02/txt/msg02025.txt.bz2 ------- 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