From 826df14d7274ed8e637dcbd8e4bb3d8b89f7d175 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. llvm-svn: 182215 --- clang/lib/Basic/Targets.cpp | 13 ++++++++++--- clang/test/Preprocessor/init.c | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 0086f05bb48e..496893885c68 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/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/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 5ae2d9831d7c..40dc63885172 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/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 //