[PATCH] D85630: [cmake] Don't build with -O3 -fPIC on Solaris/sparcv9
Rainer Orth via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 28 02:41:16 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG15c66b10114d: [cmake] Don't build with -O3 -fPIC on Solaris/sparcv9 (authored by ro).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D85630/new/
https://reviews.llvm.org/D85630
Files:
llvm/cmake/modules/HandleLLVMOptions.cmake
Index: llvm/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm/cmake/modules/HandleLLVMOptions.cmake
+++ llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -12,6 +12,7 @@
include(CheckCXXCompilerFlag)
include(CheckSymbolExists)
include(CMakeDependentOption)
+include(LLVMProcessSources)
if(CMAKE_LINKER MATCHES "lld-link" OR (MSVC AND (LLVM_USE_LINKER STREQUAL "lld" OR LLVM_ENABLE_LLD)))
set(LINKER_IS_LLD_LINK TRUE)
@@ -300,6 +301,15 @@
NOT Uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")
add_flag_or_print_warning("-fno-shrink-wrap" FNO_SHRINK_WRAP)
endif()
+ # gcc with -O3 -fPIC generates TLS sequences that violate the spec on
+ # Solaris/sparcv9, causing executables created with the system linker
+ # to SEGV (GCC PR target/96607).
+ # clang with -O3 -fPIC generates code that SEGVs.
+ # Both can be worked around by compiling with -O instead.
+ if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS" AND LLVM_NATIVE_ARCH STREQUAL "Sparc")
+ llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O[23]" "-O")
+ llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O[23]" "-O")
+ endif()
endif()
if(NOT WIN32 AND NOT CYGWIN AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85630.288561.patch
Type: text/x-patch
Size: 1314 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200828/0d23f88b/attachment.bin>
More information about the llvm-commits
mailing list