[GHC] #8143: File name module name mismatch in Parser.hs in HEAD
GHC
ghc-devs at haskell.org
Mon Aug 19 22:56:09 CEST 2013
#8143: File name module name mismatch in Parser.hs in HEAD
-------------------------------------+------------------------------------
Reporter: carter | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.7
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+------------------------------------
Comment (by carter):
Seems to be that the Parser.hs file generated by Parser.y.pp has some
leading white space on its CPP pragmas
{{{
#if __GLASGOW_HASKELL__ >= 707
-- Required on x86 to avoid the register allocator running out of
-- stack slots when compiling this module with -fPIC -dynamic.
{-# OPTIONS_GHC -fcmm-sink #-}
#endif
}}}
If I change it to
{{{
#if __GLASGOW_HASKELL__ >= 707
-- Required on x86 to avoid the register allocator running out of
-- stack slots when compiling this module with -fPIC -dynamic.
{-# OPTIONS_GHC -fcmm-sink #-}
#endif
}}}
the build works
The offending original code seems to be this:
{{{
-- CPP tricks because we want the directives in the output of the
-- first CPP pass.
--
-- Clang note, 6/17/2013 by aseipp: It is *extremely* important (for
-- some reason) that there be a line of whitespace between the two
-- definitions here, and the subsequent use of __IF_GHC_77__ - this
-- seems to be a bug in clang or something, where having the line of
-- whitespace will make the preprocessor correctly format the rendered
-- lines in the 'two step' CPP pass. No, this is not a joke.
#define __IF_GHC_77__ #if __GLASGOW_HASKELL__ >= 707
#define __ENDIF__ #endif
__IF_GHC_77__
-- Required on x86 to avoid the register allocator running out of
-- stack slots when compiling this module with -fPIC -dynamic.
{-# OPTIONS_GHC -fcmm-sink #-}
__ENDIF__
}}}
I'm trying a test build of Current HEAD where my host c compiler is
gcc-4.8, and my ./configure with-gcc=clang where I put the CPP in
directly. (i'm not sure why we need the __IF_GHC_77__ and __ENDIF__)
alternatively, to prevent the leading whitespace,
something like
{{{
#define __IF_GHC_77__ /
#if __GLASGOW_HASKELL__ >= 707
}}}
might make sense?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8143#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list