diff options
author | Ben Gamari <bgamari.foss@gmail.com> | 2014-08-18 21:44:25 -0500 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2014-08-18 23:26:19 -0500 |
commit | bbd031134a571c1020945b2548e3fc4795b5047a (patch) | |
tree | 854e8b0828580955e7e130bbc5fa1fde115b93b7 /configure.ac | |
parent | d9a20573f473cc7389004470999b8a318aa6b3f2 (diff) | |
download | haskell-bbd031134a571c1020945b2548e3fc4795b5047a.tar.gz |
Bug #9439: Ensure that stage 0 compiler isn't affected
Summary:
Bug #9439 will cause miscompilation of GHC's LLVM backend. Here we
ensure that an affected compiler isn't used to bootstrap.
Test Plan: Attempt to bootstrap GHC with an affected stage 0 compiler.
Reviewers: rwbarton, austin
Reviewed By: austin
Subscribers: simonmar, relrod, ezyang, carter
Differential Revision: https://phabricator.haskell.org/D159
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index a065b31255..1c72cfa3c2 100644 --- a/configure.ac +++ b/configure.ac @@ -189,6 +189,56 @@ AC_SUBST([WithGhc]) dnl ** Without optimization some INLINE trickery fails for GHCi SRC_CC_OPTS="-O" +dnl ** Bug 9439: Some GHC 7.8 releases had broken LLVM code generator. +dnl Unfortunately we don't know whether the user is going to request a +dnl build with the LLVM backend as this is only given in build.mk. +dnl +dnl Instead, we try to do as much work as possible here, checking +dnl whether -fllvm is the stage 0 compiler's default. If so we +dnl fail. If not, we check whether -fllvm is affected explicitly and +dnl if so set a flag. The build system will later check this flag +dnl after the desired build flags are known. +AC_MSG_CHECKING(whether bootstrap compiler is affected by bug 9439) +echo "main = putStrLn \"%function\"" > conftestghc.hs + +# Check whether LLVM backend is default for this platform +${WithGhc} conftestghc.hs 2>&1 >/dev/null +res=`./conftestghc` +if test "x$res" == "x%object" +then + AC_MSG_RESULT(yes) + echo "Buggy bootstrap compiler" + echo "" + echo "The stage 0 compiler $WithGhc is affected by GHC Bug \#9439" + echo "and therefore will miscompile the LLVM backend if -fllvm is" + echo "used." + echo + echo "Please use another bootstrap compiler" + exit 1 +fi + +# -fllvm is not the default, but set a flag so the Makefile can check +# -for it in the build flags later on +${WithGhc} -fforce-recomp -fllvm conftestghc.hs 2>&1 >/dev/null +if test $? == 0 +then + res=`./conftestghc` + if test "x$res" == "x%object" + then + AC_MSG_RESULT(yes) + GHC_LLVM_AFFECTED_BY_9439=1 + elif test "x$res" == "x%function" + then + AC_MSG_RESULT(no) + GHC_LLVM_AFFECTED_BY_9439=0 + else + AC_MSG_WARN(unexpected output $res) + fi +else + AC_MSG_RESULT(failed to compile, assuming no) +fi +AC_SUBST([GHC_LLVM_AFFECTED_BY_9439]) + dnl-------------------------------------------------------------------- dnl * Choose host(/target/build) platform dnl-------------------------------------------------------------------- |