commit:     deda94ea9dfc8e43ece0a6bd7190ba67147ec08e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 10 20:48:02 2018 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Mar 10 20:48:34 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=deda94ea

sys-devel/llvm: Apply -mno-bmi to work-around gcc-7 bug

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    | 16 +++++++---------
 sys-devel/llvm/llvm-6.0.9999.ebuild |  7 +++++++
 sys-devel/llvm/llvm-9999.ebuild     |  7 +++++++
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/sys-devel/llvm/llvm-6.0.0.ebuild b/sys-devel/llvm/llvm-6.0.0.ebuild
index f38524606bb..cf9585069ad 100644
--- a/sys-devel/llvm/llvm-6.0.0.ebuild
+++ b/sys-devel/llvm/llvm-6.0.0.ebuild
@@ -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

diff --git a/sys-devel/llvm/llvm-6.0.9999.ebuild 
b/sys-devel/llvm/llvm-6.0.9999.ebuild
index 38353f69eef..631422bd1ad 100644
--- a/sys-devel/llvm/llvm-6.0.9999.ebuild
+++ b/sys-devel/llvm/llvm-6.0.9999.ebuild
@@ -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

diff --git a/sys-devel/llvm/llvm-9999.ebuild b/sys-devel/llvm/llvm-9999.ebuild
index 603571a0bd6..1c439e6fd6a 100644
--- a/sys-devel/llvm/llvm-9999.ebuild
+++ b/sys-devel/llvm/llvm-9999.ebuild
@@ -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

Reply via email to