Commit Graph

506 Commits

Author SHA1 Message Date
Adam Sampson
7bdbb3b729 Make csBackend a proper type, and make the options lowercase.
This is to match the handling of --mode.
2007-08-08 19:56:28 +00:00
Adam Sampson
6047836456 Add a first shot at the assembly analyser, and make GenerateC use it.
This does about the minimum necessary for assembly analysis to work. It assumes
that any function it hasn't been able to analyse itself needs 512 bytes (most
need far less); it doesn't do any flow analysis; it doesn't do a lot of sanity
checking. However, it produces sensible numbers, and works with the demos I've
tried so far.

I was originally going to make this a separate tool, but there are a number of
bits of the code can be nicely reused, so it's a separate "operating mode" in
the existing program (as is parse-only mode now).
2007-08-08 19:39:47 +00:00
Adam Sampson
d589cf0e46 Parse doesn't need readHex any more 2007-08-07 18:44:41 +00:00
Neil Brown
0eadc2302c Added mostneg and mostpos for my custom bool type, to get cgtest05 to compile 2007-08-06 22:42:50 +00:00
Neil Brown
00a617150e Improved time handling by using helper function 2007-08-06 22:36:23 +00:00
Adam Sampson
e0351ca367 Unbreak the Makefile 2007-08-07 12:56:50 +00:00
Neil Brown
1f9480eb89 Added support for checking that arrays are only used in parallel with constant subscripts
Note that this feature makes two assumptions:
- Constant folding has already been performed on the tree
- Array subscript literals will all be simply of type A.IntLiteral (with type A.Int), without any retyping, any expressions, etc
2007-08-07 12:18:29 +00:00
Neil Brown
26e2ff85aa Added more usage checking tests 2007-08-07 12:07:16 +00:00
Neil Brown
59e173a885 Made the literals in UsageCheckTests more distinct from the variables 2007-08-07 12:04:08 +00:00
Neil Brown
9c722ba27c Some tests for getting the parallel usage checker working on arrays and replicated pars properly 2007-07-31 09:43:59 +00:00
Neil Brown
2e39bd463d Deal with specifications in parallel usage checker 2007-07-30 22:39:58 +00:00
Neil Brown
bed325beea Parallel Usage Checker and Test Rearrangement
This patch is a bit large, being as it encompasses two major changes:

1. The addition of the first version of a parallel usage checker.  The usage checker uses the generics library (like
   the other passes) to work out if the parallel usage rules are broken.  It mainly consists of:
     a) a function used to determine which variables are written to/read from in given bits of code, and 
     b) a function that applies a) across the members of any par construct in the file, and checks that
        the expected usage rules hold
   The parallel usage checker is in an early stage, but I think the design is sensible - at least for doing the variable
   and array usage.  The channel usage checker will require some slightly different functionality, and
   I am not considering the abbreviation checker yet.
2. As a consquence of adding a second test file (UsageCheckTest) alongside the first (RainParseTest), I have 
   created a TestMain class that is intended to run all tests for all parts of Tock.  I have also extracted some
   useful helper functions (for creating the expected results of tests) into a file named TestUtil.  I've also
   modified the Makefil accordingly.
   
There are a few other minor changes to RainParse/RainParseTest that are also included in the patch as separating them
would have been tricky.
2007-07-30 22:04:30 +00:00
Adam Sampson
600467bbdd Clean up the Makefile a bit 2007-08-06 23:27:54 +00:00
Adam Sampson
2cf3579446 Fix an unused-bind warning -- rhsSizes isn't used when retyping 2007-08-06 23:24:12 +00:00
Neil Brown
0a0110d122 Added warning about unused binds to the compiler options
I have added my favourite compiler option "-fwarn-unused-binds" to the Makefile.  I've then changed GenerateCPPCSP to have one explicit export, and the
combination of the two would spot any future mistakes like not including the genAlt function in then GenOps structure (see previous patch).  This 
new warning option already spots one problem with GenerateC, and I have a feeling it will also be useful in future.
2007-08-06 20:33:48 +00:00
Neil Brown
5cfa79809b Added the cppgenAlt function to the GenOps (was missed out previously by accident) 2007-08-06 20:33:10 +00:00
Neil Brown
11928a327f Put genVariable' back in the C++CSP backend
It was my own fault of - I changed the genVariable' function in GenerateCPPCSP but forgot to move it out of the "taken verbatim from GenerateC" function,
so Adam removed it during the tidy-up.  I've reinstated it from the old version - I need the ".access()" part for accessing individual array elements.
2007-08-06 20:27:12 +00:00
Neil Brown
498e00c584 Fixed a bug that stopped arrays with a single dimension (that was also unknown) from having their sizes calculated in tockArrayView. cgtest09 now all passes 2007-07-31 22:04:31 +00:00
Neil Brown
7d7f66c626 Fixed a bug in the array indexing that was causing heap corruption 2007-07-31 21:58:34 +00:00
Adam Sampson
432d406f26 Fix an oddity Neil flagged -- yes, there is a nicer syntax for updating structures 2007-08-01 23:08:21 +00:00
Adam Sampson
687f6a10f6 Make it possible to inherit operations from GenerateC in other backends.
... and update GenerateCPPCSP to do so. This works by having a structure of
operations (GenOps) through which all the recursive calls go, and having
GenerateCPPCSP replace only the operations that it wants to override.
2007-08-01 22:42:00 +00:00
Neil Brown
a72224728a Updated documentation regarding arrays 2007-07-31 21:27:51 +00:00
Neil Brown
231b3042ac Increased the stack size for processes, to be on the safe side 2007-07-31 21:24:10 +00:00
Neil Brown
a52d115060 Changed arrays to use vector/tockArrayView
Previously the arrays used the Blitz++ library, but this was not totally satisfactory.  I have therefore resorted (after looking at many different
libraries) to using std::vector (which could perhaps be boost::array instead) coupled with a roll-my-own "array view" class (tockArrayView) that
easily allows all the functionality that we need from arrays (slicing, indexing, copying, unknown dimensions,retyping,reshaping).  I have also
had to introduce a nasty little wrapper class tockBool, because vector<bool> is a specialisation that totally breaks things.  If I do move to
boost::array, I will be able to remove tockBool.
2007-07-31 21:19:52 +00:00
Neil Brown
f997b823dc Rain: Parser and Parser-Test framework
Initial commit of the beginnings of a Rain parser (still using the original occam AST) and its test framework, using HUnit
2007-07-27 15:11:52 +00:00
Neil Brown
fa9c108e50 Added backend-selecting command-line options 2007-07-26 21:18:27 +00:00
Neil Brown
ba60da71d6 Protocol test case expanded
Added larger protocols to stress test the C++CSP backend with variant protocols that have many options, and sequential protocols that have many items
2007-07-26 21:17:27 +00:00
Neil Brown
935d69d544 C++CSP Backend Added
C++CSP backend has been added.  It consists of a support header file and one new Haskell module: GenerateCPPCSP

