summaryrefslogtreecommitdiff
path: root/compiler/stgSyn
diff options
context:
space:
mode:
authorBartosz Nitka <niteria@gmail.com>2018-03-02 05:33:07 -0800
committerBartosz Nitka <niteria@gmail.com>2018-03-06 05:56:48 -0800
commit5bc195a2caddc5c29cf24e9c731dd8d5050f2c66 (patch)
tree3d0e58f6d1e37052c50938cd2ea9c1888183e7d2 /compiler/stgSyn
parentee597e9ec78ceb1a9a208c16dbdeb0b67b4ba5ec (diff)
downloadhaskell-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.hs7
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