Skip to content

[Clang] __{,u}INT_FAST{16,32}_TYPE__ is incorrect #168333

@philnik777

Description

@philnik777

The following should work just fine AFAICT:

#include <stdint.h>

static_assert(__is_same(int8_t, __INT8_TYPE__));
static_assert(__is_same(int16_t, __INT16_TYPE__));
static_assert(__is_same(int32_t, __INT32_TYPE__));
static_assert(__is_same(int64_t, __INT64_TYPE__));
static_assert(__is_same(int_least8_t, __INT_LEAST8_TYPE__));
static_assert(__is_same(int_least16_t, __INT_LEAST16_TYPE__));
static_assert(__is_same(int_least32_t, __INT_LEAST32_TYPE__));
static_assert(__is_same(int_fast64_t, __INT_FAST64_TYPE__));
static_assert(__is_same(int_fast8_t, __INT_FAST8_TYPE__));
static_assert(__is_same(int_fast16_t, __INT_FAST16_TYPE__));
static_assert(__is_same(int_fast32_t, __INT_FAST32_TYPE__));
static_assert(__is_same(int_fast64_t, __INT_FAST64_TYPE__));
static_assert(__is_same(intptr_t, __INTPTR_TYPE__));
static_assert(__is_same(intmax_t, __INTMAX_TYPE__));

static_assert(__is_same(uint8_t, __UINT8_TYPE__));
static_assert(__is_same(uint16_t, __UINT16_TYPE__));
static_assert(__is_same(uint32_t, __UINT32_TYPE__));
static_assert(__is_same(uint64_t, __UINT64_TYPE__));
static_assert(__is_same(uint_least8_t, __UINT_LEAST8_TYPE__));
static_assert(__is_same(uint_least16_t, __UINT_LEAST16_TYPE__));
static_assert(__is_same(uint_least32_t, __UINT_LEAST32_TYPE__));
static_assert(__is_same(uint_least64_t, __UINT_LEAST64_TYPE__));
static_assert(__is_same(uint_fast8_t, __UINT_FAST8_TYPE__));
static_assert(__is_same(uint_fast16_t, __UINT_FAST16_TYPE__));
static_assert(__is_same(uint_fast32_t, __UINT_FAST32_TYPE__));
static_assert(__is_same(uint_fast64_t, __UINT_FAST64_TYPE__));
static_assert(__is_same(uintptr_t, __UINTPTR_TYPE__));
static_assert(__is_same(uintmax_t, __UINTMAX_TYPE__));

However, at least with glibc, a few of the static_asserts currently fail. Note that with GCC this does in fact work: https://godbolt.org/z/xjcGzq4Mb

Metadata

Metadata

Assignees

No one assigned

    Labels

    cc++clang:frontendLanguage frontend issues, e.g. anything involving "Sema"confirmedVerified by a second party

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions