Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit b015d77

Browse files
use -O3 with some optimizations disabled on sparc w/ gcc
A previous commit changed it so that rust's private copy of llvm was always built with -O0 on sparc, as initially that was the only option that produced a working compiler. After further investigation, it was discovered that applying -fno-delayed-branch and -fno-omit-frame-pointer was sufficient to avoid all of the code generation issues initially encountered while retaining -O3. Investigation with gcc upstream continues.
1 parent 4af19ce commit b015d77

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -700,8 +700,10 @@ endif()
700700

701701
if( "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" AND "${LLVM_NATIVE_ARCH}" MATCHES "Sparc" )
702702
# gcc 4.x, 5.x (at least) generate bad code on sparc above -O0 when compiling
703-
# llvm; notably llvm-tblgen consistently core dumps.
704-
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O0")
703+
# llvm. Notably llvm-tblgen consistently core dumps, *unless*
704+
# -fno-delayed-branch is specified. Finally, -fno-omit-frame-pointer is
705+
# included to avoid additional code generation and debugging issues.
706+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O3 -fno-delayed-branch -fno-omit-frame-pointer")
705707
endif()
706708

707709
# Put this before tblgen. Else we have a circular dependence.

0 commit comments

Comments
 (0)