sys-devel/llvm: Apply -mno-bmi to work-around gcc-7 bug
authorMichał Górny <mgorny@gentoo.org>
Sat, 10 Mar 2018 20:48:02 +0000 (21:48 +0100)
committerMichał Górny <mgorny@gentoo.org>
Sat, 10 Mar 2018 20:48:34 +0000 (21:48 +0100)
Thanks to Alexander Bezrukov for finding the upstream bug and suggesting
a proper workaround.

Closes: https://bugs.gentoo.org/649880

sys-devel/llvm/llvm-6.0.0.ebuild
sys-devel/llvm/llvm-6.0.9999.ebuild
sys-devel/llvm/llvm-9999.ebuild

index f38524606bb8da7e2a4195d2d0458564940b4817..cf9585069ad3cec46d585cb21511106ab5be39ea 100644 (file)
@@ -75,15 +75,6 @@ S=${WORKDIR}/${P/_/}.src
 # least intrusive of all
 CMAKE_BUILD_TYPE=RelWithDebInfo
 
-pkg_pretend() {
-       if tc-is-gcc && [[ $(gcc-major-version) -ge 7 ]]; then
-               eerror "GCC 7 is known to cause mis-compilation that causes the build to hang."
-               eerror "Please use an older version to build LLVM until a good solution is found."
-               eerror "Bug report: https://bugs.gentoo.org/649880"
-               die "GCC-7+ is not supported"
-       fi
-}
-
 src_prepare() {
        # Fix llvm-config for shared linking and sane flags
        # https://bugs.gentoo.org/show_bug.cgi?id=565358
@@ -179,6 +170,13 @@ multilib_src_configure() {
                )
        fi
 
+       # workaround BMI bug in gcc-7 (fixed in 7.4)
+       # https://bugs.gentoo.org/649880
+       if tc-is-gcc && [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]; then
+               local CFLAGS="${CFLAGS} -mno-bmi"
+               local CXXFLAGS="${CXXFLAGS} -mno-bmi"
+       fi
+
        # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
        use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
        cmake-utils_src_configure
index 38353f69eef946afe3ab1e678e1c61e516fe4849..631422bd1ad49099b82f81d8a3e6843f1eb952f5 100644 (file)
@@ -170,6 +170,13 @@ multilib_src_configure() {
                )
        fi
 
+       # workaround BMI bug in gcc-7 (fixed in 7.4)
+       # https://bugs.gentoo.org/649880
+       if tc-is-gcc && [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]; then
+               local CFLAGS="${CFLAGS} -mno-bmi"
+               local CXXFLAGS="${CXXFLAGS} -mno-bmi"
+       fi
+
        # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
        use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
        cmake-utils_src_configure
index 603571a0bd650837f7fe87d2942e3a2340b56135..1c439e6fd6a5e8ac23bb8306381020d4921c13bc 100644 (file)
@@ -172,6 +172,13 @@ multilib_src_configure() {
                )
        fi
 
+       # workaround BMI bug in gcc-7 (fixed in 7.4)
+       # https://bugs.gentoo.org/649880
+       if tc-is-gcc && [[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]; then
+               local CFLAGS="${CFLAGS} -mno-bmi"
+               local CXXFLAGS="${CXXFLAGS} -mno-bmi"
+       fi
+
        # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
        use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
        cmake-utils_src_configure