MachO: set sizeof result type to what embedded headers expect.

Embedded systems seem to have inherited Darwin's choise of "unsigned long" for
size_t (via a bunch of headers), so we should respect that.

rdar://problem/17872787

llvm-svn: 214854
This commit is contained in:
Tim Northover 2014-08-05 11:07:26 +00:00
parent 183771bd8e
commit 00853e5b6a
2 changed files with 3 additions and 2 deletions
clang

View File

@ -3596,8 +3596,8 @@ class ARMTargetInfo : public TargetInfo {
DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 64;
const llvm::Triple &T = getTriple();
// size_t is unsigned long on Darwin and NetBSD.
if (T.isOSDarwin() || T.getOS() == llvm::Triple::NetBSD)
// size_t is unsigned long on MachO-derived environments and NetBSD.
if (T.isOSBinFormatMachO() || T.getOS() == llvm::Triple::NetBSD)
SizeType = UnsignedLong;
else
SizeType = UnsignedInt;

View File

@ -1,4 +1,5 @@
// RUN: %clang_cc1 %s -triple thumbv7-apple-ios -target-abi aapcs -verify -fsyntax-only
// RUN: %clang_cc1 %s -triple thumbv7m-apple-macho -target-abi aapcs -verify -fsyntax-only
// expected-no-diagnostics
// ARM's AAPCS normally has size_t defined as unsigned int, but on Darwin