From 5ac8c4f449e291d5a1a34777e58f4218794f4646 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Sun, 19 May 2013 17:53:37 +0000 Subject: [PATCH] OpenBSD/sparc64 uses long long for int64_t and intmax_t. Other operating systems, including FreeBSD and NetBSD, use long. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182215 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 13 ++++++++++--- test/Preprocessor/init.c | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 0086f05bb4..496893885c 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -4307,9 +4307,16 @@ public: "i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32:64-S128"; // This is an LP64 platform. LongWidth = LongAlign = PointerWidth = PointerAlign = 64; - IntMaxType = SignedLong; - UIntMaxType = UnsignedLong; - Int64Type = SignedLong; + + // OpenBSD uses long long for int64_t and intmax_t. + if (getTriple().getOS() == llvm::Triple::OpenBSD) { + IntMaxType = SignedLongLong; + UIntMaxType = UnsignedLongLong; + } else { + IntMaxType = SignedLong; + UIntMaxType = UnsignedLong; + } + Int64Type = IntMaxType; } virtual void getTargetDefines(const LangOptions &Opts, diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 5ae2d9831d..40dc638851 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -2795,6 +2795,7 @@ // X86_64-LINUX:#define __x86_64__ 1 // // RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc64-none-none < /dev/null | FileCheck -check-prefix SPARCV9 %s +// SPARCV9:#define __INT64_TYPE__ long int // SPARCV9:#define __INTMAX_TYPE__ long int // SPARCV9:#define __INTPTR_TYPE__ long int // SPARCV9:#define __LONG_MAX__ 9223372036854775807L @@ -2802,6 +2803,11 @@ // SPARCV9:#define __SIZEOF_LONG__ 8 // SPARCV9:#define __SIZEOF_POINTER__ 8 // +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc64-none-openbsd < /dev/null | FileCheck -check-prefix SPARC64-OBSD %s +// SPARC64-OBSD:#define __INT64_TYPE__ long long int +// SPARC64-OBSD:#define __INTMAX_TYPE__ long long int +// SPARC64-OBSD:#define __UINTMAX_TYPE__ long long unsigned int +// // RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -check-prefix GNUSOURCE %s // GNUSOURCE:#define _GNU_SOURCE 1 // -- 2.40.0