diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 11 | ||||
-rw-r--r-- | clang/test/Preprocessor/woa-wchar_t.c | 5 |
2 files changed, 14 insertions, 2 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 5effe027e24..4bcdb373413 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3784,11 +3784,18 @@ class ARMTargetInfo : public TargetInfo { else SizeType = UnsignedInt; - if (T.getOS() == llvm::Triple::NetBSD) { + switch (T.getOS()) { + case llvm::Triple::NetBSD: WCharType = SignedInt; - } else { + break; + case llvm::Triple::Win32: + WCharType = UnsignedShort; + break; + case llvm::Triple::Linux: + default: // AAPCS 7.1.1, ARM-Linux ABI 2.4: type of wchar_t is unsigned int. WCharType = UnsignedInt; + break; } UseBitFieldTypeAlignment = true; diff --git a/clang/test/Preprocessor/woa-wchar_t.c b/clang/test/Preprocessor/woa-wchar_t.c new file mode 100644 index 00000000000..eb9a8628537 --- /dev/null +++ b/clang/test/Preprocessor/woa-wchar_t.c @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -dM -triple armv7-windows -E %s | FileCheck %s +// RUN: %clang_cc1 -dM -fno-signed-char -triple armv7-windows -E %s | FileCheck %s + +// CHECK: #define __WCHAR_TYPE__ unsigned short + |