The module is largely based on GenerateC, changed as needed.  
There is a large section at the bottom of the file with verbatim copy-and-paste from GenerateC,
due to wanting the same functionality, but for calls to use my C++CSP generation not the C generation -- 
hence I cannot simply import those functions.

The backend can generate code for cgtests 0 through 16 (incl) that will compile as valid C++.  The majority of the
tests pass when run (some do segfault, admittedly).  However some arrays still need more testing/work, particularly:
- timers
- array slices
- retyping

The tock_support_cppcsp.h header makes use of tock_support.h, but I had to add a few #ifnders to the latter
file so that I can use it with C++CSP and block out some of the CIF stuff.
2007-07-26 21:11:01 +00:00
Neil Brown
33e3123148 Minor Haddock-related fixes
Fixes a few minor things in the code that were confusing the Haddock parser during "make haddock"
2007-07-25 14:00:48 +00:00
Adam Sampson
c33dff1398 Add Makefile rule to get cgtests 2007-07-16 21:54:46 +00:00
Adam Sampson
50731d0b75 Give tock its own repo -- i.e. remove everything else and move tock up 2007-07-16 21:48:55 +00:00
Adam Sampson
bf1a0392d5 Reinstate inline support, and tweak GCC options 2007-07-06 17:05:28 +00:00
Adam Sampson
a34213b07b Add another to-do 2007-05-24 16:26:08 +00:00
Adam Sampson
0a4e28a585 Add a "Hello, world" demo 2007-05-16 23:35:16 +00:00
Adam Sampson
a75ac6a455 Wholesale rename: ParseState is now CompState 2007-05-16 23:31:44 +00:00
Adam Sampson
e4125e768b Fix literal typechecking for user types 2007-05-16 22:09:45 +00:00
Adam Sampson
5c0a152320 Make Show Type produce occam-looking types, for nicer error messages 2007-05-16 21:15:05 +00:00
Adam Sampson
b6537890e0 Helper function for "sequence_ $ intersperse genComma" 2007-05-16 19:39:04 +00:00
Adam Sampson
d5766c5fe5 Implement arrays inside records.
... which required a bunch of stuff:

- Record handling in the literal evaluator (to solve a nasty problem with
  record literals documented in the code).

- Splitting abbrevModeOfVariable into two functions which do the two
  (different) things it was previously used for.

- Clean up how arrays are handled in GenerateC.

- Fix the pullup rules for record literals containing arrays.
2007-05-16 19:34:10 +00:00
Adam Sampson
b2fb4ee22f Fix a record literal parsing bug (where array type folding confused it) 2007-05-11 02:03:26 +00:00
Adam Sampson
0337cf842f Constant-fold table elements 2007-05-11 01:58:34 +00:00
Adam Sampson
95cc912a2d Remove debugging 2007-05-11 01:58:24 +00:00
Adam Sampson
a8f0fc2caa Implement record literals 2007-05-05 00:26:26 +00:00
Adam Sampson
95d366ff40 Tidy up literal typing 2007-05-04 01:14:01 +00:00
Adam Sampson
afdd2c88e7 Fix parsing of field names 2007-05-03 23:15:24 +00:00
Adam Sampson
6a30c57f52 Resolve named types when checking conversions 2007-05-03 23:13:23 +00:00
Adam Sampson
4551d97b28 Make unsubscriptType produce the right types for slices 2007-05-03 20:21:19 +00:00
Adam Sampson
ed847a1ea9 Do array assignment check at runtime, and produce better metadata 2007-05-03 18:07:22 +00:00
Adam Sampson
a17ee03393 Rework how array contexts are handled in actuals 2007-05-03 17:44:26 +00:00
Adam Sampson
c6e062cde0 Resolve user types for subscripts and case selectors 2007-05-03 03:53:06 +00:00