From: Hal Finkel Date: Fri, 2 Mar 2012 20:54:36 +0000 (+0000) Subject: Fix an ABI problem with ptrdiff_t and intptr_t on PPC32 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=178a9b8b22cb77b4291bf076c0cd8d6561c7e711;p=clang Fix an ABI problem with ptrdiff_t and intptr_t on PPC32 ptrdiff_t on PPC32 on Linux, etc. should be int not long. This does not matter for C, but it does matter for C++ because of name mangling. The preprocessor test has been changed accordingly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151935 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index ac8c355707..a7c4f225c3 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -865,6 +865,8 @@ public: case llvm::Triple::FreeBSD: case llvm::Triple::NetBSD: SizeType = UnsignedInt; + PtrDiffType = SignedInt; + IntPtrType = SignedInt; break; default: break; diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index aff8c62092..a43d1765a7 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -852,7 +852,7 @@ // PPC-LINUX:#define __INTMAX_MAX__ 9223372036854775807LL // PPC-LINUX:#define __INTMAX_TYPE__ long long int // PPC-LINUX:#define __INTMAX_WIDTH__ 64 -// PPC-LINUX:#define __INTPTR_TYPE__ long int +// PPC-LINUX:#define __INTPTR_TYPE__ int // PPC-LINUX:#define __INTPTR_WIDTH__ 32 // PPC-LINUX:#define __INT_MAX__ 2147483647 // PPC-LINUX:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L @@ -875,7 +875,7 @@ // PPC-LINUX:#define __NO_INLINE__ 1 // PPC-LINUX:#define __POINTER_WIDTH__ 32 // PPC-LINUX:#define __POWERPC__ 1 -// PPC-LINUX:#define __PTRDIFF_TYPE__ long int +// PPC-LINUX:#define __PTRDIFF_TYPE__ int // PPC-LINUX:#define __PTRDIFF_WIDTH__ 32 // PPC-LINUX:#define __REGISTER_PREFIX__ // PPC-LINUX:#define __SCHAR_MAX__ 127