Skip to content

Commit

Permalink
[cmake] Disable a GCC optimization when building LLVM for MIPS
Browse files Browse the repository at this point in the history
GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized
value when shrink wrapping is enabled. As shrink wrapping is enabled in
GCC at all optimization levels, it must be disabled. This bug exists for
all versions of GCC since 4.9.2.

This partially resolves PR37701 / GCC PR target/86069.

Patch by Simon Dardis.

Differential Revision: https://reviews.llvm.org/D48069

llvm-svn: 359376
  • Loading branch information
atanasyan committed Apr 27, 2019
1 parent b907c44 commit b82144b
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions llvm/cmake/modules/HandleLLVMOptions.cmake
Expand Up @@ -248,6 +248,11 @@ if( LLVM_ENABLE_PIC )
else()
add_flag_or_print_warning("-fPIC" FPIC)
endif()
# GCC for MIPS can miscompile LLVM due to PR37701.
if(CMAKE_COMPILER_IS_GNUCXX AND LLVM_NATIVE_ARCH STREQUAL "Mips" AND
NOT Uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")
add_flag_or_print_warning("-fno-shrink-wrap" FNO_SHRINK_WRAP)
endif()
endif()

if(NOT WIN32 AND NOT CYGWIN AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "AIX" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
Expand Down

0 comments on commit b82144b

Please sign in to comment.