forked from OSchip/llvm-project
Add character set related __STDC_* definitions.
Clang uses UTF-16 and UTF-32 for its char16_t's and char32_t's exclusively. This means that we can define __STDC_UTF_16__ and __STDC_UTF_32__ unconditionally. While there, define __STDC_MB_MIGHT_NEQ_WC__ for FreeBSD. FreeBSD's wchar_t's don't encode characters as ISO-10646; the encoding depends on the locale used. Because the character set used might not be a superset of ASCII, we must define __STDC_MB_MIGHT_NEQ_WC__. llvm-svn: 191631
This commit is contained in:
parent
e75666f47a
commit
d062146896
|
@ -253,6 +253,11 @@ protected:
|
|||
Builder.defineMacro("__KPRINTF_ATTRIBUTE__");
|
||||
DefineStd(Builder, "unix", Opts);
|
||||
Builder.defineMacro("__ELF__");
|
||||
|
||||
// On FreeBSD, wchar_t contains the number of the code point as
|
||||
// used by the character set of the locale. These character sets are
|
||||
// not necessarily a superset of ASCII.
|
||||
Builder.defineMacro("__STDC_MB_MIGHT_NEQ_WC__", "1");
|
||||
}
|
||||
public:
|
||||
FreeBSDTargetInfo(const llvm::Triple &Triple) : OSTargetInfo<Target>(Triple) {
|
||||
|
|
|
@ -330,6 +330,14 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI,
|
|||
Builder.defineMacro("__cplusplus", "199711L");
|
||||
}
|
||||
|
||||
// In C11 these are environment macros. In C++11 they are only defined
|
||||
// as part of <cuchar>. To prevent breakage when mixing C and C++
|
||||
// code, define these macros unconditionally. We can define them
|
||||
// unconditionally, as Clang always uses UTF-16 and UTF-32 for 16-bit
|
||||
// and 32-bit character literals.
|
||||
Builder.defineMacro("__STDC_UTF_16__", "1");
|
||||
Builder.defineMacro("__STDC_UTF_32__", "1");
|
||||
|
||||
if (LangOpts.ObjC1)
|
||||
Builder.defineMacro("__OBJC__");
|
||||
|
||||
|
|
|
@ -49,6 +49,14 @@
|
|||
// C99:#define __STRICT_ANSI__ 1
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -std=c11 -E -dM < /dev/null | FileCheck -check-prefix C11 %s
|
||||
//
|
||||
// C11:#define __STDC_UTF_16__ 1
|
||||
// C11:#define __STDC_UTF_32__ 1
|
||||
// C11:#define __STDC_VERSION__ 201112L
|
||||
// C11:#define __STRICT_ANSI__ 1
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM < /dev/null | FileCheck -check-prefix COMMON %s
|
||||
//
|
||||
// COMMON:#define __CONSTANT_CFSTRINGS__ 1
|
||||
|
@ -2925,6 +2933,12 @@
|
|||
// X86_64-LINUX:#define __x86_64 1
|
||||
// X86_64-LINUX:#define __x86_64__ 1
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-unknown-freebsd9.1 < /dev/null | FileCheck -check-prefix X86_64-FREEBSD %s
|
||||
//
|
||||
// X86_64-FREEBSD:#define __FreeBSD__ 9
|
||||
// X86_64-FREEBSD:#define __FreeBSD_cc_version 900001
|
||||
// X86_64-FREEBSD:#define __STDC_MB_MIGHT_NEQ_WC__ 1
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc64-none-none < /dev/null | FileCheck -check-prefix SPARCV9 %s
|
||||
// SPARCV9:#define __INT64_TYPE__ long int
|
||||
// SPARCV9:#define __INTMAX_TYPE__ long int
|
||||
|
|
Loading…
Reference in New Issue