public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/58065] New: ARM MALLOC_ABI_ALIGNMENT is wrong
@ 2013-08-02 22:35 bernd.edlinger at hotmail dot de
  2013-08-02 22:36 ` [Bug target/58065] " bernd.edlinger at hotmail dot de
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: bernd.edlinger at hotmail dot de @ 2013-08-02 22:35 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 58065
           Summary: ARM MALLOC_ABI_ALIGNMENT is wrong
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bernd.edlinger at hotmail dot de
            Target: arm*-*-*

the ARM target architecture does not define the MALLOC_ABI_ALIGNMENT,
therefore the default is used as BITS_PER_WORD, 32 in this case.

This produces sometimes suboptimal code, because the front-end
assumes that the function malloc() returns only word-aligned pointers,
which is likely wrong. I have not found any specific requirements
on the malloc alignment in the AAPCS document at
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf
but I believe that the intention is to align everything including stack
pointers to 8 bytes.

Therefore I would suggest the attached patch which defines
MALLOC_ABI_ALIGNMENT as BIGGEST_ALIGNMENT, which is 64 bits.

As a proof that this has indeed some subtle influence on the generated code
I attach a test case. The function foo is called by bar, and bar uses
malloc to allocate the memory, with compiler options "-O3 -g0 -mfpu=neon
-mfloat-abi=softfp" the function foo is inlined into bar,
but the inlined version does not use vstr instructions any more, because
the front-end does assume that malloc returns 4 byte aligned memory.

If that was really true, foo must fail, if it is called without inlining.
Therefore this code is just clumsy and less optimal than it could be.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-09-05 12:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-02 22:35 [Bug target/58065] New: ARM MALLOC_ABI_ALIGNMENT is wrong bernd.edlinger at hotmail dot de
2013-08-02 22:36 ` [Bug target/58065] " bernd.edlinger at hotmail dot de
2013-08-02 22:38 ` bernd.edlinger at hotmail dot de
2013-08-02 22:39 ` bernd.edlinger at hotmail dot de
2013-08-02 22:43 ` bernd.edlinger at hotmail dot de
2013-08-03 22:46 ` david.abdurachmanov at gmail dot com
2013-08-05 20:38 ` ramana at gcc dot gnu.org
2013-08-07  7:37 ` bernd.edlinger at hotmail dot de
2013-09-05 12:28 ` clyon at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).