From d8126d3784c149f1738865cc239a34fdd29ec442 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 2 Apr 2015 13:16:23 -0400 Subject: [PATCH 1/2] liblzma: Disable XL compiler optimizations Somehow the XL compiler optimizations create incorrect behavior in liblzma and lead to crashes or truncated output during compression. --- Utilities/cmliblzma/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Utilities/cmliblzma/CMakeLists.txt b/Utilities/cmliblzma/CMakeLists.txt index d991438d6..991c699e6 100644 --- a/Utilities/cmliblzma/CMakeLists.txt +++ b/Utilities/cmliblzma/CMakeLists.txt @@ -211,4 +211,10 @@ ENDIF() ADD_LIBRARY(cmliblzma ${LZMA_SRCS}) +IF(CMAKE_C_COMPILER_ID STREQUAL "XL") + # Disable the XL compiler optimizer because it causes crashes + # and other bad behavior in liblzma code. + SET_PROPERTY(TARGET cmliblzma PROPERTY COMPILE_FLAGS "-qnooptimize") +ENDIF() + INSTALL(FILES COPYING DESTINATION ${CMAKE_DOC_DIR}/cmliblzma) From 0af4b40b6efee388251a9ee5ee22e9cfa90af7fe Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 8 Apr 2015 13:52:02 -0400 Subject: [PATCH 2/2] liblzma: Disable GNU 3.3 compiler optimizations The GNU 3.3 optimizer causes bad behavior in liblzma, so disable it. --- Utilities/cmliblzma/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Utilities/cmliblzma/CMakeLists.txt b/Utilities/cmliblzma/CMakeLists.txt index 991c699e6..89205366f 100644 --- a/Utilities/cmliblzma/CMakeLists.txt +++ b/Utilities/cmliblzma/CMakeLists.txt @@ -215,6 +215,10 @@ IF(CMAKE_C_COMPILER_ID STREQUAL "XL") # Disable the XL compiler optimizer because it causes crashes # and other bad behavior in liblzma code. SET_PROPERTY(TARGET cmliblzma PROPERTY COMPILE_FLAGS "-qnooptimize") +ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND + CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4) + # Disable the old GNU compiler optimizer. + SET_PROPERTY(TARGET cmliblzma PROPERTY COMPILE_FLAGS "-O0") ENDIF() INSTALL(FILES COPYING DESTINATION ${CMAKE_DOC_DIR}/cmliblzma)