There should be no changes ??!!
[libfirm] / Changes
1   5.7.2000 Goetz
2   Fixed some testprograms to new semantics of firm.
3   Added testprogram global_var_example.
4
5   5.7.2000 Goetz
6   Fixed a bug in irop:  Size of Sel node was (entity *) instead of
7   sel_attr.  Therefor array_heap_example aborted.
8   Also found a missing break in typewalk, case iro_Alloc.
9
10   5.7.2000 Goetz
11   Added a construct that unifies all things constructed by the lib
12   and needed to represent a program:  irprog.ch
13   This contains a list of all types as well as a list of all ir graphs.
14   I added calls to initialization and constructors so that this is constructed
15   automatically.  I changed firm.c, type.c, irgraph.c and ev. more.
16
17   5.7.2000 Goetz
18   Removed strange block struct and constructor from ircons.c.
19   Moved routines for automatic Phi construction from irgmod to ircons.
20   Sorted functions in ircons to reflect the different interfaces.
21   Renamed dataseg to globals to be conformant with documentation.
22   Added conservation of current_ir_graph to irgopt.c.
23   Corrected bug in Makefiles: wrong path to directory ./inlude.
24
25   4.7.2000 Goetz
26   Commented a whole bunch of stuff, e.g. in ircons.h  (Procedure to construct)
27   We should change the naming of the Block constructor.
28
29   4.7.2000 Goetz
30   Removed acces routines to attr. "closed" of Block.
31
32   4.7.2000 Goetz
33   Removed second implementation of new_ir_node from ircons and some comments
34   concerned with the now resolved cyclic dependency.
35   Fixed some bugs in irgopt so that the compilation goes through.
36
37   29.6.2000 Chris
38   Changed the irnode attribut 'visit' into 'visited'.
39   Added some access functions, like get/set_irn_visit etc.
40
41   28.6.2000 Chris
42   Renamed some access funtion in irgraph.*.
43   Deleted two global flags (ir_visited and block_visited) from irgraph.*.
44   Added two attributes to the irgraph struct. The visited flags belongs
45   to a ir graph, not to a whole program.
46
47   26.6.2000 Chris
48   A new optimization has been finished. The dead-node-elimination copies
49   the existing ir graph from one opstack to another. While walking the
50   graph, only the reachable nodes will be copied, so the "dead-nodes"
51   (unreachable in the controlflow) are removed.
52
53   19.6.2000 Chris
54   Solved some problems in the 'copy_node' function. The in array was not
55   as easy as it seamed.
56
57   16.6.2000 Chris
58   Wrote a new 'post' funtion, for future use in 'dead-node-elimination'
59   optimization, which is needed in the paramter list of 'irg_walk'.
60
61   14.6.2000 Chris
62   Moved 'optimze_in_place_wrapper' from iropt.* tothe new files irgopt.*.
63   New functions 'local_optimze_graph' and 'dead_node_elimination' are added,
64   but not finished.
65
66   31.5.2000 Chris
67   Removed some files from the archive, after dependencies and usage are
68   checked:
69   - 'ir/common/strerror.c'
70   was nowhere used;
71   - 'ir/ident/xx_ident.h'
72   an empty file, only included by 'ident.c', but never used;
73   - 'ir/tv/label.c' and
74   - 'ir/tv/label.h'
75   contained a numeric counter;
76   The files were included in 'tv.h' and implemented in 'tarval.c'. The two
77   functions 'tarval_label' and 'tarval_forall_labeled' were also never used.
78   In the old fiasco compiler, the label thing is used in the backend.
79   Search for 'babil' to see the usage.
80   Also removed the two attributes 'lab' and 'used' in the tarval struct.
81
82   26.5.2000 Chris
83   Moved the 'new_ir_node' constructor from ircons.* to irnode.* and fixed
84   afterwards some recursive includes, so libfirm works again.
85
86   2+3.2000 Goetz
87   Did a lot of changes, which I never commented until now (4.7.00).
88
89   * Added new result to Start node: Pointer to global data segment.
90   * Extended Semantics of SymConst node to represent information for the
91     linker.
92   * Added arithmeitc nodes (Shrs, Minus ...)
93
94   Rearranged the directory structure and adjusted the makefiles.
95   The directories contain:
96   ir:       everything for the intermediate representation (better: src?)
97     /ir:    the ir itself, and standard optimizations.
98     /tv:    the target value module
99     /tr:    the type and entity representation
100     /adt:   abstract data types
101     /common:  stuff needed by all other dirs
102     /debug: debugging Unterstuetzung
103     /ident:
104   include:  external files needen as includes
105   testprograms: examples to test the lib.
106
107   The makefiles generate files with extension .d that contain the dependencies
108   between the files.
109
110   15.2.2000 Goetz
111   Added access routine to attribute link of irnode in irnode.ch.
112   Added get_negated_pnc to irnode.ch.
113
114   14.2.2000 Goetz
115   Added an iterator in iropt that calls the optimization for all nodes.
116   Copied optimize's code to optimize_in_place and removed deallocations.
117   Made set_irn_n in irnode.c public.
118   Added Bad as possible cfg predecessor in is_cfg_node in irnode.  Bads
119   are allowded as cfgpredecessors to represent dead "incoming" control
120   flow.
121   Added call to optimize_in_place in mature_block. Is this useful?
122
123   10.2.2000 Goetz
124   Changed tests from comparing enums to comparing pointers. This is more
125   efficient (is it?) and reads better.  e.g., instead get_irn_opcode == irm_And
126   now get_irn_op == op_And
127
128   10.2.2000 Goetz
129   Compared equivalent_value to the one in the original fiasco.
130   Added a test in case iro_And.
131   Changed implementation of iro_Div. Added routines turn_into_tuple
132     and set_irn_op() in irgmod/irnode.
133   Changed implementation of irn_Minus (although commented out).
134   Now all features are ported or documented for this function.
135
136   10.2.2000 Goetz
137   Compared computed_value to the one in the original fiasco.
138   Added one further optimization in case iro_Proj.
139   Now all features are ported for this function.
140
141   9.2.2000 Goetz
142   Updated comments in ircons.h.
143
144   9.2.2000 Goetz
145   Changed possible attribute of SymConst from type_class to type.
146   SymConst size could be the size of a union, array, ...
147
148   9.2.2000 Goetz
149   Implemented two dumpers that dump type information and a graph with
150   type information.
151
152   9.2.2000 Goetz
153   Implemented a walker that walks over the type informatin that can
154   be reached from an ir node.
155   Added routine get_kind(firm_thing) in common.h, Added file common.c.
156   Added files typewalk.ch and routines to irdump.
157   Added visited flags and initialization to entity and all types.
158   Implemented some of the missing access routines in type.c, entity.c
159
160   9.2.2000 Goetz
161   Implemented constructor for ShrA.
162   Added type struct.
163   Added routine that iterates the graph and verifies all nodes.
164   Added Phi_in stack to irgraph.  This allows to build several
165     graphs at once with respect to the Phi building algorithm.
166
167   9.2.2000 Goetz
168   Implemented dumper for control flow graphs.  Changed irr_* and dead_*
169   examples to dump cfg.
170
171   8.2.2000 Goetz
172   Implemeted explicit stack for the Phi node generation.  See ircons.c.
173
174   8.2.2000 Goetz
175   added include string.h in xoprintf.c to get rid of warning:
176   implicit declaration of function `bcopy'
177
178   7.2.2000 Goetz
179   Worked on iropt.c:
180   Added more cases to equivalent_node.
181   Portet gigo, identify, identify_remember.
182   The set/pset library can not handle several hash tables.  At least,
183   compiling several procedures causes a segmentation fault during access
184   to the tables (oo_program_example).  Need to work on this.
185   transform_node still needs to be ported.
186   some cases in equivalent_node are still missing.
187
188   To get it running I had to remove the call to optimize in the
189   new_Block constructor. It can only be called when the Block is
190   mature.
191
192   7.2.2000 Goetz
193   Introduced a walker that walks only over blocks.  The asserts
194   might be too strict for general graphs, but so far it works.
195   For the walker I introduced an additional flag in the attribute
196   of Blocks, an a global block_visited variable (in irgraph.h).
197   Furhter I modularized dump_ir_node, implemented dump_ir_graph
198   with the existing walker, and added new routines to output a
199   basic block graph.
200   Changed the examples to call the new dump routine.
201
202   7.2.2000 Goetz
203   Added auxiliary routines to ir_node:
204   skip_Proj, skip_Nop, is_Bad ...
205   Changed access routines to use get_irn_n instead of explicit array
206   accesses. Changed get_irn_n to call skip_Id, so that the access routines
207   never will return Id nodes.
208
209   3.2.2000 Goetz
210   Repaired Phi computation, changed new_r_Phi_in.  Added test program to
211   test irregular controlflow.
212
213   2.2.2000 Goetz
214   Updated optimizations computed_value and equivalent_node to new
215   Syntax of FIRM nodes and to use access routines.
216   Added routine skip_Proj in irnode.
217
218   2.2.2000 Boris Boesler
219   Added files irgwalk.c and irgwalk.h. They include a simple function to
220   traverse an ir graph and execute pre and post functions to current node.
221
222   1.2.2000 Goetz
223   Added arrays with parameters and result types to the type informtion
224   of a procedure.  This is needed for the code generation.  Also added
225   the corresponding access routines.
226   Adapted the testprograms.
227
228   1.2.2000 Goetz
229   Found a bug / complication:  the call order
230     get_value   (makes Phi0, put's it into graph_arr)
231     set_value   (overwrites Phi0 in graph_arr)
232     mature_block (upgrades Phi0, puts it again into graph_arr, overwriting
233                   the proper value.)
234   fails.  Added test wether graph_arr is already set in phi_merge.
235
236   Added tons of comments to explain Phi generation -- the stack hack.
237
238
239   27.1.2000 Goetz
240   irdump now outputs the pnc_number for projs of Cmp nodes.
241   Added routine to access the pnc_string.
242
243   27.1.2000 Goetz
244   Added result "dataseg" to Start node, with all it's consequences.
245   We need this for the compiler lab to translate global variables.
246   Now they can be selected from the data segment, and the start
247   node supplies the pointer to this segment.
248   These changes are guarded by preprocessor variable UEBPRAKT in
249   common.h
250   Changed files: common.h, irgraph.ch, irnode.h
251
252   26.1.2000 Goetz
253   Testprograms:
254   removed array_example, added array-heap_example and
255   array-stack_example and adapted makefile.
256   ir_lib:
257   Entity now also allows type_method as owner. This is to model
258   the stack, Sel nodes that select a variable (array) from the
259   stack need an entity that describes what they select.  This
260   entity gets the type of the enclosing procedure as owner.
261
262   24.1.2000 Chris
263   Added future access routines in `irmode.[ch]' as comments,
264     that all attributes in the ir_mode struct can be user-defined.
265   Added access routines in `irgraph.[ch]', for all attributes.
266
267   22.1.2000 Chris
268   Moved verify routines from `irgraph.[ch]' to own files `irvrfy.[ch]'.
269   Added `irvrfy.[ch]' to MAKEFILE
270   Added "inline" before access routines in `irnode.h', that no warnings
271     will appear furthermore.
272   Added three more access routines in `irmode.[ch]':
273         struct tarval *get_min_of_mode (ir_mode *mode);
274         struct tarval *get_max_of_mode (ir_mode *mode);
275         struct tarval *get_null_of_mode (ir_mode *mode);
276
277   21.1.2000 Goetz
278   Adaption of Alloc, Sel and Entity to new types:
279     Changed array_example to use type instead of type_class.
280     Changed entity to allow all types as owner instead of
281       only type_class.  Added routine "assert_legal_owner_of_ent(type* type)".
282     Changed alloc to allow allocating variables of any type instead of
283       only type_class.
284     Adapted all testprograms to avoid warnings.
285
286   removed dtest ... from Makefile, replaced by test.
287
288   20.1.2000 Goetz
289   Added "run" to makefile, added array_example to makefile of testprograms.
290   Corrected testprogram array
291   Changed assert in irvrfy -- Conv.
292   Started Change log.
293   Started TODO log.