Neil Brown
48018a0acf
Fixed up some of the backend passes tests (and corrected the pass itself)
2009-04-18 19:48:08 +00:00
Neil Brown
823aa92edc
Corrected some failures in OccamTypesTest
2009-04-18 19:22:13 +00:00
Neil Brown
31322aa5f2
Fixed some of the test failures in PassTest
2009-04-18 19:11:57 +00:00
Neil Brown
d2705eaf0c
Fixed 12 failures in ArrayUsageCheckTest by defining the occam operators
2009-04-18 18:13:40 +00:00
Neil Brown
aa7d6b9b44
Added a function for testing that defines all the occam built-in operators, which helped fix all the failures in OccamPasses
2009-04-18 18:09:20 +00:00
Neil Brown
46b1b29e12
Moved some of the operators stuff out into its own module, and corrected ShowCode to display operators nicely
2009-04-18 21:03:12 +00:00
Neil Brown
79c31ea201
Added a new test based on a failure in sdlraster
2009-04-18 20:42:03 +00:00
Neil Brown
902570f6cd
Fixed inferTypes so that it infers mobile allocations when it should
2009-04-18 20:08:50 +00:00
Neil Brown
f4ed82d8f4
Added back a line to Types that I recently removed, but which turns out to be needed
2009-04-18 20:08:09 +00:00
Neil Brown
307b0f906f
Added some missing bits to ShowCode
2009-04-18 20:07:58 +00:00
Neil Brown
57ffc7bfa4
Split out a chunk of CompState into a CompOpts type for things that can be set on the command-line
2009-04-17 21:10:14 +00:00
Neil Brown
af3be945a4
Moved the dummy occamutl files to match my changes in occbuild
2009-04-17 21:04:49 +00:00
Neil Brown
7dbff25b29
Moved csGlobalSizes to be a StateT on the appropriate backend pass
2009-04-17 19:29:50 +00:00
Neil Brown
4ecc8077ce
Realised that my optimisation for the usage checking had the condition the wrong way round
...
This explains why all the usage tests began to fail...
2009-04-17 19:27:41 +00:00
Neil Brown
026eb737b6
Moved csTypeContext and csOperators to be StateT items in inferTypes, and moved the associated functions too
...
This is part of my plan to trim down what is in CompState
2009-04-17 19:05:42 +00:00
Neil Brown
4c77c06db5
Moved csLocalNames to be solely within the occam parser, trimming CompState a bit
2009-04-17 19:05:01 +00:00
Neil Brown
4ecf7c9298
Removed csAdditionalArgs in favour of using a StateT on the only pass that used it
2009-04-17 17:40:53 +00:00
Neil Brown
378ef07893
Adjusted all the other modules to reflect the new change to CSM
2009-04-17 17:40:00 +00:00
Neil Brown
c0e2972717
Rejigged CSM to solve some problems with monad transformers
2009-04-17 17:39:23 +00:00
Neil Brown
1df50519a9
Made the tests compile again
2009-04-17 18:50:02 +00:00
Neil Brown
9141a21693
Fixed a problem with rangetest caused by an earlier change
2009-04-17 18:49:46 +00:00
Neil Brown
3b1519e4d3
Fixed problems with passing MOBILE items to operators
2009-04-17 18:40:50 +00:00
Neil Brown
40fc118c31
Fixed an inappropriate use of type equality that was causing problems with operators that return arrays
2009-04-17 18:31:11 +00:00
Neil Brown
0f277365b5
Removed a big piece of commented out old code that was recorded by accident
2009-04-17 18:28:04 +00:00
Neil Brown
57657aa6cf
Added a missing operator (unary MINUS on BYTE) to the support headers
2009-04-17 18:24:03 +00:00
Neil Brown
032e40f562
Corrected a bug where user-defined types involved with operators were not being resolved properly
2009-04-17 18:19:09 +00:00
Neil Brown
87f69d816f
Fixed the checkConstants pass to not complain about variably-sized dimensions in RESHAPES abbreviations
2009-04-17 18:05:03 +00:00
Neil Brown
759bc06a53
Fixed the type inference for operators
...
The previous system followed Jim Moores' description, which turns out to not be how KRoC does it, and different enough that lots of existing occam code was failing.
The new system makes two changes. First, if there is only one suitable operator, given the types (taking Infer to be a wild-card) then it uses that operator, and can usually settle any remaining Infers. Second, it uses the type context to narrow down the operators to only those that have a matching return type. These changes seem enough to compile a lot of the trickier types.
2009-04-17 18:01:17 +00:00
Neil Brown
4add133d5b
Made the size of INT in occam be based on the size of void* in C
...
I also stopped there being separate sizes for C and C++ since that wasn't supported properly in the compiler anyway.
Fixes #37
2009-04-17 14:22:53 +00:00
Neil Brown
9aa698aac3
Refactored the code that parses pragmas to be nicer
...
Fixes #94
2009-04-17 14:10:14 +00:00
Neil Brown
aaf951fe67
Split up the OccamTypes module into OccamCheckTypes and OccamInferTypes
2009-04-17 14:11:44 +00:00
Neil Brown
f36543d067
Fixed the dereference-inference for mobiles
...
The new system works by inserting code in the processing of all AST elements that directly contain a variable. If the variable needs to be dereferenced, it is. This only happens outside variables, and when a variable is subscripted. I did try putting this processing in doVariable, but then odd double-dereferences began to crop up, so I realised the processing has to happen outside the variable. It seems to pass cgtest85 fine, which it was having lots of trouble with before.
2009-04-17 11:46:00 +00:00
Neil Brown
b0faa0e387
Fixed the sizes for mobile arrays of mobile arrays
...
The pass was folding the two arrays together, then digging too far into the dimensions of the outer array, rather than looking at the dimensions of the inner array.
2009-04-16 18:42:27 +00:00
Neil Brown
f909c6fd03
Fixed external calls so that passing mobile arrays to and from external calls now works
2009-04-16 18:29:14 +00:00
Neil Brown
437c6bd3ef
Fixed genBytesIn for mobile arrays
2009-04-16 17:39:24 +00:00
Neil Brown
cdab6af65a
Fixed the allocation of mobile arrays of mobile things so that the pointers in the new array are set to 0
2009-04-16 17:19:40 +00:00
Neil Brown
19cd8085d2
Fixed the abbreviation modes of claimed channels a bit
...
This doesn't solve the problem (see #95 ), but it at least properly confines the problem to shared channel bundles, rather than affecting shared normal channels too.
2009-04-16 17:18:39 +00:00
Neil Brown
ea2d00355c
Changed findAllProcess to be much more efficient
...
Previously, it was finding the processes in the flow-graph, then using the routes to find the process in question, then calling the examination function on that process. For large flow trees, the cost of traversing all the routes (to all A.Process!) was too high.
Now it find the processes in the AST (so that it only traverses the AST once) then zips any found processes with the flow-graph (using the route IDs) with Map.intersectionWith, which is much faster.
Fixes #90
2009-04-16 17:03:27 +00:00
Neil Brown
e5001b1c6c
Added progress messages with a little detail about the usage checking, which helps to see which part is going slow
2009-04-16 17:02:23 +00:00
Neil Brown
3041cda59c
Added a new listifyDepthRoute function that's like listifyDepth, but stores the route too
2009-04-16 17:01:43 +00:00
Neil Brown
5a5b91e387
Fixed the passing of mobile arrays to old-style external calls
2009-04-16 14:19:25 +00:00
Neil Brown
decd2d16df
Fixed type inference for multidimensional array literals
...
Fixes #93
2009-04-16 12:27:37 +00:00
Neil Brown
a8b1697df6
Fixed the types for MOBILE array allocations that are inferred from something with unknown dimensions
2009-04-16 10:45:02 +00:00
Neil Brown
720388c764
Added a pass for MOBILE params to FORKed processes
2009-04-16 10:44:46 +00:00
Neil Brown
ee787b911c
Rejigged the calculation of stack sizes to do partial subsitution for sizes files when they are generated
2009-04-16 10:25:43 +00:00
Neil Brown
c8136b7ef4
Fixed some problems with mobile stuff in the C backend
2009-04-16 10:25:16 +00:00
Neil Brown
ff9cabd80b
Changed csParProcs to be a map that indicates whether the process is a wrapper for FORK or PAR
2009-04-16 10:25:02 +00:00
Neil Brown
2af2563773
Changed CLAIMs to be ValAbbrev (this eases dealing with it in the C backend later)
2009-04-16 10:22:49 +00:00
Neil Brown
a12c4cc814
Got most of the C++ backend working again, at least on the early cgtests
2009-04-14 15:33:34 +00:00
Neil Brown
d419c89843
Fixed the type-checking for the allocation of mobile arrays
2009-04-15 19:37:19 +00:00