-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathTODO
55 lines (37 loc) · 1.33 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Reading of tokens etc. in extspec.c need to be done more robust.
Forward references to constant declarations.
Unspecified virtual or formal procedures.
Labels to external C procedures is not allowed.
Thunks should be separated, and placed in SENT objects.
Data-flow analysis with corresponding optimizations:
which variables are updated by a procedure.
which variables need initialization.
which initializations can be removed.
which procedures are static, recursive, or quasiparalell.
Optimizations:
array-indexing. Dimensions, static dope-vectors.
multiple use of the &-operator
more efficient implementation of program flow between different prefix-levels
removal of none-tests.
Using features of gcc instead of C's switch-statement.
Restructuring genexp and genpar:
simplifying EXP trees.
Remove BLOCK objects that corespond to blocks that are optimized away.
The following gives the following error if SENT object are optimized away,
but not the BLOCK-objects:
BEGIN
CLASS a;;
a CLASS b;;
INSPECT NEW b
WHEN a DO
WHEN b DO
BEGIN
PROCEDURE p;;
END;
END;
Compiling b.sim:
"b.sim", line 8: Warning: When A will always be executed, unless NONE.
"b.sim", line 9: Warning: When B will never be executed.
gcc -g -O2 -c b.c
b.sim: In function `main':
b.sim:17: label `__l8' used but not defined