[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#18711: Numerous unknown attribute '__alloc_size__' warnings when usi
From: |
Ludovic Courtès |
Subject: |
bug#18711: Numerous unknown attribute '__alloc_size__' warnings when using clang |
Date: |
Tue, 14 Oct 2014 12:09:37 +0200 |
User-agent: |
Gnus/5.130011 (Ma Gnus v0.11) Emacs/24.3 (gnu/linux) |
Mark H Weaver <address@hidden> skribis:
> This is clearly an issue with bdwgc on clang, and possibly only on
> Apple's version of clang. Here's the relevant section of
> gc/gc_config_macros.h from bdwgc 7.4.2:
>
> #ifndef GC_ATTR_ALLOC_SIZE
> /* 'alloc_size' attribute improves __builtin_object_size correctness. */
> /* Only single-argument form of 'alloc_size' attribute is used. */
> # if defined(__GNUC__) && (__GNUC__ > 4 \
> || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3 && !defined(__ICC)) \
> || __clang_major__ > 3 \
> || (__clang_major__ == 3 && __clang_minor__ >= 2))
> # define GC_ATTR_ALLOC_SIZE(argnum) __attribute__((__alloc_size__(argnum)))
> # else
> # define GC_ATTR_ALLOC_SIZE(argnum)
> # endif
> #endif
AFAIK, Clang and ICC define __GNUC__ by default, even though they don’t
implement all the features of the corresponding GCC, which may explain
why the above doesn’t work as expected.
> You can see that the bdwgc developers have made an effort to check both
> GCC and clang version numbers before using the __alloc_size__ attribute.
> The code above seems to suggest that they believed clang 3.2 or later
> supported this attribute, whereas your version of clang seems to be
> based on upstream clang 3.5. Perhaps Apple removed support for this
> attribute from their clang?
I think for Clang the right way would be to use the ‘__has_attribute’
magic macro:
http://clang.llvm.org/docs/LanguageExtensions.html#has-attribute
Ludo’.