cpphs bug

Roman Cheplyaka roma at ro-che.info
Fri Feb 21 16:04:17 UTC 2014


Hi Malcolm,

This appears to be a cpphs bug. For the following code

    #define x (1 == 1)
    #if x
    YES
    #else
    NO
    #endif

cpphs 1.18.1 prints NO, while the expected output (and the output GNU
cpp produces) is YES. If parentheses around 1 == 1 are removed, or if x
is inlined manually, then cpphs correctly prints YES.

This affects GHC 7.8 users in a serious way: GHC 7.8 uses cpphs, and the
above code is a simplified version of macros generated by cabal.

For this reason, for instance, type-eq 0.4.1 cannot be build by GHC 7.8
RC1, despite the proper CPP guards.

Roman


More information about the ghc-devs mailing list