Commit Graph

2602 Commits

Author SHA1 Message Date
Neil Brown
d29b5b67cf Got the tests compiling again after the changes to the AST for extended rendezvous 2009-04-19 17:34:36 +00:00
Neil Brown
d3f4bd587e Fixed the type-inference to work again with input from timers 2009-04-19 17:35:35 +00:00
Neil Brown
13ce688271 Fixed the parser again for extended rendezvous 2009-04-19 17:29:43 +00:00
Neil Brown
cb4250b1b2 Implemented the SETAFF intrinsic 2009-04-19 17:29:20 +00:00
Neil Brown
b0ea943c72 Fixed the creation of the header define when there are characters such as dashes in the file name 2009-04-19 17:01:35 +00:00
Neil Brown
a48be18109 Fixed the parser on normal ALT guards, after the extended rendezvous change broke it 2009-04-19 17:01:11 +00:00
Neil Brown
838de8a366 Corrected various test failures in the C backend 2009-04-19 15:01:00 +00:00
Neil Brown
46f2fcd669 Allowed VAL and INITIAL abbreviations to define multiple names on one line
button.occ in the KRoC sources does this, so I'm guessing it should be legal.
2009-04-19 16:28:14 +00:00
Neil Brown
3a5565471f Added support for extended rendezvous throughout the compiler 2009-04-19 16:26:37 +00:00
Neil Brown
41cf599ebe Fixed non-top-level records in the C backend 2009-04-19 13:22:24 +00:00
Neil Brown
40e0399e4c A whole lot of changes, described in #101 that help with records and separate compilation
The scheme may be strange, but a lot of KRoC compiles with it (and I think the cgtests will compile again now too)
2009-04-18 21:35:26 +00:00
Neil Brown
56e9609148 Fixed CHAN TYPE stuff not working properly in ShowCode 2009-04-18 21:34:14 +00:00
Neil Brown
71fe50a0cc Made it so that if a RECORD is top-level, its copy PROC is too 2009-04-18 21:33:14 +00:00
Neil Brown
ac7f0dedf8 Stopped lib being stripped from filenames, which helps solve the old occam code that #USEs things that are now modules 2009-04-18 21:32:45 +00:00
Neil Brown
7b41f44788 Fixed a problem with the usage checking when one half had BK and the other half had none 2009-04-18 21:26:57 +00:00
Neil Brown
b3fdb6e2df Fixed a typo on the newly added testcase 2009-04-18 21:26:15 +00:00
Neil Brown
a05facb7ad Cleared up a couple of remaining uses of SYB 2009-04-18 21:25:48 +00:00
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