hsc2hs forces wordsize (i.e. -m32 or -m64) to be the choice of GHC instead of allowing a different (or no/default choice)
I am not sure whether to call this a bug as it does not cause a failure of GHC but a failure of UHC which also uses hsc2hs.
The problem occurs when UHC builds for a different wordsize than GHC, in particular UHC 64 bits, GHC 32 bits. The wrapper then forces -m32 when running hsc2hs via the environment variable HSC2HS_EXTRA. This cannot be turned off. A (temporary) solution is to uncomment the following lines in the wrapper script /usr/bin/hsc2hs:
# -c*) HSC2HS_EXTRA=;; # --cc=*) HSC2HS_EXTRA=;;
This turns off the extra flags when a C compiler is explicitly specified, amongst which the -m32, and just lets the user define (or not define) the required flags when another compiler is explicitly used.