Make sure -fcmm-sink is passed to Parser properly
authorAustin Seipp <aseipp@pobox.com>
Wed, 4 Sep 2013 16:23:03 +0000 (11:23 -0500)
committerAustin Seipp <aseipp@pobox.com>
Wed, 4 Sep 2013 16:57:51 +0000 (11:57 -0500)
commit9e133b9dccec0553c6ec302d6ca0d3bc5eea06c4
treee23214db5b114639689db8a36f61b8035fc8e128
parentba576e55f88043cda639ac2d848e1162d43ffdbe
Make sure -fcmm-sink is passed to Parser properly

Parser.hs needs to be compiled with -fcmm-sink on x86 platforms, so the
register allocator doesn't run out of stack slots. Previously, we had to
do some CPP hacks in order to emit an #ifdef into the file - this is
because we preprocess it once up front, and run the preprocessor again
when we compile it.

There's two cases: the boostrap compiler is > 7.8, and the stage1 parser
needs the flag, or the stage1 compiler is compiling the stage2
Parser.hs, and needs the flag..

The previous approach was super fragile with Clang. The more principled
fix is to instead do this through the build system.

This fixes #8182.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
compiler/ghc.mk
compiler/parser/Parser.y.pp
configure.ac
mk/config.mk.in