diff options
author | Bartosz Nitka <niteria@gmail.com> | 2018-03-02 05:33:07 -0800 |
---|---|---|
committer | Bartosz Nitka <niteria@gmail.com> | 2018-03-06 05:56:48 -0800 |
commit | 5bc195a2caddc5c29cf24e9c731dd8d5050f2c66 (patch) | |
tree | 3d0e58f6d1e37052c50938cd2ea9c1888183e7d2 /compiler/stgSyn | |
parent | ee597e9ec78ceb1a9a208c16dbdeb0b67b4ba5ec (diff) | |
download | haskell-5bc195a2caddc5c29cf24e9c731dd8d5050f2c66.tar.gz |
Allow top level ticked string literals
This reverts f5b275a239d2554c4da0b7621211642bf3b10650
and changes the places that looked for `Lit (MachStr _))`
to use `exprIsMbTickedLitString_maybe` to unwrap ticks as
necessary.
Also updated relevant comments.
Test Plan:
I added 3 new tests that previously reproduced.
GHC HEAD now builds with -g
Reviewers: simonpj, simonmar, bgamari, hvr, goldfire
Subscribers: rwbarton, thomie, carter
GHC Trac Issues: #14779
Differential Revision: https://phabricator.haskell.org/D4470
Diffstat (limited to 'compiler/stgSyn')
-rw-r--r-- | compiler/stgSyn/CoreToStg.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/stgSyn/CoreToStg.hs b/compiler/stgSyn/CoreToStg.hs index f85382bc55..cb4e7f65d3 100644 --- a/compiler/stgSyn/CoreToStg.hs +++ b/compiler/stgSyn/CoreToStg.hs @@ -18,7 +18,8 @@ module CoreToStg ( coreToStg ) where import GhcPrelude import CoreSyn -import CoreUtils ( exprType, findDefault, isJoinBind ) +import CoreUtils ( exprType, findDefault, isJoinBind + , exprIsTickedString_maybe ) import CoreArity ( manifestArity ) import StgSyn @@ -273,8 +274,10 @@ coreTopBindToStg -> CoreBind -> (IdEnv HowBound, FreeVarsInfo, CollectedCCs, StgTopBinding) -coreTopBindToStg _ _ env body_fvs ccs (NonRec id (Lit (MachStr str))) +coreTopBindToStg _ _ env body_fvs ccs (NonRec id e) + | Just str <- exprIsTickedString_maybe e -- top-level string literal + -- See Note [CoreSyn top-level string literals] in CoreSyn = let env' = extendVarEnv env id how_bound how_bound = LetBound TopLet 0 |