
#14282: tagToEnum# . dataToTag# not optimized away -------------------------------------+------------------------------------- Reporter: dfeuer | Owner: dfeuer Type: bug | Status: new Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.2.1 Resolution: | Keywords: datacon-tags Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): No, case binders don't get that unfolding... doing so might duplicate work. Reason it's case-bound is that it's a can-fail primop; see `Note [dataToTag#]` in `primops.txt.pp`. It's the `let/app invariant` in action. Rats. I suggest you put a comment with `dataToTagRule` explaining why this is tricky and pointing to this ticket, and then leave it. It's tiresome but I don't think it's important enough to merit further investment. (FWIW ultimately I think the right solution might be to make `dataToTag#` CONLIKE, and arrange to give unfoldings to the case binder of a case on a CONLIKE application. But I can't forsee all the consequences of that.) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14282#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler