aboutsummaryrefslogtreecommitdiff
path: root/lib/Headers/stdint.h
AgeCommit message (Collapse)Author
2013-04-12Headers: Add support for ISO9899:2011 rsize_t.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179427 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-12tl;dr: Teach Clang to work around g++ changing its workaround to glibc'sRichard Smith
implementation of C99's attempt to control the C++ standard. *sigh* The C99 standard says that certain macros in <stdint.h>, such as SIZE_MAX, should not be defined when the header is included in C++ mode, unless __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are defined. The C++11 standard says "Thanks, but no thanks" and C11 removed this rule, but various C library implementations (such as glibc) follow C99 anyway. g++ prior to 4.8 worked around the C99 / glibc behavior by defining __STDC_*_MACROS in <cstdint>, which was incorrect, because <stdint.h> is supposed to provide these macros too. g++ 4.8 works around it by defining __STDC_*_MACROS in its builtin <stdint.h> header. This change makes Clang act like g++ 4.8 in this regard: our <stdint.h> now countermands any attempt by the C library to implement the undesired C99 rules, by defining the __STDC_*_MACROS first. Unlike g++, we do this even in C++98 mode, since that was the intent of the C++ committee, matches the behavior required in C11, and matches our built-in implementation of <stdint.h>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179419 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-30Some small improvements to the builtin (-ffreestanding) stdint.h; inEli Friedman
particular, make sure to handle WCHAR_MIN correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130618 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-21PR9772: Fix the definition of WINT_MIN and WINT_MAX on Linux -ffreestanding.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129907 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-15fix a bunch of comment typos found by codespell. Patch byChris Lattner
Luis Felipe Strano Moraes! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129559 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-30Headers: Change [u]intmax_t to be defined in terms of __[U]INTMAX_TYPE__, ↵Daniel Dunbar
instead of intN_t. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107254 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-24Headers: Hide intptr_t and uintptr_t definitions behind _INTPTR_T and _UINTPTR_TDaniel Dunbar
defines, for increased compatibility with Darwin gcc. - This is a bit of a hack, since platform compatibility issues don't belong here, but I don't think this hurts anyone either. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@102264 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-22Define SIG_ATOMIC_MIN and SIG_ATOMIC_MAX in terms of __SIG_ATOMIC_WIDTH__.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89598 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-20Avoid unwanted expansion in macros that paste together INT<n>_C(v) and Ken Dyck
UINT<n>_C(v) macros. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-20Avoid unwanted expansion in macros that paste together INT<n>_MIN, INT<n>_MAX,Ken Dyck
and UINT<n>_MAX defintions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89460 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-20Avoid unwanted macro expansion in macros that paste together int<n>_t andKen Dyck
uint<n>_t definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89459 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-19Define WCHAR_MIN and WCHAR_MAX in terms of __WCHAR_WIDTH__ for consistency withKen Dyck
other limit macros. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89355 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-19Parameterize WINT_MIN and WINT_MAX with __WINT_WIDTH__ to support arbitrary Ken Dyck
widths. This corrects the values of these definitions for MSP430 and PIC16. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89350 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-19Construct definition of SIZE_MAX from __SIZE_WIDTH__ to support targets ofKen Dyck
arbitrary widths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89347 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-19Construct the macro body of PTRDIFF_MAX and PTRDIFF_MIN from __PTRDIFF_WIDTH__.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89343 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Construct INTPTR_MIN, INTPTR_MAX, and UINTPTR_MAX from the exact-width limitKen Dyck
macros corresponding to __INTPTR_WIDTH__. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89239 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Define intptr_t and uintptr_t in terms of their equivalent exact-width types.Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Define INTMAX_C and UINTMAX_C in terms of the corresponding exact-widthKen Dyck
INTn_C and UINTn_C macros. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89226 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Define INTMAX_MIN, INTMAX_MAX, and UINTMAX_MAX in terms of the limit macros forKen Dyck
their corresponding exact-width type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89224 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-18Define intmax_t and uintmax_t as the [u]intN_t type corresponding toKen Dyck
__INTMAX_WIDTH__. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89221 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-17Replace (-INT8_C(128)), which uses an illegally out-of-range argument forKen Dyck
INT8_C, with (-INT8_C(127)-1) in the definition of INT8_MIN. Apply similar changes to the definitions of INT16_MIN and INT24_MIN. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89120 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-17Use the INTn_C integer constant macros to generate limit constants with correctKen Dyck
suffixes. This corrects the suffixes for the limit constants of the 32-bit types on MSP430 and PIC16, and the 64-bit types on PPC64, SystemZ, X86_64. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-17Remove unnecessary parens around the bodies of integer constant macros. C99Ken Dyck
requires that their arguments be decimal, hex, octal constants---no signs allowed---making the parens unnecessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89095 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Parameterize the constant-generating macros in stdint.h with new built-inKen Dyck
__INTn_C_SUFFIX__ macros that are defined for types with corresponding constant suffixes (i.e. long and long long). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88914 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12Generalize stdint.h for non-8-bit-multiple types, patch by Chris Lattner
Ken Dyck! "This adds definitions for types of 8-bit multiples from 8 to 64 to stdint.h and rationalizes the selection of types for the exact-width definitions in InitPreprocessor.cpp." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86977 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04A simple reordering of the definitions in stdint.h and Chris Lattner
introduces no new function changes. Patch by Ken Dyck! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86062 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Added __has_include and __has_include_next.John Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-03Fix for PR3841: follow gcc's example and fall back to the system Eli Friedman
stdint.h unless we are freestanding. Any suggestions here are welcome. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70806 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-18glibc plays some weird games with multiple different definitions ofChris Lattner
int8_t and games it with strange *_defined macros. Emulate its weirdness for better compatibility with linux etc. Problem pointed out by anders johnson. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69458 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-15Only intptr_t is protected by __intptr_t_defined.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67018 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-28fix inverted conditional, rdar://6633188Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65704 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-13anders johnson points out that some software depends on theChris Lattner
definition of __intptr_t_defined when stdint.h defines intptr_t. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64497 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-13Give TargetInfo a new IntPtrType to hold the intptr_t type forChris Lattner
a target. Make Preprocessor.cpp define a new __INTPTR_TYPE__ macro based on this. On linux/32, set intptr_t to int, instead of long. This fixes PR3563. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64495 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-10Fix an #ifndef that should be an #ifdef instead.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64206 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07C++ really shouldn't check these #defines, thanks to HowardChris Lattner
for pointing this out! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64037 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07remove two eroneous suffixes, these promote to int. Thanks to NeilChris Lattner
for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64011 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07fix some missing parens, thanks for Eli's review!Chris Lattner
Obviously I make a miserable header developer :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64009 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07make sure that UINTMAX_MAX has an unsigned type. This assumes that Chris Lattner
uintmax_t is unsigned long long, which is not optimal, but is assumed elsewhere already. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64007 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07make various MAX/MIN constants be preprocessor constants, not C constants.Chris Lattner
Thanks to Eli for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64006 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-07Apparently it is important to define intptr_t and uintptr_t to Chris Lattner
long instead of int. This is because system heaers like to redefine typedefs and that is an error if they don't exactly match. Use long for intptr_t on all systems where long is the right size. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63984 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-06Fix some errors in the new stdint.h.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63982 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-06add a stdint.h header.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63977 91177308-0d34-0410-b5e6-96231b3b80d8