Some polishing of the demand analyser.
authorJoachim Breitner <mail@joachim-breitner.de>
Thu, 23 Jan 2014 15:13:30 +0000 (15:13 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Thu, 23 Jan 2014 18:16:45 +0000 (18:16 +0000)
commit8d34ae393eb49121e51bf1f01d575928aece5cfe
tree4e93a3570fa5e66c59d63105a6f2975222461381
parent26acb4981d02eb59c72d059cb196c04a7ac945af
Some polishing of the demand analyser.

I did some refactoring of the demand analyser, because I was smelling
some minor code smell. Most of my changes I had to undo, though,
adding notes and testcases on why the existing code was correct after
all.

Especially the semantics of the DmdResult is confusing, as it differs in
a DmdType and a StrictSig.

I got to imrpove the readability of the code for lubDmdType, though.

Also, dmdAnalRhs was a bit fishy in how it removed the demand on
further arguments of the body, but used the DmdResult. This would be
wrong if a body would return a demand type of "<L>m" (which currently
does not happen).  This is now treated better in removeDmdTyArgs.
compiler/basicTypes/Demand.lhs
compiler/stranal/DmdAnal.lhs