Skip to content

Avoid generating C trigraphs

main = print "??)"

If we compile the above with an unregisterised ghc then some gcc versions report:

/tmp/ghc6084_0/ghc6084_0.hc:99:30:
     warning: trigraph ??) ignored, use -trigraphs to enable

This should make us nervous.

According to the GCC manual if we were ever to use -std=c89 or any of the official C standard compliance modes (ie non-GNU) then we would get standard C (cpp) trigraph behavior.

We should therefore add a codeGen/should_run test to make sure that the above program does always print "??)" and never "]". This test only needs to be run in unregisterised mode.

It's not an immediate priority but it may trip someone up in future when porting or if we make unregisterised C code more standards compliant and start using one of the official -std= modes. It is unlikely to hit us but if it ever did it'd be a real pain to debug.

Edit: replaced -fvia-c by unregisterised (see 392b7e2a).

Edited by Thomas Miedema
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information