On amd64/UNREG build there is many failing tests trying
to deal with 'Integer' types.
Looking at 'overflow1' test I've observed invalid C code generated by
CInt a = -1; (a == -1)
yields 'False' with optimisations enabled via the following C code:
StgWord64 a = (StgWord32)0xFFFFffffFFFFffffu; (a == 0xFFFFffffFFFFffffu)
The patch fixes it by shrinking emitted literals to required sizes:
StgWord64 a = (StgWord32)0xFFFFffffu; (a == 0xFFFFffffu)
Thanks to Reid Barton for tracking down and fixing the issue.
Signed-off-by: Sergei Trofimovich <email@example.com>