On Fri, 22 Mar 2013, Ian Lance Taylor wrote:

> On Fri, Mar 22, 2013 at 3:27 AM, Richard Biener <rguent...@suse.de> wrote:
> >
> > I think the wrong-code fix is orthogonal to code improvements
> > which will also trigger on the GIMPLE level (and where they
> > will have a bigger impact).
> 
> I agree.  I think the patch to calls is fine unless Jakub objects.
> 
> 
> > We can for example, in config/linux.h do
> >
> > #if OPTION_GLIBC
> > #undef MALLOC_ABI_ALIGNMENT
> > #define MALLOC_ABI_ALIGNMENT (2 * sizeof (void *))
> > #endif
> >
> > if that's what glibc really guarantees (does it maybe have a
> > feature macro for this?)
> 
> The code in glibc seems to be in malloc.c only.  The most conservative
> version seems to be
> 
> #define INTERNAL_SIZE_T size_t
> #define SIZE_SZ                (sizeof(INTERNAL_SIZE_T))
> #  define MALLOC_ALIGNMENT       (2 * SIZE_SZ)
> 
> In GCC terms this would be 2 * int_size_in_bytes (size_type_node).

Or, given

  /* Define what type to use for size_t.  */
  if (strcmp (SIZE_TYPE, "unsigned int") == 0)
    size_type_node = unsigned_type_node;
...

#define MALLOC_ABI_ALIGNMENT (2 * sizeof (### magic un-stringify SIZE_TYPE))

eh ... is there a more convenient way to access the targets size_t?

It's a target macro still ... not often used, so even

#define MALLOC_ABI_ALIGNMENT (2 * TREE_INT_CST_LOW (TYPE_SIZE_UNIT 
(size_type_node)))

would probably work, but ...

Richard.

Reply via email to