qiucf updated this revision to Diff 403114. qiucf marked 3 inline comments as done. qiucf edited the summary of this revision.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D118110/new/ https://reviews.llvm.org/D118110 Files: clang/CMakeLists.txt clang/include/clang/Config/config.h.cmake clang/include/clang/Driver/ToolChain.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/test/Analysis/builtin_signbit.cpp clang/test/Driver/ppc-abi.c
Index: clang/test/Driver/ppc-abi.c =================================================================== --- clang/test/Driver/ppc-abi.c +++ clang/test/Driver/ppc-abi.c @@ -63,9 +63,6 @@ // CHECK-ELFv1-IEEE: "-mabi=ieeelongdouble" // CHECK-ELFv1-IEEE: "-target-abi" "elfv1" -// Check -mabi=ibmlongdouble is the default. -// RUN: %clang -target powerpc64le-linux-gnu %s -### 2>&1 \ -// RUN: | FileCheck -check-prefix=CHECK-ELFv2-IBM128 %s // RUN: %clang -target powerpc64le-linux-gnu %s -mabi=ibmlongdouble -### 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-ELFv2-IBM128 %s Index: clang/test/Analysis/builtin_signbit.cpp =================================================================== --- clang/test/Analysis/builtin_signbit.cpp +++ clang/test/Analysis/builtin_signbit.cpp @@ -1,6 +1,9 @@ -// RUN: %clang -target powerpc-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-BE --check-prefix=CHECK -// RUN: %clang -target powerpc64-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-BE --check-prefix=CHECK -// RUN: %clang -target powerpc64le-linux-gnu -emit-llvm -S -O0 %s -o - | FileCheck %s --check-prefix=CHECK-LE --check-prefix=CHECK +// RUN: %clang -target powerpc-linux-gnu -emit-llvm -S -mabi=ibmlongdouble \ +// RUN: -O0 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-BE +// RUN: %clang -target powerpc64-linux-gnu -emit-llvm -S -mabi=ibmlongdouble \ +// RUN: -O0 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-BE +// RUN: %clang -target powerpc64le-linux-gnu -emit-llvm -S -mabi=ibmlongdouble \ +// RUN: -O0 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-LE bool b; double d = -1.0; Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -2061,7 +2061,7 @@ } } - bool IEEELongDouble = false; + bool IEEELongDouble = getToolChain().defaultToIEEELongDouble(); for (const Arg *A : Args.filtered(options::OPT_mabi_EQ)) { StringRef V = A->getValue(); if (V == "ieeelongdouble") Index: clang/lib/Driver/ToolChain.cpp =================================================================== --- clang/lib/Driver/ToolChain.cpp +++ clang/lib/Driver/ToolChain.cpp @@ -109,6 +109,10 @@ return ENABLE_X86_RELAX_RELOCATIONS; } +bool ToolChain::defaultToIEEELongDouble() const { + return PPC_LINUX_DEFAULT_IEEELONGDOUBLE && getTriple().isOSLinux(); +} + SanitizerArgs ToolChain::getSanitizerArgs(const llvm::opt::ArgList &JobArgs) const { SanitizerArgs SanArgs(*this, JobArgs, !SanitizerArgsChecked); Index: clang/include/clang/Driver/ToolChain.h =================================================================== --- clang/include/clang/Driver/ToolChain.h +++ clang/include/clang/Driver/ToolChain.h @@ -409,6 +409,9 @@ /// Check whether to enable x86 relax relocations by default. virtual bool useRelaxRelocations() const; + /// Check whether use IEEE binary128 as long double format by default. + bool defaultToIEEELongDouble() const; + /// GetDefaultStackProtectorLevel - Get the default stack protector level for /// this tool chain. virtual LangOptions::StackProtectorMode Index: clang/include/clang/Config/config.h.cmake =================================================================== --- clang/include/clang/Config/config.h.cmake +++ clang/include/clang/Config/config.h.cmake @@ -78,6 +78,9 @@ /* enable x86 relax relocations by default */ #cmakedefine01 ENABLE_X86_RELAX_RELOCATIONS +/* Enable IEEE binary128 as default long double format on PowerPC Linux. */ +#cmakedefine01 PPC_LINUX_DEFAULT_IEEELONGDOUBLE + /* Enable each functionality of modules */ #cmakedefine01 CLANG_ENABLE_ARCMT #cmakedefine01 CLANG_ENABLE_OBJC_REWRITER Index: clang/CMakeLists.txt =================================================================== --- clang/CMakeLists.txt +++ clang/CMakeLists.txt @@ -237,6 +237,9 @@ set(ENABLE_X86_RELAX_RELOCATIONS ON CACHE BOOL "enable x86 relax relocations by default") +set(PPC_LINUX_DEFAULT_IEEELONGDOUBLE OFF CACHE BOOL + "Enable IEEE binary128 as default long double format on PowerPC Linux.") + set(CLANG_SPAWN_CC1 OFF CACHE BOOL "Whether clang should use a new process for the CC1 invocation")
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits