[cfe-dev] Predefined stdint macros (i.e. __UINT8_TYPE__, etc.)

Alp Toker alp at nuanti.com
Thu Jun 12 13:37:56 PDT 2014


On 12/06/2014 23:36, Richard Smith wrote:
> On Thu, Jun 12, 2014 at 1:32 PM, Richard Smith <richard at metafoo.co.uk 
> <mailto:richard at metafoo.co.uk>> wrote:
>
>     On Wed, Jun 11, 2014 at 3:29 PM, Alp Toker <alp at nuanti.com
>     <mailto:alp at nuanti.com>> wrote:
>
>
>         On 12/06/2014 01:12, Reid Kleckner wrote:
>
>             On Wed, Jun 11, 2014 at 2:46 PM, Alp Toker <alp at nuanti.com
>             <mailto:alp at nuanti.com> <mailto:alp at nuanti.com
>             <mailto:alp at nuanti.com>>> wrote:
>
>
>                 On 12/06/2014 00:33, Ben Smith wrote:
>
>                     On Wed, Jun 11, 2014 at 12:14 PM, Chandler Carruth
>                     <chandlerc at google.com
>             <mailto:chandlerc at google.com> <mailto:chandlerc at google.com
>             <mailto:chandlerc at google.com>>
>                     <mailto:chandlerc at google.com
>             <mailto:chandlerc at google.com> <mailto:chandlerc at google.com
>             <mailto:chandlerc at google.com>>>>
>
>                     wrote:
>
>
>                         On Wed, Jun 11, 2014 at 8:10 PM, Ben Smith
>                     <binji at chromium.org <mailto:binji at chromium.org>
>             <mailto:binji at chromium.org <mailto:binji at chromium.org>>
>                         <mailto:binji at chromium.org
>             <mailto:binji at chromium.org> <mailto:binji at chromium.org
>             <mailto:binji at chromium.org>>>>
>
>                     wrote:
>
>                             Hello cfe-dev,
>
>                             Clang defines a subset of the predefined
>             stdint macros
>                     that
>                             GCC does. In particular, GCC defines the
>             following
>                     macros many
>                             of which are not defined in Clang:
>
>             __U?INT{_,_FAST,_LEAST}{8,16,32,64}_{MAX,TYPE}__
>             __U?INT{PTR,MAX}_{MAX,TYPE}__
>
>                             Some of these macros are used in newlib's
>             stdint.h, if
>                     they
>                             exist. It seems that it hasn't been
>             thoroughly tested with
>                             Clang, however, as some macros are assumed
>             to exist.
>
>                             Is it worth adding these to Clang?
>
>
>                         Yes, we should try to be compatible here, and
>             generally it
>                     seems
>                         reasonable to define the fully expanded set of
>             these.
>
>
>                     Great, I'll make a CL adding these.
>
>
>                 Be sure to put them behind !MSVCCompat* as we've been
>             seeing
>                 problem reports about GCC definitions confusing MSVC
>             code recently.
>
>
>             I don't agree with this necessarily.  If the macros don't
>             actively conflict with MSVC, I would add them to the set
>             of integer types that we currently define.
>
>
>         How so? I'm pretty sure we want to keep the predefined macros
>         aligned with MSVC when in full compatibility mode for now.
>         We're not always consistent but that was the idea..
>
>
>     Our builtin stdint.h uses these macros; we need to provide them in
>     all modes.
>
>
> Hmm, maybe we could keep the current set of __INT*_TYPE__ (that we use 
> in stdint.h) visible in all modes, but make the additional macros be 
> GCC-only. Or perhaps we should tell the newlib folks that they 
> shouldn't be relying on compiler implementation details, and should 
> just include stdint.h. =)

That was my line of thinking ;-)

I'm more interested in tucking away the GXX and __GNUC__ macros to be 
honest, and getting __VERSION__ to not lie unless in GCCCompat mode but 
these would be nice-to-haves.

Alp.

>
>             The problem with the __EXCEPTIONS macro was that
>             exceptions don't work in the MSVC ABI yet.
>
>
>         If we start defining other macros, especially well-known GNU
>         ones, there's a risk that random bits of GCC-specific code
>         will get enabled in portable headers..
>
>
>             Once they do work, I would like to define __EXCEPTIONS so
>             that portable headers that detect the GCC macro will Just
>             Work.
>
>
>         If an in-between mode like that is something you want (and I
>         suspect it *isn't* for most of our users), how about holding
>         on a couple of days for the prospective -fms-compatibility
>         -fgcc-compatibility?
>
>         Adding these unconditionally now just adds more work to make
>         the switch.
>
>         Alp.
>
>
>         -- 
>         http://www.nuanti.com
>         the browser experts
>
>         _______________________________________________
>         cfe-dev mailing list
>         cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
>         http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
>

-- 
http://www.nuanti.com
the browser experts




More information about the cfe-dev mailing list