Fwd: Recursive calloc() due to optimization

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Mar 25 11:34:23 UTC 2015


A nice surprise with GCC 5:

-------- Forwarded Message --------
Subject: 	Recursive calloc() due to optimization
Date: 	Wed, 25 Mar 2015 12:32:58 +0100
From: 	Sebastian Huber <sebastian.huber at embedded-brains.de>
To: 	gcc-help at gcc.gnu.org



Hello,

I updated to GCC 5 and now it turns the RTEMS calloc() implementation into

Disassembly of section .text:

00000000 <calloc>:
    0:   fb01 f000       mul.w   r0, r1, r0
    4:   2101            movs    r1, #1
    6:   f7ff bffe       b.w     0 <calloc>
    a:   bf00            nop

on ARM. How can I disable this optimization? I tried

__attribute__((__optimize__("-fno-builtin")))
void *calloc(
   size_t nelem,
   size_t elsize
)
{
   char   *cptr;
   size_t  length;

   length = nelem * elsize;
   cptr = malloc( length );
   if ( cptr )
     memset( cptr, '\0', length );

   return cptr;
}

but this doesn't work. It this one of the -fno-tree-* options?

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.





More information about the devel mailing list