зеркало из https://github.com/microsoft/clang-1.git
Make sure we define wchar_t related macros correctly in -fms-extensions mode.
This adds a test to make sure we define _WCHAR_T_DEFINED and _NATIVE_WCHAR_T_DEFINED correctly in the preprocessor, and updates stddef.h to set it when typedeffing wchar_t. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180918 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
de5ed04b08
Коммит
c814c64c6f
|
@ -58,6 +58,9 @@ typedef __SIZE_TYPE__ rsize_t;
|
|||
#if !defined(_WCHAR_T) || __has_feature(modules)
|
||||
#if !__has_feature(modules)
|
||||
#define _WCHAR_T
|
||||
#if defined(_MSC_EXTENSIONS)
|
||||
#define _WCHAR_T_DEFINED
|
||||
#endif
|
||||
#endif
|
||||
typedef __WCHAR_TYPE__ wchar_t;
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// RUN: %clang -fsyntax-only -target i386-pc-win32 %s
|
||||
|
||||
#if defined(_WCHAR_T_DEFINED)
|
||||
#error "_WCHAR_T_DEFINED should not be defined in C99"
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#if !defined(_WCHAR_T_DEFINED)
|
||||
#error "_WCHAR_T_DEFINED should have been set by stddef.h"
|
||||
#endif
|
||||
|
||||
#if defined(_NATIVE_WCHAR_T_DEFINED)
|
||||
#error "_NATIVE_WCHAR_T_DEFINED should not be defined"
|
||||
#endif
|
|
@ -88,10 +88,24 @@
|
|||
// C94:#define __STDC_VERSION__ 199409L
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -fms-extensions -triple i686-pc-win32 -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -check-prefix MSEXT %s
|
||||
// RUN: %clang_cc1 -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT %s
|
||||
//
|
||||
// MSEXT-NOT:#define __STDC__
|
||||
// MSEXT:#define _INTEGRAL_MAX_BITS 64
|
||||
// MSEXT-NOT:#define _NATIVE_WCHAR_T_DEFINED 1
|
||||
// MSEXT-NOT:#define _WCHAR_T_DEFINED 1
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -x c++ -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX %s
|
||||
//
|
||||
// MSEXT-CXX:#define _NATIVE_WCHAR_T_DEFINED 1
|
||||
// MSEXT-CXX:#define _WCHAR_T_DEFINED 1
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -x c++ -fno-wchar -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX-NOWCHAR %s
|
||||
//
|
||||
// MSEXT-CXX-NOWCHAR-NOT:#define _NATIVE_WCHAR_T_DEFINED 1
|
||||
// MSEXT-CXX-NOWCHAR-NOT:#define _WCHAR_T_DEFINED 1
|
||||
//
|
||||
//
|
||||
// RUN: %clang_cc1 -x objective-c -E -dM < /dev/null | FileCheck -check-prefix OBJC %s
|
||||
|
|
Загрузка…
Ссылка в новой задаче