
#6135: Unboxed Booleans -------------------------------+-------------------------------------------- Reporter: benl | Owner: Type: feature request | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.4.1 Resolution: | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase: | Blockedby: Blocking: | Related: #605 -------------------------------+-------------------------------------------- Comment(by simonmar): Replying to [comment:69 simonpj]:
One thing I'm puzzled about is this. If `>#` yields an `Int#`, how does
that `Int#` get into a register? If we branch directly on the result of the comparison, then the intermediate `Int#` is never manifested, the code generator just generates a conditional branch instruction. The optimisations in `CmmSink` try to ensure that the comparison is pushed into the `CmmCondBranch` so the code generator can spot it. If the `Int#` value is really used (as in the example with logical ops on the wiki page), then on x86 there are instructions to generate it (e.g. `sete`, `setge`, etc.). -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/6135#comment:75 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler