From 00853e5b6ac9a98282cded783f363c46f07a0c91 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Tue, 5 Aug 2014 11:07:26 +0000 Subject: [PATCH] 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 --- clang/lib/Basic/Targets.cpp | 4 ++-- clang/test/Sema/arm-darwin-aapcs.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 034bb07..eae3698 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -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; diff --git a/clang/test/Sema/arm-darwin-aapcs.cpp b/clang/test/Sema/arm-darwin-aapcs.cpp index 1359a1d..3a6082a 100644 --- a/clang/test/Sema/arm-darwin-aapcs.cpp +++ b/clang/test/Sema/arm-darwin-aapcs.cpp @@ -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 -- 2.7.4