diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-05-04 01:56:04 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-05-04 01:56:04 +0000 |
commit | 6323a2d63c704aa26e6e10b48cbc6d55325a496a (patch) | |
tree | 6a7c0364f0b8b5d2173a3cb552256493b2087378 /clang/lib | |
parent | 3c82b499a01ab4c3c1d1db0e821b39d8524c91ae (diff) | |
download | bcm5719-llvm-6323a2d63c704aa26e6e10b48cbc6d55325a496a.tar.gz bcm5719-llvm-6323a2d63c704aa26e6e10b48cbc6d55325a496a.zip |
Target: fix wchar_t definition for Windows on ARM
Windows on ARM uses AAPCS, but has some deviations. wchar_t remains an unsigned
short on WoA, which does not conform to AAPCS. Ensure that wchar_t is defined
accordingly.
llvm-svn: 207929
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 11 |
1 files changed, 9 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; |