Neil Brown
defca6e34d
Started simplifying some of the C backend in light of the new changes, and made a few fixes
...
The first few cgtests (at least) now pass with the new system in the C backend.
2009-03-21 22:59:25 +00:00
Neil Brown
b6b0577ecd
Fixed directed variables (for the C++ backend)
2009-03-21 21:01:25 +00:00
Neil Brown
8e768e2b25
Started fixing up the new variable stuff to work with mobiles
2009-03-21 20:50:06 +00:00
Neil Brown
87fefcb66d
Fiddled with the new variable stuff in the C backend, and now variable subscripts seem to work
2009-03-21 19:30:29 +00:00
Neil Brown
ca207f7291
Quickly implemented the first version of a revamp of the genVariable code in the C backend
...
Surprisingly, the generated code seems to be compiled by GCC without warnings. Array subscripts are currently unimplemented (a star, i.e. equivalent of subscript 0) is used wherever there should be a subscript.
The new mechanism is based on working out the C type of the original variable/abbrev-mode, the C type of the desired variable/abbrev-mode, and works out how many *s or &s to insert to coerce it to the right type.
2009-03-21 18:43:32 +00:00
Neil Brown
936dc29fde
Fixed some of the tests, and added another testcase for array passing, based on one of Carl's examples
2009-03-20 12:59:16 +00:00
Neil Brown
56cd7d73c4
Changed the channel-output code generation so that it knows the desired type being sent
2009-03-20 11:37:52 +00:00
Neil Brown
65550b705e
Added an AllSizesVariable item to the AST so that the backend inserts the right code for mobiles and non-mobiles
2009-03-20 11:31:14 +00:00
Neil Brown
3c4f76ed46
Fixed the memory leaks arising from not clearing mobiles before an input
2009-03-19 18:18:17 +00:00
Neil Brown
7d3e9e8648
Stopped MTRelease being called with a NULL pointer
2009-03-19 16:59:19 +00:00
Neil Brown
65875f523f
Added mobile cloning rather than using dereferencing to copy mobiles
2009-03-19 16:47:31 +00:00
Neil Brown
8e5e73e3a2
Fixed the support in the backends for mobile channel stuff
2009-03-19 15:23:35 +00:00
Neil Brown
a995d29c32
Moved the mobile stuff across to use the CCSP API
2009-03-19 11:33:09 +00:00
Neil Brown
4bc15aae48
Bashed the backend until it works with the new mobility passes (standard occam may be broken though)
2009-02-27 17:12:17 +00:00
Neil Brown
2dd8867c91
Removed C++CSP's mobile stuff so that I only have one unified system to deal with for now
2009-02-27 17:04:11 +00:00
Neil Brown
9614d5f7f9
Fixed the intrinsic PROCs to be generated correctly
2009-02-27 17:13:18 +00:00
Neil Brown
4041284feb
Renamed a slightly confusing backend pass
2009-02-27 17:04:41 +00:00
Neil Brown
cd1b409f96
Removed cppremoveSpec, since it was doing the same as cremoveSpec
2009-02-27 10:49:45 +00:00
Adam Sampson
deedad4268
Add kyb as another possible name for the keyboard channel.
2009-03-21 15:22:58 +00:00
Neil Brown
d0d5cf6779
Fixed the C++ backend where I was trying to be too clever with the sizes
2009-02-11 14:19:34 +00:00
Neil Brown
18f23bf767
Fixed a small problem with the types of arrays of channel-ends in the C++ generation
2009-02-10 22:21:13 +00:00
Neil Brown
14df1e09b7
Corrected some problems caused by moving the direction specifiers up to the whole array (the array wasn't then being pulled up)
2009-02-10 00:28:45 +00:00
Neil Brown
6afbb80e9f
Fixed some of the test modules to work with the new array literals and constructors
2009-02-03 11:19:21 +00:00
Neil Brown
1cde2bd959
Added a few useful error messages in the C backend
2009-02-02 18:26:12 +00:00
Neil Brown
cbeeef486e
Fixed the C backend putting too many braces in array literals, and removed some old comments
2009-02-01 22:27:43 +00:00
Neil Brown
3458a9197a
Adjusted the backends and transformations module to match the new array literal changes
2009-02-01 21:53:17 +00:00
Neil Brown
4f83187549
Fixed up all the tests in light of the new recursive procs
2009-01-29 00:56:32 +00:00
Neil Brown
8a28d765e7
Implemented recursive procs
...
This works fine in the C++ backend, not tested with the C backend yet
2009-01-29 00:43:24 +00:00
Neil Brown
3e8273f4f6
Adjusted the C backend to work with the new step count
2009-01-28 23:51:19 +00:00
Neil Brown
a4f0e85c72
Fixed a bug involving abbreviation of arrays of channels into arrays of channel-ends in the C++ backend
...
The array for the channel-ends was not being allocated storage, so the array (a pointer to some random location) was being written to and causing a seg-fault
2009-01-28 23:16:31 +00:00
Neil Brown
9b1368ffe7
Implemented all but one (RAN) of the intrinsic functions in appendix N by mapping them directly to the C versions
2009-01-27 13:38:00 +00:00
Neil Brown
dbc75ef0b1
Added a pass that helps stop some GCC warnings about literals equivalent to INT_MIN and similar
2009-01-27 13:00:08 +00:00
Neil Brown
0b2708b2ed
Fixed a few small things related to generating intrinsic calls in the C and C++ backends
2009-01-25 20:43:39 +00:00
Neil Brown
0189ba3793
Began implementing the occam intrinsics (some of them, at least) in the C support header
2009-01-23 19:20:26 +00:00
Neil Brown
1410e80fb1
Added support for intrinsic functions with multiple return values
...
Previously, such a function was an IntrinsicFunctionCall inside one expression of an ExpressionList, which the type-checker rejected. I've had to add a new constructor to ExpressionList, and I've quickly hacked together the line in the C backend to make it work -- but it does seem to work.
2009-01-23 18:58:52 +00:00
Neil Brown
91f004a197
Realised that with channel-ends for C++CSP, I want to use AltChanin everywhere, not Chanin
2009-01-23 18:10:51 +00:00
Neil Brown
7457d894f8
Tweaked the C and C++ backends to take the replacement for Int from the TypeSizes module rather than calculate it locally
2009-01-23 15:52:28 +00:00
Neil Brown
1f4796e07f
Fixed all the tests to reflect the new channel-end system, such that they all pass again
...
This is the last patch (for now) of the set implementing the new channel-end system
2009-01-20 17:41:44 +00:00
Neil Brown
492091030d
Fixed the C and C++ backends to work with the new channel-end system
2009-01-20 17:41:25 +00:00
Neil Brown
8bae96f34e
Took care of directed arrays in the passes that generate _sizes arrays
2009-01-20 17:38:18 +00:00
Neil Brown
cc70438c1b
Added a pass to remove unneeded directions, i.e. c! where c is already an output end
2009-01-20 17:36:40 +00:00
Neil Brown
c6959ac854
Stopped removeDirections operating on the C++ backend, where we actually want to keep the directions
2009-01-20 17:36:02 +00:00
Neil Brown
0b75720e2e
Fixed the TLP mechanisms to work with the new channel-end system
2009-01-20 17:35:31 +00:00
Neil Brown
d3fc6a1a90
Made the size of INT vary between 16-,32- and 64-bit platforms
...
Fixes #37 . The change itself was very easy, but the main problem was to then go and change everything in GenerateCTest that had been written using A.Int as a test type.
2009-01-18 20:10:19 +00:00
Neil Brown
24f646f5b8
Changed if statements so that they generate a simpler if when no specs are involved
...
Fixes #16 . If there are no Spec or ProcThen items in an if, a much simpler if (without gotos or similar) is generated.
2009-01-18 19:33:01 +00:00
Neil Brown
536d0b19a6
Fixed all the failing C++CSP tests for input and output so that they now pass
2009-01-17 22:20:52 +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
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
9be287f157
Fixed the C++CSP backend's use of channels (this fixes occam but probably breaks Rain, but I can come back to it later)
2008-11-13 21:00:56 +00:00
Neil Brown
0d486f108f
Added a value to indicate what type a warning is (to support future configurability) and streamlined the warning functions
2008-11-13 15:36:22 +00:00