Commit Graph

2252 Commits

Author SHA1 Message Date
Neil Brown
8174e86366 Made the usage checking on PARs for plain variables ignore the variables declared inside the branches of that PAR 2009-01-17 19:05:31 +00:00
Neil Brown
d9cfa9135d Made sure that timer variables are always considered read-only when passed around
This fixes a usage checking problem in cgtest08 where the variable would be considered written-to in parallel because it was passed twice in parallel (and not marked as a VAL abbrev)
2009-01-17 16:25:08 +00:00
Neil Brown
6f22d8a573 Stopped the pulling up of fully-resolved array expressions where one of the subscripts is a slice
This was causing a problem in the C/C++ backends, where the slice function call was having _sizes appended to it.  So now we pull up anything that results in an array, or is a slice.
2009-01-15 22:44:11 +00:00
Neil Brown
dd57fdccbd Made a small change to sort multiplied expressions into order during flattening in the usage checking
This makes sure that y*x and x*y are both flattened into x*y, but doesn't yet solve the problem of (x*y)*z vs (y*z)*x
2009-01-15 22:18:27 +00:00
Neil Brown
f7e05c2714 Made sure that the usage checking on plain variables checks anything that doesn't have a replicator in it
This means that things like a[0][0] are once again covered by the plain variable check, which means that some more tests now pass.
2009-01-15 21:37:28 +00:00
Neil Brown
9d1dfb7f5f Stopped arrays being pulled up when all the indices have been supplied 2009-01-15 21:36:05 +00:00
Neil Brown
9105a95508 Added the debug printing of the usage checking problems to be solved 2009-01-15 21:03:04 +00:00
Neil Brown
e6d9a88e14 Changed the CSM constraint on the various messages to CSMR 2009-01-15 21:00:27 +00:00
Neil Brown
0a98db5295 Changed pshow on CompState (which caused errors) to plain show, by adding a Show instance to CompState 2009-01-15 20:59:37 +00:00
Neil Brown
e20671e44f Fixed a couple more array usage tests 2009-01-15 19:37:37 +00:00
Neil Brown
de153283a3 Stopped duplicate background knowledge being added in the equation generation, thus fixing some tests 2009-01-15 18:39:08 +00:00
Neil Brown
155714abcb Changed the ArrayUsageCheckTest module to supply background knowledge about the replicators to the equation generation 2009-01-15 18:38:13 +00:00
Neil Brown
46a1cc311f Moved a couple of fields related to Rain type checking out of CompState and into a temporary StateT monad for the appropriate pass 2008-12-02 20:59:26 +00:00
Neil Brown
80c99d3bd7 Fixed another use of Map.lookup in the tests 2008-11-28 11:38:29 +00:00
Neil Brown
b48129d4e5 Fixed some uses of Map.lookup that used the old system of it working with any monad (in GHC 6.10, it's always Maybe) 2008-11-28 11:38:06 +00:00
Neil Brown
ee62c604fc Renamed our permutations function to permutation to avoid a conflict with a new GHC 6.10 function 2008-11-28 11:28:39 +00:00
Neil Brown
09e0e46ec2 Added some comments to my changes to GenericUtils 2008-11-25 18:06:14 +00:00
Neil Brown
77b75e3134 Fixed a couple of outdated comments by checkUnusedVar 2008-11-25 17:43:16 +00:00
Neil Brown
ce03f2ca27 Fixed the nasty hack of checking for _sizes by checking the new NameSource field instead
To avoid problems with removing _sizes variables, we simply don't remove any nonce variables.
2008-11-25 17:42:00 +00:00
Neil Brown
0e7a6c5b98 Added a NameSource field for NameDef that indicates where a name comes from 2008-11-25 17:36:42 +00:00
Neil Brown
7fdef8f75a Added the checkUnusedVar check to the standard pass list 2008-11-25 17:36:23 +00:00
Neil Brown
393bb75eb4 Corrected the accum stuff to rebuild after substitute is called 2008-11-24 10:47:00 +00:00
Neil Brown
5bb528fbc3 Changed from using monoid (which always concatenated) to using prepending, but I'm not sure it's any faster 2008-11-24 10:41:30 +00:00
Neil Brown
4af8845142 Changed checkUnusedVar to use the new forAnyASTStructBottomUpAccum function 2008-11-24 10:30:30 +00:00
Neil Brown
0eab9a216d Got the forAnyASTStructBottomUpAccum function working properly, but I think list concatenation is a bit slow 2008-11-24 10:29:38 +00:00
Neil Brown
140eda94ee Shifted some instances for CheckOptASTM to the more general CheckOptASTM' 2008-11-24 10:26:08 +00:00
Neil Brown
c79a1ca94c Added a missing header include in tock_support.h that the newer GCC complains about 2008-11-23 19:44:37 +00:00
Neil Brown
5167535766 Got a messy version of applyAccum to compile, but now need to wire it up and test it 2008-11-23 12:48:15 +00:00
Neil Brown
0275615f5e Generalised CheckOptFlowM to have the accumulation mechanism, but left it largely unused for now 2008-11-21 21:04:10 +00:00
Neil Brown
373214efb5 Renamed the forAnyAST functions to indicate their top-down nature and refactored doTree/apply slightly 2008-11-21 20:32:04 +00:00
Neil Brown
40318ac152 Changed checkUnusedVar to an incredibly slow version using "fastListify"
The problem is that it runs fastListify on a name's scope for every node it encounters, so something like O(M*N).  This needs fixing, obviously.
2008-11-21 19:23:37 +00:00
Neil Brown
d529d78846 Added a slightly hacky fastListify function built on top of applyDepthM 2008-11-21 18:54:23 +00:00
Neil Brown
ae7557d623 Corrected a bug in varsTouchedAfter that was related to flowAlgorithm and was causing the odd bug in checkUnusedVar 2008-11-20 15:39:28 +00:00
Neil Brown
be6c57ce5b Corrected some of my documentation of flowAlgorithm that has repeatedly confused me ever since I wrote it 2008-11-20 15:39:06 +00:00
Neil Brown
e117422c31 Added a couple more tests for checkUnusedVar which has revealed two bugs
One of these bugs is that array variables are counted as unused when they are used subscripted.  I think that should be solved when we flip back to the listify approach.

The second bug is more interesting, as it is triggered only in a certain arrangement with an IF.  It's either a bug in the flow-graph building or in the varsTouchedAfter code.
2008-11-20 15:06:36 +00:00
Neil Brown
5f9bd6b829 Fixed checkUnusedVar to also remove the unused variable from the compiler state 2008-11-20 14:31:29 +00:00
Neil Brown
f60eee19d5 Added some MonadState instances to allow access to the compiler state in the CheckOptM and similar monads 2008-11-20 14:31:16 +00:00
Neil Brown
432d98eaee Swapped testUnusedVar over to the new occam EDSL, which revealed a flaw in the pass that it was not removing the names from the state 2008-11-20 14:21:36 +00:00
Neil Brown
5f01f12d43 Adjusted testOccamPassWarn to enable all warnings when testing a pass 2008-11-20 14:20:36 +00:00
Neil Brown
558ceec4c2 Wired up the enabling and disabling of warnings 2008-11-20 14:17:11 +00:00
Neil Brown
6cbdc0e13b Finally merged the list of warnings into CompState rather than having its own StateT monad 2008-11-20 13:35:44 +00:00
Neil Brown
a455676fa9 Added all the necessary command-line options for enabling and disabling warnings in the Main module 2008-11-20 13:26:45 +00:00
Neil Brown
f88c671cf7 Added a set of enabled warnings to CompState 2008-11-20 13:17:05 +00:00
Neil Brown
53240825dd Changed checkInitVar to use the new CheckFramework stuff, and forAnyFlow (it still passes all its tests) 2008-11-20 13:02:38 +00:00
Neil Brown
0733eb6c11 Added a CheckOptFlowM monad, and a few functions for working with this monad (scanning each node of the AST in turn) 2008-11-20 13:01:48 +00:00
Neil Brown
3638e7b974 Renamed CheckOptM' (which was always a bad name) to CheckOptASTM 2008-11-19 18:24:04 +00:00
Neil Brown
38374320a3 Moved the remainder of the checkInitVar tests over to the new system 2008-11-19 17:25:02 +00:00
Neil Brown
3b57d43eb6 Moved more of the checkInitVar tests to the new system 2008-11-19 17:08:17 +00:00
Neil Brown
810c798dac Added some copies of the checkInitVar tests that use the new occam EDSL testing instead of the old method 2008-11-19 16:53:13 +00:00
Neil Brown
f4ff507543 Moved wrapProcSeq into the TestUtils module 2008-11-19 16:09:31 +00:00