GHC should compile cleanly with clang
I'm running into several difficulties (which I'll catalog shortly) building GHC HEAD with Clang 3.2. These mostly seem to be difficulties relating to the preprocessor and the fact clang does not really respect -traditional-cpp
mode, and that it is stricter than gcc about whitespace and whatnot too. This means code like:
{-# RULES
"thing" ...
#-}
becomes invalid: clang
is strict about the fact that preprocessor definitions must occur on the beginning of a line. There seems to be a bug in the preprocessor directive source code to this effect (that it doesn't handle whitespace before a directive.) It's quite unfortunate, because we do this a lot.
This also causes build failures in the parser due to some crazy CPP hackery we do. I'll follow up with that shortly.
As a workaround, we may have to force CPP
to just continue being cpp
which will Do The Right Thing, while CC
will use clang
instead. Or we'll have to have some script that seds whitespace out or something.
This currently blocks #7602 since I can't test my fix otherwise.
Trac metadata
Trac field | Value |
---|---|
Version | 7.7 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | #7602 |
CC | |
Operating system | |
Architecture |