diff --git a/CMakeLists.txt b/CMakeLists.txt index 92f08ae804c9..70205ad07d7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -812,8 +812,10 @@ endif() if( "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND "${LLVM_NATIVE_ARCH}" MATCHES "Sparc" ) # gcc 4.x, 5.x (at least) generate bad code on sparc above -O0 when compiling - # llvm; notably llvm-tblgen consistently core dumps. - llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O0") + # llvm. Notably llvm-tblgen consistently core dumps, *unless* + # -fno-delayed-branch is specified. Finally, -fno-omit-frame-pointer is + # included to avoid additional code generation and debugging issues. + llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O3 -fno-delayed-branch -fno-omit-frame-pointer") endif() # Put this before tblgen. Else we have a circular dependence.