Commit graph

971 commits

Author SHA1 Message Date
Gwenal Delaval e7f85d6b25 Configuration for binary release
- custom bytecode compilation
- added suffix (OS, cpu) in binary distrib
2013-01-28 15:55:56 +01:00
Gwenal Delaval 2be4e287b9 Take into account the -nosink option in Sigali
Corrected bug: do not suppress the last state
variable when -nosink is on.
2013-01-28 15:54:27 +01:00
Gwenaël Delaval 5a9b27d6a9 Correct handling of local assume/enforce of contracts 2012-12-11 08:20:04 +01:00
Gwenal Delaval ce2e2bdcd0 Added -nbvars option for performance evaluation 2012-11-26 10:05:20 +01:00
Gwenaël Delaval ef536f412d Added option -nosink (CS optimisation)
The -nosink option suppress the sink state of sigali equations.

This optimizes the controller synthesis, but work only
when the synthesis objective instantaneoulsy depends only
on the current state (and not on current inputs).
2012-11-23 12:23:17 +01:00
Gwenaël Delaval 5bdd891105 Handling of controllables in tomato
Added controllable variables as "inputs" in the
tomato pass.
2012-11-22 18:52:21 +01:00
Gwenaël Delaval 0e60d2e839 Boolean transformation: added inputs/outputs
Non transformation of inputs/outputs during
Boolean pass lead to bugs.
2012-11-22 18:49:12 +01:00
Gwenaël Delaval e42ff23a4b Corrected abstraction for z3z target 2012-11-22 18:37:32 +01:00
Gwenaël Delaval 3e8af67e07 Added Java 1.4 target (experimental)
Experimental : remains some bugs on arrays
2012-11-17 23:29:19 +01:00
Gwenal Delaval 74a760ee0a Handling of controllables in Normalize_mem 2012-11-17 23:01:49 +01:00
Léonard Gérard db89208f22 Translate last before removing automatons. 2012-11-05 10:10:32 +01:00
Guillaume Baudart 355998bab3 Fix printf typing 2012-10-31 15:59:26 +01:00
Léonard Gérard b0e2e41299 Schedule: do only count optimized variables in costs. 2012-10-17 12:02:00 +02:00
Gwenaël Delaval 6dd1c743d6 Records in Java
Added support of records in Java
2012-09-30 01:40:18 +02:00
Gwenal Delaval 6a21e5d701 Iostream for Java
Added support of Iostream.printf (not fprintf)
for Java code gen.
2012-09-28 15:26:01 +02:00
Gwenal Delaval eddeb1f4de Bug correction tentative (itfusion)
Tentative of correction of itfusion bug:

The itfusion pass adds some "anonymous" nodes into the module.

This correction adds the signature of these created nodes.

