[GHC] #13317: exprIsConApp_maybe should deal better with strings
GHC
ghc-devs at haskell.org
Wed Feb 22 17:48:30 UTC 2017
#13317: exprIsConApp_maybe should deal better with strings
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Consider
{{{
x :: Addr#
x = "foo"#
y = case unpackCString# x of
[] -> ...
(x:xs) -> ...
}}}
`exprIsConApp_maybe` has a special case for literal strings; see `Note
[exprIsConApp_maybe on literal strings]` in `CoreSubst`. But it only
works if `unpackCString#` is applied to a literal, not to a variable bound
to a literal (like `x`).
The fix is easy. Instead of this code
{{{
, [Lit (MachStr str)] <- args
= dealWithStringLiteral fun str co
}}}
we want to use `exprIsLiteral_maybe`, thus
{{{
, Just (MachStr str) <- exprIsLiteral_maybe ... arg
= dealWithStringLiteral fun str co
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13317>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list