Revert "intmax_t is long long on Darwin, not long."

'long' and 'long long' are different for the purposes of mangling.
This caused <rdar://problem/13254874>.

This reverts commit c2f994d31ec85e9af811af38eb1b28709aef0b2c.

llvm-svn: 175681
This commit is contained in:
Jordan Rose 2013-02-20 22:28:41 +00:00
parent 6f54f787b4
commit 011bda8031
3 changed files with 1 additions and 26 deletions

View File

@ -3119,8 +3119,6 @@ class DarwinX86_64TargetInfo : public DarwinTargetInfo<X86_64TargetInfo> {
public:
DarwinX86_64TargetInfo(const std::string& triple)
: DarwinTargetInfo<X86_64TargetInfo>(triple) {
IntMaxType = SignedLongLong;
UIntMaxType = UnsignedLongLong;
Int64Type = SignedLongLong;
MaxVectorAlign = 256;
}

View File

@ -21,7 +21,6 @@ typedef int NSInteger;
typedef unsigned int NSUInteger;
typedef long SInt32;
typedef unsigned long UInt32;
#endif
NSInteger getNSInteger();
@ -211,25 +210,3 @@ void testCapitals() {
// CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:13-[[@LINE-3]]:14}:"d"
// CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:14}:"%D"
}
// The OS X headers do not always use __INTMAX_TYPE__ and friends.
typedef long long intmax_t;
typedef unsigned long long uintmax_t;
#define INTMAX_C(X) (X ## LL)
#define UINTMAX_C(X) (X ## ULL)
void testIntMax(intmax_t i, uintmax_t u) {
printf("%d", i); // expected-warning{{format specifies type 'int' but the argument has type 'intmax_t' (aka 'long long')}}
printf("%d", u); // expected-warning{{format specifies type 'int' but the argument has type 'uintmax_t' (aka 'unsigned long long')}}
// CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:11-[[@LINE-3]]:13}:"%jd"
// CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:11-[[@LINE-3]]:13}:"%ju"
printf("%jd", i); // no-warning
printf("%ju", u); // no-warning
printf("%jd", INTMAX_C(5)); // no-warning
printf("%ju", INTMAX_C(5)); // no-warning
}

View File

@ -1,4 +1,4 @@
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify %s
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
int printf(char const *, ...);