This only shifts the bug (towards clocking pass).
2012-09-28 13:06:46 +02:00
Gwenal Delaval b176384952 Java code generation: lexicography
Handling of weird lexical elements (e.g., idents with ', infix names...)
2012-09-28 13:04:08 +02:00
Cédric Pasteur 36bfa81b17 Fix for memalloc
Take the simplified versions of types (i.e. 
with constants instantiated) to check the 
equality of types
2012-09-14 16:08:26 +02:00
Cédric Pasteur 96e233b64c Fix for tuples of consts used as args 2012-09-14 15:42:49 +02:00
Gwenal Delaval 9334b73ef1 Naive abstraction for sigali 2012-08-08 18:16:33 +02:00
Gwenal Delaval b199de202b Removed '~>' in clock prints
'~>' (representing links between clock variables)
are printed when -fti option is on.
2012-08-08 18:14:05 +02:00
Gwenal Delaval b60ee4b91d Bug correction in Completion pass
Completion pass: do not propagate defnames to
other equations

(see test test_option_flatten_t4 : flatten t4, compile C target code)
2012-08-06 12:04:39 +02:00
Gwenal Delaval 857dccd0b2 Corrected Boolean pass
e_level_ck correctly translated
Hept_clocking on stateless functions
2012-08-02 17:24:30 +02:00
Gwenal Delaval 41fccc66fb Bugs corrections
- callgraph: add idents used for instantiated nodes
- cgen : added Idents.enter_node
- cmain : removed error when simulated node does not exist (existence
of simulated node was tested for every program, comprising loaded ones)
2012-08-01 17:08:58 +02:00
Gwenal Delaval b858f0e987 Reads and writes of records in main simulation 2012-07-31 16:58:22 +02:00
Gwenal Delaval ccab6f7aad Normalization of record consts
Normalization of records as constant to ease the compilation:

f({ x = e })
->
v = { x = e };
f(v)
2012-07-31 16:58:22 +02:00
Gwenaël Delaval ccc07cc7b9 Unalias missing in obc translation 2012-07-31 15:22:38 +02:00
Gwenaël Delaval 35bea85bf7 Boolean: no transformation on inputs/outputs
Only translate local variables, so as to not
modify node interfaces.
2012-07-26 01:45:38 +02:00
Gwenaël Delaval 72b1bd8de3 Typo in error message 2012-07-26 01:33:32 +02:00
Gwenaël Delaval 90dda27a3a Bug correction in Schedule_interf
Bug due to the fact that a variable can be "defined" and "read"
(in scheduling sense) by the same equation, without being a memory:
e.g., a clock defined as the result of a node application, together
with another result on this same clock.

Bug correction: basically removed the "assert false" on killed_vars,
decr_uses; do not count as "use" the self reads.
2012-07-26 01:29:22 +02:00
Gwenal Delaval 5ed07e1e5a Removed systematic qual. of infix op as pervasives
Bug: every infix operator was systematically qualified
as pervasive.
2012-07-24 17:09:51 +02:00
Gwenal Delaval 70cb94d0bd Unroll correction
Order of statement was incorrect
2012-07-23 17:35:20 +02:00
Gwenal Delaval 7e90dccc0a Cleared java simulation output 2012-07-16 11:37:50 +02:00
Gwenaël Delaval a15e17c02d Cleared simulation output 2012-07-16 00:58:40 +02:00
Gwenaël Delaval e103d60c26 Removed eprintf in schedule_interf
eprintf -> Interference.print_debug
2012-07-14 14:31:46 +02:00
Cédric Pasteur 84e502d7a9 Made val optional for functions
external val node f is a little bit too long
2012-07-04 17:26:38 +02:00
Gwenaël Delaval bf03077cd9 Correct output toward hepts 2012-06-29 02:01:49 +02:00
Gwenaël Delaval ef00823cf7 Added Marc as co-author 2012-06-29 01:43:15 +02:00
Gwenaël Delaval c080ad6cf3 Controller call only when controllables
Avoid built of dummy empty controllers
2012-06-29 01:41:13 +02:00
Gwenaël Delaval 58086190eb Headers and license file for GPL
Headers for every source file (excluding examples), mentioning
authors, copyright and license (GPL)

COPYING file with GPLv3 content.
2012-06-27 18:14:29 +02:00
Cédric Pasteur 5e1dad630b Force fby to be scheduled at the end 2012-06-20 17:09:30 +02:00
Cédric Pasteur 7a10ba028a Fixed disjoint clock computation 2012-06-20 17:09:17 +02:00
Cédric Pasteur ffeb81f529 Use idents instead of ivars in scheduling 2012-06-20 16:33:06 +02:00
Cédric Pasteur 8815a2cd03 Better handling of clocks in memalloc
- We can do a better allocation if we take into
account 'when' in extvalues 
(test/good/memalloc_clocks.ept shows the
improvement)
- Fixed a bug with memalloc on records: if we 
translate:
o = { a with .f = u }
to
o = a; o.f = u
then we cannot share u and o.f
2012-06-20 09:17:13 +02:00
Cédric Pasteur ee7d60120b Fixed bug in translation to minils 2012-06-19 15:56:54 +02:00
Cédric Pasteur ed2c08315b Should be affinity, not copy 2012-06-19 09:33:27 +02:00
Gwenal Delaval 502c5e446f Makefile correction (install target)
Makefile correction: install target for simulator
2012-06-13 15:13:53 +02:00
Gwenal Delaval 352bad4735 Correction of Inline pass
- correction of Hept_mapfold : inclusion of mapfold for b_defnames (blocks)
- Inlining : deep replacement of idents
2012-06-13 15:06:05 +02:00
Gwenal Delaval cf22ba3989 Optional block in contracts
Optional let...tel block in contracts
Sink state in sigali
2012-06-07 17:48:31 +02:00
Gwenal Delaval 2bd31db883 Causality and scheduling with contracts
Correction of the causality analysis and scheduling (with interference)
to take contracts into account.
2012-06-07 15:27:07 +02:00
Gwenal Delaval 2956002f85 Correction and simplification of the sigali pass
Added a "Contracts" pass, after inlining, taking care of the
contracts of the nodes called in the body of a node. This pass
"inlines" the code and assume/guarantee parts of these subcontracts.

The "Sigali" pass both generates the sigali ("z3z") code and add the call to
the controller (which is a node generated further by the sigali tool).
Therefore this pass has been included into the mls compiler, and removed
from the targets (a "z3z" dummy target has been kept for backward compatibility
reasons).
2012-06-06 15:59:08 +02:00
Gwenal Delaval 1e46c2a73c Makefile : removed target "all" from target "install"
On some systems, the targets "all" and "install" must be
made with different rights. Then "all" cannot be a dependendy of
"install", especially since ocamlbuild try to read/modify some
files even if there is no compilation to perform.
2012-06-06 15:55:23 +02:00
Gwenal Delaval bb0bc8bfe5 Added local assume/guarantee
Added local assume/guarantee in contracts.

No syntax associated to these local asume/guarantee: internal use only.
2012-05-29 14:14:46 +02:00
Adrien Guatto 8153bc4eb5 Fixed Tomato: did not reconstruct internal clocks of extvalues 2012-03-30 14:47:47 +02:00
Léonard Gérard 61e14546df Interf scheduling tries harder with arrays 2012-03-19 17:45:06 +01:00
Adrien Guatto fc1edf91f0 OOPS forgot compiler_timings 2012-03-07 17:51:06 +01:00
Adrien Guatto 834e16cad5 Fix: replace opt with native in build system 2012-03-07 17:48:30 +01:00
Adrien Guatto e05f3732a0 Timing framework. 2012-03-07 17:48:08 +01:00
Adrien Guatto f09792485e Hept2mls: fixed missing enter_node 2012-03-07 17:48:08 +01:00
Adrien Guatto 9640acb3a4 More efficient ident handling. 2012-03-07 17:48:08 +01:00
Adrien Guatto 6870ea62c9 Inlining: fix issue with nesting of blocks. 2012-03-07 17:48:08 +01:00
Adrien Guatto 3e8e54f42b Perform inlining before causality/init analysis. 2012-03-07 17:48:08 +01:00
Adrien Guatto 44d3a639e5 Internal error for unknown clocks. 2012-03-02 17:12:30 +01:00
Adrien Guatto 3b0ebf2dbf print_ident: use the function from Idents 2012-03-02 17:12:30 +01:00
Adrien Guatto 557d00f501 Inlining: do not forget when, merge or last. 2012-03-02 17:12:30 +01:00
Adrien Guatto ba1b134640 Static evaluation of modulo. 2012-03-02 14:11:19 +01:00
Adrien Guatto 699b3c68e9 Tomato: bug fix, node inputs were not properly considered different. 2012-03-01 14:46:33 +01:00
Léonard Gérard 8a78bc7d7d Add [external] in the signatures. fix callgraph acordingly. 2012-02-21 16:07:29 +01:00
Léonard Gérard c1b8e47ffb Fixed escape of string in java 2012-02-21 14:39:35 +01:00
Adrien Guatto 070d2eab55 Revert "Changed linear typing for merge."
This reverts commit 0abb050a23.
2012-02-14 14:36:47 +01:00
Adrien Guatto 5ac3a7f028 Redisable interference of scalars during scheduling 2012-02-10 11:33:09 +01:00
Adrien Guatto 0abb050a23 Changed linear typing for merge.
The new rule accepts that some branches of a linearly typed merge have linear
type Top, provided that at least one has type "lin". E.g.:

node f(x : int at r) returns (o : int at r)
var ck : bool;
let
  ck = true;
  o = merge ck (x whenot ck) 0;
tel

is now deemed valid.
2012-02-09 16:23:36 +01:00
Cédric Pasteur 6e2e2a9f47 Fixed bug in interference computation
To know the variables read by an equation, we should
only look at the clock of variables. Otherwise, 
there could be a problem for node calls that 
define new clocks.
2012-02-09 11:48:36 +01:00
Cédric Pasteur 7866321089 Fixed bug in interference 2012-02-09 11:06:28 +01:00
Adrien Guatto f43fcb78f6 Only inline integer extvalues when unrolling 2012-02-08 18:31:51 +01:00
Adrien Guatto ec0274cc82 C backend: do not inline consts by default. 2012-02-08 17:49:21 +01:00
Adrien Guatto fa09d86dc1 Unrolling in C backend. 2012-02-08 17:47:28 +01:00
Adrien Guatto 76ae2f4518 Loop unrolling. 2012-02-08 16:16:41 +01:00
Adrien Guatto 3aeb499cc2 Re-enable interference for enums 2012-02-08 11:13:02 +01:00
Cédric Pasteur f66c9045df Special case for merge in the scheduling
For merge equations, the generated code will be 
on a different rate than the activation clock of
the equation.
2012-02-01 11:19:25 +01:00
Adrien Guatto 1cb4b1154b Memory allocation: do not share enums (and thus clocks). 2012-01-30 17:48:47 +01:00
Adrien Guatto 946a1f8228 Inline extvalues: do not inline array literals. 2012-01-30 16:37:42 +01:00
Adrien Guatto 1910e7f868 Static exp evaluation: missing +. and -. 2012-01-26 13:42:03 +01:00
Adrien Guatto 84ca123361 Extvalue inlining: rogue debug message. 2012-01-26 13:23:01 +01:00
Adrien Guatto 964f6ca605 Extvalue inlining: fix point computation 2012-01-26 13:21:17 +01:00
Adrien Guatto a7e3f4a973 Added test for clocking in automata 2012-01-25 18:13:43 +01:00
Adrien Guatto 53de6cd915 Bug fix in extvalue inlining 2012-01-25 16:11:22 +01:00
Adrien Guatto bca8664d2f Tomato: do not forget eq_base_ck when reconstructing 2012-01-25 13:19:09 +01:00
Adrien Guatto 998b3b0b89 Generate C89 2012-01-25 12:42:14 +01:00
Cédric Pasteur 2f993a602c Fixed base clock in code generation
Put the base clock inside the equation where it 
belongs.
2012-01-25 09:34:58 +01:00
Cédric Pasteur db5f55b221 Fixed when of stateful exp with memalloc
As the expression inside the when will be called 
on a faster rhythm, we have to make sure not to
share it with a variable on the slow clock.
We do this by creating a new equation for the 
stateful exp.
2012-01-25 09:33:08 +01:00
Cédric Pasteur 3f80f844c7 Schedule with clocks first
First optimize clocks and then look at life ranges
2012-01-24 15:33:54 +01:00
Cédric Pasteur 06e997e0c8 Fix for -mall
Do not share memories and outputs if they are not
arrays, as it might make the register allocation
by the C compiler less efficient.
2012-01-24 10:29:05 +01:00
Cédric Pasteur b1bd6dbd57 Compare clock repr
Not sure this is necessary but it doesn't hurt to 
check twice.
2012-01-23 16:03:01 +01:00
Cédric Pasteur 2b59ec754a Fix for memories with no uses
Add a fake use to make sure they interfere with
other memories and outputs
2012-01-23 16:02:34 +01:00
Adrien Guatto cad8a0149f Option to perform type inference on all types 2012-01-23 13:36:24 +01:00
Léonard Gérard 0aad3ac466 eclipse stuff 2011-12-15 20:02:38 +01:00
Léonard Gérard c75236b688 miscs 2011-12-12 12:06:46 +01:00
Léonard Gérard da3147151d Better check signature error message 2011-12-12 11:30:18 +01:00
Léonard Gérard f0cbbccc2a unsafe in minils node 2011-12-12 11:27:18 +01:00
Léonard Gérard b86555e013 global env misc 2011-12-12 11:08:47 +01:00
Léonard Gérard 24c394d2cb pretty print clocks with links. 2011-12-12 11:01:46 +01:00
Léonard Gérard ba5f336a6f Fix antidependance calculation 2011-12-12 11:01:22 +01:00
Cédric Pasteur 80fbe6be5f Fixed linear typing of printf 2011-12-12 10:36:24 +01:00
Cédric Pasteur 54cde301f6 C code generation for printf 2011-12-12 10:36:24 +01:00
Cédric Pasteur 2fc0435393 Added simple printf
Typing and clocking done
2011-12-12 10:36:24 +01:00
Adrien Guatto 0f71dbe145 Bitwise or. 2011-12-06 17:46:35 +01:00
Adrien Guatto 8d772e20e2 Bitwise and. 2011-12-06 15:44:21 +01:00
Adrien Guatto 1ec15b9409 Bitwise operators on integers. 2011-12-06 15:44:21 +01:00
Adrien Guatto 8c6926c5bd TOMATO was confused about having several empty patterns in the equations
of a node.

He should be better now.
2011-12-06 15:44:21 +01:00
Léonard Gérard fe1f02402b Test to watch sampling of returned stateful exps. 2011-12-06 15:44:20 +01:00
Cédric Pasteur f76667e042 Second part of the fix 2011-12-06 15:44:20 +01:00
Léonard Gérard 2b9d3828b1 debut de la correction du when.
test :

node f(c :bool) returns (out :int)
let
  out = (0 fby 1) when c
tel


et

node f(x :int) returns (out : int)
let
  out = 0 fby x
tel

node g(c :bool) returns (out :int)
let
  out = f(0) when c
tel
2011-12-06 15:44:20 +01:00
Adrien Guatto 5097c62449 C backend: put memory of the main node in a global variable. 2011-12-05 10:18:50 +01:00
Cédric Pasteur add09fe465 Fixed complexity of control optimization 2011-11-29 13:34:50 +01:00
Léonard Gérard 45fbd18fe8 Fix automaton initialization. 2011-11-28 15:12:27 +01:00
Léonard Gérard d5f72c278c mls2obc bug fix
y = (if then else) when c
ou bien
y = f() when c
ne compilait pas.
2011-11-28 15:12:22 +01:00
Léonard Gérard 5be7a6acc2 java main void return handling 2011-11-25 18:56:15 +01:00
Léonard Gérard 05750352f8 pat_ty ne semble pas fiable. Voir t19.ept 2011-11-25 18:55:12 +01:00
Cédric Pasteur 3369f6dffc Don't forget to optimise control recursively 2011-11-24 16:10:14 +01:00
Adrien Guatto 1b73f3444e Clock before dumping .epci 2011-11-24 11:41:11 +01:00
Léonard Gérard 57f7da94c2 Deal with const ref in Java. 2011-11-21 11:42:26 +01:00
Cédric Pasteur 641b76133d Don't inline all const 2011-11-21 10:55:53 +01:00
Léonard Gérard 646cfab82b Enforce style : no tab, no trailing whitespace. 2011-11-21 03:26:27 +01:00
Léonard Gérard a08da94edc Scheduling bonus for array updates. 2011-11-21 03:26:26 +01:00
Léonard Gérard fdab1ac55c Strict-SSA option to switch array encoding. 2011-11-21 03:26:26 +01:00
Léonard Gérard b49c37f7bf Add ways to declare unsafe functions + unsafe fix 2011-11-21 03:26:26 +01:00
Léonard Gérard 1962cd2df4 Typing bug fix 2011-11-21 03:26:26 +01:00
Léonard Gérard adc47c536a Improve Java printing and main.
genToString is a fully generic to string function
dealing with arrays, primitive arrays, etc.
2011-11-21 03:26:25 +01:00
Léonard Gérard 25ce5edbd0 debugger_script_gen 2011-11-21 03:26:25 +01:00
Léonard Gérard 442f38b196 stronger heptc and clean_heptc
It may be symlinked.
Moreover, when heptc is called with java as first param, it will set the
right target and call javac right after
2011-11-21 03:26:13 +01:00
Léonard Gérard 7b281317f4 fix scalarize 2011-11-20 22:37:00 +01:00
Léonard Gérard 9d8a0be512 Improve scalarize 2011-11-18 12:33:37 +01:00
Léonard Gérard ca711274c0 Remove infusion from the default optima options. 2011-11-18 12:33:37 +01:00
Léonard Gérard 8ebb75f8bf New debugger script with a partial generator. 2011-11-18 12:33:37 +01:00
Léonard Gérard efa6b5cf70 Correct scalarize and java load_conf 2011-11-18 12:32:37 +01:00
Léonard Gérard be28156de9 Add a simplify pass to Obc 2011-11-18 12:32:37 +01:00
Léonard Gérard 9274ef24aa Java support type alias. 2011-11-18 12:32:37 +01:00
Léonard Gérard 35a9a24467 Correct obc_mapfold 2011-11-18 12:32:37 +01:00
Léonard Gérard 2a6dab836a Add alias to obc vd. 2011-11-18 12:32:37 +01:00
Léonard Gérard fa956a00ad Remarques pour Control 2011-11-18 12:32:37 +01:00
Léonard Gérard 5a263b0cbd Fix signature printing. 2011-11-18 12:32:37 +01:00
Léonard Gérard 4e3c58bb40 Allow symbolic static_exp eval. 2011-11-18 12:32:36 +01:00
Léonard Gérard bdd85f5f81 mapfold over var_ident. 2011-11-18 12:32:36 +01:00
Léonard Gérard d5858d6dd2 Optimize static evaluation
It greatly reduce the amount of constraints kept.
Indeed, all the constraints : x = x, x /y = x/y, etc
were kept when x and y were local params.
2011-11-18 12:32:36 +01:00
Cédric Pasteur cf1e79efc8 Type signature of all nodes 2011-11-18 10:03:54 +01:00
Cédric Pasteur 1a28ed96e8 Improvement for normalize memories
Only create necessary copies (for outputs
and recursive registers).
2011-11-16 16:07:36 +01:00
Cédric Pasteur 8644982593 Fixed some bugs in the configure
Check that ocamlc and ocamlfind point to the
same stdlib dir.
2011-11-14 10:52:28 +01:00
Adrien Guatto 1a9dc17618 Fixed clocking annotations.
1. Transmit annotations to extvaluese in Hept2mls.

2. Handle a pre-existing w_ck when clocking extvalues.
2011-11-10 15:36:54 +01:00
Léonard Gérard 0222d11b2d Do not introduce useless variable in [reset every] 2011-11-03 00:46:13 +01:00
Léonard Gérard dfc0077859 permits to use = instead of returns 2011-11-03 00:46:04 +01:00
Léonard Gérard abdf93c8c2 inlining corrected 2011-11-03 00:45:43 +01:00
Léonard Gérard 3e64635f95 optimize the control at the end to maximize profit
Indeed, some examples showed that memory allocation could trigger a profit-full deadcode removal for the control. See Downscaler.down avec -flatten.
2011-11-03 00:43:36 +01:00
Léonard Gérard 17598a3206 Correct inlining, which was aliasing clocks. 2011-11-03 00:41:29 +01:00
Léonard Gérard 76109b553a Add -O option to enable optims. 2011-11-02 17:23:23 +01:00
Léonard Gérard 919eaa72e1 Fix floating point printing. 2011-11-02 16:08:51 +01:00
Léonard Gérard 50487f9296 Fix java main to deal with unit return type. 2011-11-02 16:07:19 +01:00
Léonard Gérard 04263a126b Correct small bug in java initialized arrays. 2011-11-02 16:04:47 +01:00
Léonard Gérard 33021aaa90 Print stateful in heptagon.
Conflicts:

	compiler/heptagon/hept_printer.ml
2011-11-02 13:15:33 +01:00
Cédric Pasteur 6ba0e7b2b3 Don't remove local variables in causality
A dependency between two variables can be caused 
by a local variable
2011-10-26 16:14:02 +02:00
Léonard Gérard ffe2b23a82 new sheduler by default 2011-10-23 17:42:26 +02:00
Cédric Pasteur f4aafa10d6 Added a build system for Heptagon
./configure 
make
make install
2011-10-20 18:06:41 +02:00
Léonard Gérard 81ad14ab7b changed interf_schedule to use clocks correctly 2011-10-20 16:52:50 +02:00
Cédric Pasteur 21433f6416 Only do one copy for two recursive registers 2011-10-20 09:16:51 +02:00
Cédric Pasteur 72cac326a8 Fixed normalization of fby
We should normalize not only outputs but also 
other fbys to generate correct code. The test shows
a program that was compiled incorrectly.
2011-10-19 16:31:40 +02:00
Cédric Pasteur a31715ecde Proper fix for causality
This time it should work in all cases
2011-10-18 09:51:35 +02:00
Cédric Pasteur 85be1252b0 Another try to fix causality of linear ifs 2011-10-17 18:10:38 +02:00
Adrien Guatto 1ec97d187b Adapted minimization to reinit. 2011-10-17 15:43:55 +02:00
Cédric Pasteur 04b8853a1d Added a new reinit operator
It has type:
reinit: t at r * t -> t at r

It can be used to put a constant value in a 
location.
2011-10-17 15:28:04 +02:00
Cédric Pasteur 4f9a91eebd Fixed dependency issue with linear splits 2011-10-17 15:25:52 +02:00
Cédric Pasteur e2d4d33d97 Fixed linear typing with args that are tuples 2011-10-17 11:52:36 +02:00
Cédric Pasteur c2ab607195 Fix for causality when using linear types 2011-10-17 11:47:45 +02:00
Cédric Pasteur 6fefd551b1 Fixed typing of iterators in some cases
If a variable is already used linearly before,
do not reuse it linearly
2011-10-17 11:46:47 +02:00
Cédric Pasteur 0f403e3694 Fix for wrong number of expected args 2011-10-17 10:17:18 +02:00
Léonard Gérard ef4478e37e removed some stupid warnings. 2011-10-14 13:33:34 +02:00
Adrien Guatto ee2f5ca443 Tomato: simplification + update signature via modules.
test/good/linear_init.ept now compiles.
2011-10-10 17:01:08 +02:00
Cédric Pasteur 1aac6f7be4 Fixed bug in unicity check in linear typing
Test case included
2011-10-07 11:59:13 +02:00
Adrien Guatto 3269a04052 Do not inline linear extended values. 2011-10-06 16:18:48 +02:00
Adrien Guatto 30089e7d0f Fixed extvalue inlining w.r.t. linear copy 2011-10-05 17:44:01 +02:00
Cédric Pasteur 175c8e34ff Fixed control fusion 2011-10-05 10:49:51 +02:00
Adrien Guatto d0ed09c3e5 Ext-value inlining pass. 2011-10-04 15:14:02 +02:00
Cédric Pasteur 902cbaf7a1 Fixed error with memalloc and const value with when 2011-10-04 14:34:44 +02:00
Adrien Guatto 2fb27770b8 Fixed iterator minimization bug. 2011-10-03 10:54:50 +02:00
Cédric Pasteur 80f24b747c Updated comments 2011-09-26 10:19:48 +02:00
Cédric Pasteur 36c1c7252e Fixed memalloc application with fields 2011-09-15 16:55:17 +02:00
Cédric Pasteur 1231afdbb1 Fixed inlining
Inlining is now recursive.
2011-09-15 13:28:41 +02:00
Cédric Pasteur 26ad2739dd Inlined version of mission control 2011-09-15 11:23:16 +02:00
Cédric Pasteur da3660c08c Tweaked the printer to generate correct code
There is still a big problem with priority
of operators
2011-09-15 11:10:39 +02:00
Cédric Pasteur 339feaa747 Ignore unknown nodes (instead of crashing) 2011-09-14 15:55:29 +02:00
Cédric Pasteur 1c43a8b1ac Fixed code generation for constant arrays 2011-09-14 09:08:28 +02:00
Cédric Pasteur 3a9dc1c34d Small fixes in Inline
Also inline function calls, not only nodes.
2011-09-12 18:11:00 +02:00
Cédric Pasteur 1d6b68cef6 Fix syntax for ocaml < 3.12 2011-09-09 17:03:54 +02:00
Cédric Pasteur 4d912e9349 Added more options for memalloc
There is now three options for memory allocation:
  - -only-linear activates only the linear 
annotations (with typing and code generation)
  - -only-memalloc does only memory allocation
  - -memalloc does both

When linear typing is not activated, linearity 
annotations are ignored (the signature in the .epi
does not contain the annotations)
2011-09-09 16:05:44 +02:00
Cédric Pasteur eb18342c33 Do not forget to also traverse local linear vars 2011-09-09 16:00:21 +02:00
Cédric Pasteur b0bb7ad39f Fixed problem with application of memalloc 2011-09-09 15:53:15 +02:00
Cédric Pasteur c550b09805 Fixed code generated for alias types to arrays 2011-09-09 13:54:29 +02:00
Cédric Pasteur 9427117fe1 Fixed linear typing of accumulators 2011-09-09 11:29:24 +02:00
Cédric Pasteur eb0a19926c Erase all linearities if memalloc is not activated 2011-09-09 10:11:44 +02:00
Cédric Pasteur 08437bf448 Fixed linear typing of nested calls 2011-09-08 14:27:24 +02:00
Cédric Pasteur 7bf5f3f323 Fixed typing of iterator 2011-09-08 14:10:55 +02:00