Cédric Pasteur
a081f2dacf
Added foldi iterator
...
Same as fold but the iterated function takes an
integer as the last but one argument.
This is not something that is necessarily
important to have in trunk but the patch is so
small that it doesn't hurt.
2010-07-26 09:33:22 +02:00
Léonard Gérard
dc9bec28bf
Clock refactoring.
2010-07-23 22:13:03 +02:00
Léonard Gérard
1719e2eb36
Fix bad clock expectation for static_exps.
2010-07-23 22:05:54 +02:00
Léonard Gérard
f124bb4fd7
Refactoring Ident -> Idents ( uniform with Names etc )
2010-07-23 19:45:19 +02:00
Adrien Guatto
689a10a328
Cgen: $NODE_mem.h should not include itself.
2010-07-23 12:18:27 +02:00
Cédric Pasteur
b85f9ab456
Use a block in reset (instead of a list of eqs)
...
- Most transformation passes expect that list of
equations are always nested inside a block.
This fixes a problem with a duplication of
equations in Automata_mapfold.
2010-07-23 10:56:25 +02:00
Cédric Pasteur
89ceb8df76
Fixed duplicate declaration of local vars
2010-07-22 17:38:28 +02:00
Adrien Guatto
7f91ffab53
Output MiniLS code before clocking when in verbose mode.
2010-07-22 11:12:58 +02:00
Adrien Guatto
b1944cf752
Documentation fix for Reset_mapfold
2010-07-22 11:12:58 +02:00
Cédric Pasteur
75774cc685
Refactoring
...
Directly create a obj_dec instead of storing a tuple.
2010-07-22 10:15:11 +02:00
Cédric Pasteur
0be31badae
Added some doc
...
I'm not sure if this is very clear but it's a start...
2010-07-22 10:01:40 +02:00
Cédric Pasteur
c12f1add0c
Keep params in Obc
...
Remember the parameters of the called node in the
parametrized version of Obc.
2010-07-22 09:44:57 +02:00
Cédric Pasteur
1be9f1c789
Fixed code generation for Elambda
...
- Added block notion in Obc
- Correct translation to C
2010-07-22 09:36:22 +02:00
Cédric Pasteur
4d52fe79ef
Compile fix
2010-07-22 09:22:50 +02:00
Cédric Pasteur
bbb8e2e286
Do not forget to normalize iterators
2010-07-21 17:20:19 +02:00
Cédric Pasteur
493f49fe04
Added iterator fusion
...
For now it only deals with maps but it can be
easily extended. See test/good/itfusion.ept for
examples of sequences that can be optimised.
2010-07-21 17:19:51 +02:00
Cédric Pasteur
dd660f4424
Added anonymous functions in Minils
...
- Added Elamba(inp, outp, eq_list) constructor. This
is necessary for iterator fusion.
- Refactored Mls2obc to allow to generate code
for anonymous functions (basically we have to
remember if we are within an iterator, as there is
no nesting of iterators)
There is a known problem with the local vars defined in
the anonymous function that needs to be declared.
2010-07-21 17:15:19 +02:00
Cédric Pasteur
b6459cdace
Obc_mapfold
...
Because I needed to iterate over Obc and it was
almost as easy to write the generic iterator.
2010-07-21 15:54:41 +02:00
Léonard Gérard
8df666b985
Removed temporarily clocking.
2010-07-21 15:40:55 +02:00
Léonard Gérard
5e737d0094
location change. Heptc works with menhir.
2010-07-21 15:15:57 +02:00
Cédric Pasteur
91aa437264
Check arity of static parameters
2010-07-20 11:35:48 +02:00
Cédric Pasteur
03608451c4
Use invalid_type
2010-07-20 09:34:11 +02:00
Cédric Pasteur
b2c88810c5
Make Heptagon API more uniform
...
Use a block instead of variable list + equation list
for contract and node.
The new program transformations based on the
mapfold iterator are now enabled by default.
2010-07-20 09:31:29 +02:00
Cédric Pasteur
e57c663f43
Do not forget to add created types
2010-07-20 09:17:19 +02:00
Adrien Guatto
4edc03c163
Mapfold_right for even nicer code.
2010-07-19 17:19:02 +02:00
Adrien Guatto
496919ff63
Yet Another Cosmetic Fix for normalization :-/
2010-07-19 16:57:47 +02:00
Adrien Guatto
54ada380a1
Cleaner normalization of iterators' arguments
2010-07-19 15:38:12 +02:00
Adrien Guatto
8d07052a0f
Inlining: warn when trying to inline iterators.
2010-07-19 15:22:57 +02:00
Adrien Guatto
9301ed0b09
Fixes for correct array literal C generation.
2010-07-19 15:16:14 +02:00
Adrien Guatto
3a0b1f9e16
New handy function for pretty-printing: wrap_print.
2010-07-19 15:13:56 +02:00
Adrien Guatto
d75f4f8901
Added an option for global inlining (-flatten).
2010-07-19 13:20:11 +02:00
Adrien Guatto
1d6df4ecb2
Inlining pass added. Use with -inline.
2010-07-19 12:02:29 +02:00
Adrien Guatto
2ccdf677f0
Reworded Heptagon mapfold introductory message.
2010-07-19 12:02:29 +02:00
Adrien Guatto
2a72628f20
Stricter mk_longname.
2010-07-19 12:02:29 +02:00
Cédric Pasteur
fac69ac2fa
Remove controllables from parser
2010-07-16 16:08:14 +02:00
Cédric Pasteur
aeca344db5
Automata with mapfold
...
It does not change much the code but at least
we can now see what is important.
2010-07-16 16:01:27 +02:00
Cédric Pasteur
2d10ef84df
Present with Hept_mapfold
...
Seems so simple, I feel like I missed something...
2010-07-16 15:30:51 +02:00
Cédric Pasteur
af2ea1f361
Compile fix
...
Always check that the code compiles before committing.
2010-07-16 15:11:53 +02:00
Cédric Pasteur
da9b353e75
Shorter version of is_statefull
2010-07-16 15:10:14 +02:00
Cédric Pasteur
bcc994fb9f
No need to collect calls without params
...
There is no need to collect calls without parameters
as we only need the signature of the function and the code
will be generated when compiling the first file.
2010-07-16 14:35:42 +02:00
Cédric Pasteur
ac4e46eff9
Remove debug info
2010-07-16 14:16:31 +02:00
Cédric Pasteur
9f7c4da446
Added missing operator
2010-07-16 14:15:26 +02:00
Cédric Pasteur
b6583f22b6
Complete fix for the identifiers problem
2010-07-16 14:09:37 +02:00
Cédric Pasteur
d42e56203b
Fix for identifiers in C
...
Instead of calling cname_of_name before creating
the C ast, keep original names and convert them
when pretty printing the code.
2010-07-16 13:48:37 +02:00
Cédric Pasteur
cdc9b14a44
Fixed problem with multidimensional arrays in args
2010-07-16 12:38:45 +02:00
Cédric Pasteur
27d5790a20
Do not forget iterators at instantiation time either
2010-07-16 12:33:08 +02:00
Cédric Pasteur
7f4a0954bf
Also instantiate nodes called in iterators
2010-07-16 12:26:53 +02:00
Cédric Pasteur
778dfdb3f9
Do not loop forever during code generation
...
- Detect when the computation of the static exp
using simplif failed and abort.
- Added a better way to compute operators in
Static
2010-07-16 12:04:51 +02:00
Cédric Pasteur
3f7564aaa6
Fix for code generation
...
A node declared with node is statefull (so has a
context struct) even though it is empty. Use
the global_name ref to get the name of the current
module.
2010-07-16 11:28:01 +02:00
Cédric Pasteur
03f21cc612
Last done with Hept_mapfold
2010-07-16 10:28:26 +02:00