diff options
author | Bartosz Nitka <niteria@gmail.com> | 2016-05-12 05:42:21 -0700 |
---|---|---|
committer | Bartosz Nitka <niteria@gmail.com> | 2016-05-12 05:42:36 -0700 |
commit | 925b0aea8edc1761fcc16feba1601bea38422c92 (patch) | |
tree | c2d53491c4fd4b2b3ef8c3b0212bbb195b0fb588 /compiler/stranal | |
parent | da105ca104f8382c33c01050dd04443c9c2d63ea (diff) | |
download | haskell-925b0aea8edc1761fcc16feba1601bea38422c92.tar.gz |
Make absentError not depend on uniques
As explained in the comment it will cause changes in
inlining if we don't suppress them.
Test Plan: ./validate
Reviewers: bgamari, austin, simonpj, goldfire, simonmar
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2203
GHC Trac Issues: #4012
Diffstat (limited to 'compiler/stranal')
-rw-r--r-- | compiler/stranal/WwLib.hs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/stranal/WwLib.hs b/compiler/stranal/WwLib.hs index 4ec36baa5f..d285159a2f 100644 --- a/compiler/stranal/WwLib.hs +++ b/compiler/stranal/WwLib.hs @@ -720,7 +720,14 @@ mk_absent_let dflags arg where arg_ty = idType arg abs_rhs = mkRuntimeErrorApp aBSENT_ERROR_ID arg_ty msg - msg = showSDoc dflags (ppr arg <+> ppr (idType arg)) + msg = showSDoc (gopt_set dflags Opt_SuppressUniques) + (ppr arg <+> ppr (idType arg)) + -- We need to suppress uniques here because otherwise they'd + -- end up in the generated code as strings. This is bad for + -- determinism, because with different uniques the strings + -- will have different lengths and hence different costs for + -- the inliner leading to different inlining. + -- See also Note [Unique Determinism] in Unique mk_seq_case :: Id -> CoreExpr -> CoreExpr mk_seq_case arg body = Case (Var arg) (sanitiseCaseBndr arg) (exprType body) [(DEFAULT, [], body)] |