Document SCC determinism
authorBartosz Nitka <niteria@gmail.com>
Wed, 11 May 2016 14:47:47 +0000 (07:47 -0700)
committerBartosz Nitka <niteria@gmail.com>
Wed, 11 May 2016 14:47:50 +0000 (07:47 -0700)
commit3edbd091341ab0ab60862ba18d3107f34c7fc876
treee5497ddfaf4e827549c4a02c6ae1d3453b83634f
parent0e719885f53e20f2e14a94b32d858b47b516a8fc
Document SCC determinism

I've documented the guarantees that stronglyConnCompFromEdgedVertices
provides and commented on the call sites to explain why they are
OK from determinism standpoint. I've changed the functions to
nonDetUFM versions, so that it's explicit they could introduce
nondeterminism.  I haven't defined container (VarSet, NameSet)
specific versions, so that we have less functions to worry about.

Test Plan: this is mostly just documentation,
it should have no runtime effect

Reviewers: bgamari, simonmar, austin, simonpj

Reviewed By: simonpj

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2194

GHC Trac Issues: #4012
12 files changed:
compiler/basicTypes/NameEnv.hs
compiler/iface/MkIface.hs
compiler/rename/RnBinds.hs
compiler/rename/RnSource.hs
compiler/simplCore/OccurAnal.hs
compiler/typecheck/TcBinds.hs
compiler/typecheck/TcEvidence.hs
compiler/typecheck/TcSMonad.hs
compiler/typecheck/TcTyDecls.hs
compiler/utils/Digraph.hs
compiler/utils/UniqFM.hs
compiler/vectorise/Vectorise/Type/Classify.hs