9f23303deccad12010a81656872f6616f7d851f3
[libfirm] / Changes
1   30.11.2001 Goetz
2   Extendend "comfortable" construction interface by some methods
3   serving as simple shortcuts.
4
5   30.11.2001 Goetz
6   Added a class type to irgs.  This class type is to be used as owner
7   for local entities of the procedure. This are all entities allocated
8   for each execution of the procedure.
9   The class type is allocated automatically by new_ir_graph().  Access
10   routines to get this type are in irgraph.h.
11   We chose a class type as this allows to represent "inner" procedures
12   as, e.g., in Pascal.
13   Adapted array-stack-example.
14
15   29.11.2001 Goetz
16   irdump outputs nodeids instead of pointers for labels of nodes.
17   With a preprocessor flag in common.h this can be turned off.
18
19   28.11.2001 Boris
20   Added an Id tag to every .c and .h file
21
22   20.11.2001 Goetz
23   Changed SSA constuction for exception control flow.
24   If PRECISE_EXC_CONTEXT is used Phi nodes will use the values
25   valid when the execption operation was allocated.  This increases
26   the memory consuption of the construction algorithm by
27   n_loc * #fragile_ops.
28
29   19.11.2001 Goetz
30   Added method to replace in array of a node in irnode.c/h
31   Added functionality to irgmod:
32    * collect all Phi nodes as link-list in the Blocks link field
33    * collect all Proj nodes as link-list in node producing the tuple.
34    * Seperate a Block into two
35   Added inlining transformation in irgopt.h
36   Improved output of dump_ir_block_graph.  Now also dumps nodes that
37   don't belong to a block.
38   Added flag opt_unreachable_code, opt_inline.
39   Changed irvrfy so that it accepts nodes with Bad predecessors.
40
41   19.10.2001 Boris
42   renamed get_type_nameid to get_type_ident
43
44   10.9.2001 Goetz
45   Bugfix: dead node elimination did not replace the hash table
46   for cse.
47
48   29.8.2001 Goetz
49   Added routine remove_irp_irg.
50   Changed comment to free_ir_graph.
51
52   29.8.2001 Goetz
53   Added routine to free irgraphs.
54
55   17.7.2001 Goetz
56   Improved add routines to sub, supertype in type.c
57
58   12.7.2001 Goetz
59   Added implementation of overwrites stuff.
60
61   11.7.2001 Goetz
62   Implemented stuff to change the type graph.  See
63   typegmod.h and tpop.h for basic documentation of the change.
64   There now exists a type of kind type_id.  If this appears
65   externally this is a bug.
66
67   9.7.2001 Goetz
68   Added some new access routines to types.
69   List of overwritten fields for entities.
70   Removed a bug in irnode.
71
72   4.7.2001 Goetz
73   Added a routine to set the mangled entity name.
74   Added two routines to copy entites.
75
76   3.7.2001 Goetz
77   Entities now have two more flags, for visibility and allocation mode.
78   Types that have a layout have a flag indicating whether the layout is
79   fixed.
80
81   25.6.2001 Goetz
82   We distinguish three kinds of Cond nodes.  These can be distinguished
83   by the mode of the selector operand and an internal flag of type cond_kind.
84   First we distinguish binary Conds and switch Conds.
85   A binary Cond has as selector a boolean value.  Proj(0) projects the control
86   flow for case "False", Proj(1) the control flow for "True".  A binary Cond
87   is recognized by the boolean selector.
88   The switch Cond has as selector an unsigned integer.  It produces as result
89   an n+1 Tuple (cf0, ... , cfn) of control flows.
90   We differ two flavours of this Cond.  The first, the dense Cond, passes
91   control along output i if the selector value is i, 0 <= i <= n.  If the
92   selector value is >n it passes control along output n.
93   The second Cond flavor differes in the treatment of cases not specified in
94   the source program.  It magically knows about the existence of Proj nodes.
95   It only passes control along output i, 0 <= i <= n, if a node Proj(Cond, i)
96   exists.  Else it passes control along output n (even if this Proj does not
97   exist.)  This Cond we call "fragmentary".  There is a special constructor
98   new_defaultProj that automatically sets the flavor.
99   The two switch flavors are distinguished by a flag of type cond_kind.
100   Default flavor is "dense"
101
102   20.6.2001 Goetz
103   Extended iropt, tv.
104   tv now implements Minus, Abs.
105   iropt now optimizes these and Div, Mod, Quot, DivMod.
106   Still missing: Shrs, Rot.
107   tarval_shr somtimes performs shrs, depending on the compiler/system!!
108   If the ArmRoq implementation is faulty there might appear errors.
109
110   20.6.2001 Goetz
111   Changed ircons: If undefined values are used the Phi construction
112   inserts a constant with value tarval_bad.
113
114   19.6.2001 Goetz
115   Changed array bounds in type.h to ir_node*.  This allows to
116   construct array bounds that are complex constant expressions
117   simpler.  Further dynamic array bounds can be displayed.
118   Comment in ircons.c extended: undefined values in start_block.
119
120   7.6.2001 Goetz
121   ifdef'ed all uses of gmp in tv.c away.  Optimizations for
122   mode_Z no more supported, as well as constants of that mode.
123
124   7.6.2001 Goetz
125   Dokumentation in ir_dump
126   Habe Routinen fuer einzelne Knoten/Kanten aus header entfernt:
127   Benutzen globale Variable die nicht oeffentlich zugaenglich ist.
128
129   28.5.2001 Goetz
130   We need an entity for the array elements for the Sel nodes.  This
131   entity should be stored in the array type.  Changed constructor
132   parameters: include array element type.  Entity for elements is built
133   automatically now.
134
135   28.5.2001 Goetz
136   Removed bug in tv.c.
137   Faulty use of va_arg, became visible with new, stricter gcc 2.96.
138
139   23.5.2001 Goetz
140   Added list of member entites to union.  unioned_types and delimiters
141   are superfluous now -- removed.
142   Rationale: we want to express selection of a union member as a Sel
143   node. for this we need to have entities.  The entities contain the
144   unioned type and have as name the delimiters...
145
146   17.4.2001 Boris
147   Changed Makefile/MakeTargets to install headers and libraries
148   seperately.
149
150   28.3.2001 Boris
151   Changed Makefile and Configure scripts to produce a proper tar file
152   for distribution (libfirm-VERSION.tar)
153   Use 'make distrib' instead of 'make dist'
154
155   14.3.2001 Goetz
156   Changed implementation of tr module.  With this I also changed the
157   interface!!  Type casts are unnecessary now, but some access funcions
158   differ.
159
160
161 ======================================================================
162 ==================== New version: 0.3.0 ==============================
163 ======================================================================
164
165   14.3.2001 Boris
166   added file TODO
167
168   14.3.2001 Boris
169   added creation of a tar archive for distribution
170   replaced ir/.dummy.in by ir/Makefile.in
171
172   13.3.2001 Goetz
173   Changed equivalent_node() and copy_preds() so that the end block
174   is not optimized away if it has no real predecessors.  This fixes
175   the problem with the while examples.
176   Added while_example in Makefile
177
178   12.3.2001 Goetz
179   Fooled around with if_while_example: Why does cse make it abort?
180   Cse removes path to End node, Bad remains as pred of Endblock.
181   The block walker can't deal with this.
182   Made new example with only loop:  while_example.
183
184   12.3.2001 Boris
185   added auto documentation in Makefiles, configure, etc
186   example in ir/ir/ircons.c - much must be added
187   creation of documentation by 'make autodoc' in architecture directory
188
189   5.3.2001 Boris
190   added lots of #ifdef HAVE_CONFIG_G #include "config.h" #endif
191   replaced some C++ style comments (//) by standard C comments /**/
192   added autoconf stuff
193   worked this night:
194         - configure (with some features, see --help for more)
195         - make [depend | tags | install]
196         - make [run] in testprograms
197   did not work:
198         - compilation on SunOS
199         - make dist
200         - automatic call of autoconf if required
201
202   5.3.2001 Goetz
203   More colours in vcg output.
204   Fixed bug:  cse found that start block equals it's
205   first successor as both have the Start block as predecessor.
206   This only happens for local_optimize_graph() as during construction
207   the Start block is not entered in the value table.
208   Changed implementation:  irgmod:  local_optimize_graph() did not
209   empty the hash table with the irnodes for cse.  This might cause that
210   cse turns up with a node that seems better but was removed from the
211   graph in an earlier optimization phase.
212   Removed old #if 1 from ircons.c
213   Commented in call of optimization for Block nodes in irgopt.c, copy_preds():
214   Optimizes blocks that had bad predecessors.
215   Same for Phi nodes.
216
217
218   27.2.2001 Goetz
219   Moved struct from irprog.h to irprog_t.h, same for irmode.h.
220   Added a module deb_info in debug.h.  Adapted makefile.  Added example
221   use in iropt.h.
222   Removed use of debug.h in ident.c. Now debug.c|h can be moved to
223   /adt/.
224   Removed inabled code for dead node elimination in irgopt.h.
225   Renamed some missnamed access routines (_of_).  Macros with old names
226   are in old_fctnames.h.
227   Edited makefiles to remove #* and *.flc.
228
229   ??.2.2001 Goetz
230   Some minor bugfixes...
231
232   25.1.2001 Goetz
233   After compacting of in arrays in dead_node_elimination
234   merge blocks and remove Phis with one pred.
235
236   24.1.2001 Goetz
237   Freeing of obstack in dead_node_elimination commented in.
238   Compacting in arrays of Block and Phi nodes in dead_node_
239   elimination.
240   Some more changes...
241
242   15.01.2001 Goetz
243   added set/get_SymConst_type_or_id in irnode.h
244   added field offset to entity in entity.h
245   added field size to type_class in type.h
246   include "gmp.h" in tv.h with "" instead <>
247
248   12.01.2001 Goetz
249   Some changes to make the lib better portable
250
251   29.12.2000 Goetz
252   Initialize max_node_nr in irprog.
253
254   27.12.2000 Goetz
255   Now outputs warning if faulty type in irdump, dump_type_info.
256   Explicit string termination in irdump, vcg_open.
257
258   20.12.2000 Goetz
259   Added external to declaration of irp.
260   Added typedef before pns and pnc_number.
261   irmode.c, init_mode(): We need to memset all new modes as
262   tarval_vrfy reads fields before they are initialized: It
263   compares to min/max when tarvals for min/max are allocated!
264
265   18.12.2000 Goetz
266   Changed parameter of Methods in type.h and type.c from
267   class to clss.  Class is a C++ keyword.
268
269   10.12.2000 Goetz
270   Changed some testprograms to accomodate Uebprakt.
271
272   7.9.2000 Goetz
273   Finished implementation of dump_all_types.
274   Added new testprogram inheritance_example.
275
276   6.9.2000 Chris
277   Added seven access routines in type.[hc]:
278   get_class_n_member, get_class_n_subtype, get_class_n_supertype,
279   get_strct_n_member, add_strct_member, get_strct_member and set_strct_member.
280   Fixed the type_walk_2 for those seven routines.
281
282   6.9.2000 Goetz
283   Added irdump routine dump_all_types.
284   Did changes to irprog, type, typewalk to achieve this.
285   typewalk needs to walk along members, sub and supertypes, this
286   is still missing!  irdump then needs to output these edges.
287
288 ======================================================================
289 ==================== New version: 0.2.5 ==============================
290 ======================================================================
291
292   3.9.2000 Goetz
293   Made new Version: 0.2.5
294
295   15.8.2000 Goetz until 3.9.00
296   Separated irnode.h and many others into two files: one public
297   one private.
298   Added funcionality to extract headers for lib.
299
300   23.8.2000 Goetz
301   type_dump also dumps irg->ent
302   if_example: corrected nr of locals
303
304   16.8.2000 Goetz
305   irgopt: Correct copy of self pointer in start block.
306   irgopt: Correct treatment of loops: pre function in walker
307     breaks all possible loops in Phi and Block nodes.
308   irr_loop_example: wrong Return statement
309   Now I fixed all but one error: in memory_example.
310   This error showed a conceptual problem, so I wrote
311   a slightly different algorithm.  This now runs for
312   all testprograms.
313   dead_node_example: cse is buggy!! merges start and the
314   following block!
315
316   15.8.2000 Goetz
317   looking at bug in dead_node_elimination.
318   Following fixes:
319   irnode:  all get_..._arr functions changed
320   ircons:  new_r_Block: set matured flag.
321   ircons:  new_r_SymConst: needs mode_p for linkage_ptr_info.
322   adapted call_str_example to new concepts.
323
324   2.8.2000 Goetz
325   Implemented simpler Phi construction algorithm that constructs
326   correct code for three_cfpred_example in ircons.  This algorithm
327   generates more Id nodes than the original algorithm and therefore
328   is less effective.
329   Also made some changes to optimizations of Not.
330
331   31.7.2000 Chris
332   Fixed a bug, caused by the recursive use in type.h and entity.h.
333   Deleted the _TYPE_TYPEDEF_ and inserted the _ENTITY_TYPEDEF_ instead.
334   Fixed a problem in if_while testprogram, so it now works.
335
336   20.7.2000 Goetz
337   Fixed bug in optimize(). Returned Null instead n if
338   get_optimize() == false.
339
340   19.7.2000 Christian
341   Added some access routines in type.[hc]. Solved a recursive definition
342   of type_class struct, entity struct and type union.
343
344   18.7.2000 Goetz
345   Separated entity header into pure functional header and header
346   with data types.
347
348   Goetz
349   ... a bunch small changes not documented
350
351   12.7.2000 Goetz
352   Changed output of oo_prog_example: now uses the internal list
353   of all irgs.  Had to implement some of the access routines for
354   that.  Also fixed a bug in irdump.  Main routines did not use
355   current_ir_graph properly.
356
357   12.7.2000 Goetz
358   Implemented some missing parts in irgopt.
359   Added field irg to entity. Only valid if entity is a method.
360   Had to resove a cyclic de[endency between irgraph.h and entity.h
361   for this.
362   Added fields sub and super to type_class for inheritance.
363   Added field main_irg to irprog.
364
365   7.7.2000 Chris
366   Fixed some bugs in irgopt.c
367   Added some missing 'get_new_node' methods, so the new obstack contains
368   the correct nodes.
369
370   6.7.2000 Chris
371   Renamed ir_vrfy to irn_vrfy and vrfy_graphg to irg_vrfy.
372   Solved some copy'n'paste problems. Deleted most debug-code!
373   Added comments to several files.
374
375   6.7.2000 Goetz
376   Fixed bug in _r_ constructors for all four Div operations.
377   Fixed bug in turn_into_tuple: didn't remember the block.
378   Tested transform_node.
379
380   5.7.2000 Goetz
381   Fixed some testprograms to new semantics of firm.
382   Added testprogram global_var_example.
383   Fixed a bug in irop:  Size of Sel node was (entity *) instead of
384   sel_attr.  Therefor array_heap_example aborted.
385   Also found a missing break in typewalk, case iro_Alloc.
386   Added a construct that unifies all things constructed by the lib
387   and needed to represent a program:  irprog.ch
388   This contains a list of all types as well as a list of all ir graphs.
389   I added calls to initialization and constructors so that this is constructed
390   automatically.  I changed firm.c, type.c, irgraph.c and ev. more.
391   Removed strange block struct and constructor from ircons.c.
392   Moved routines for automatic Phi construction from irgmod to ircons.
393   Sorted functions in ircons to reflect the different interfaces.
394   Renamed dataseg to globals to be conformant with documentation.
395   Added conservation of current_ir_graph to irgopt.c.
396   Corrected bug in Makefiles: wrong path to directory ./inlude.
397
398   4.7.2000 Goetz
399   Commented a whole bunch of stuff, e.g. in ircons.h  (Procedure to construct)
400   We should change the naming of the Block constructor.
401   Removed acces routines to attr. "closed" of Block.
402   Removed second implementation of new_ir_node from ircons and some comments
403   concerned with the now resolved cyclic dependency.
404   Fixed some bugs in irgopt so that the compilation goes through.
405
406   29.6.2000 Chris
407   Changed the irnode attribut 'visit' into 'visited'.
408   Added some access functions, like get/set_irn_visit etc.
409
410   28.6.2000 Chris
411   Renamed some access funtion in irgraph.*.
412   Deleted two global flags (ir_visited and block_visited) from irgraph.*.
413   Added two attributes to the irgraph struct. The visited flags belongs
414   to a ir graph, not to a whole program.
415
416   26.6.2000 Chris
417   A new optimization has been finished. The dead-node-elimination copies
418   the existing ir graph from one opstack to another. While walking the
419   graph, only the reachable nodes will be copied, so the "dead-nodes"
420   (unreachable in the controlflow) are removed.
421
422   19.6.2000 Chris
423   Solved some problems in the 'copy_node' function. The in array was not
424   as easy as it seamed.
425
426   16.6.2000 Chris
427   Wrote a new 'post' funtion, for future use in 'dead-node-elimination'
428   optimization, which is needed in the paramter list of 'irg_walk'.
429
430   14.6.2000 Chris
431   Moved 'optimze_in_place_wrapper' from iropt.* tothe new files irgopt.*.
432   New functions 'local_optimze_graph' and 'dead_node_elimination' are added,
433   but not finished.
434
435   31.5.2000 Chris
436   Removed some files from the archive, after dependencies and usage are
437   checked:
438   - 'ir/common/strerror.c'
439   was nowhere used;
440   - 'ir/ident/xx_ident.h'
441   an empty file, only included by 'ident.c', but never used;
442   - 'ir/tv/label.c' and
443   - 'ir/tv/label.h'
444   contained a numeric counter;
445   The files were included in 'tv.h' and implemented in 'tarval.c'. The two
446   functions 'tarval_label' and 'tarval_forall_labeled' were also never used.
447   In the old fiasco compiler, the label thing is used in the backend.
448   Search for 'babil' to see the usage.
449   Also removed the two attributes 'lab' and 'used' in the tarval struct.
450
451   26.5.2000 Chris
452   Moved the 'new_ir_node' constructor from ircons.* to irnode.* and fixed
453   afterwards some recursive includes, so libfirm works again.
454
455   2+3.2000 Goetz
456   Did a lot of changes, which I never commented until now (4.7.00).
457
458   * Added new result to Start node: Pointer to global data segment.
459   * Extended Semantics of SymConst node to represent information for the
460     linker.
461   * Added arithmeitc nodes (Shrs, Minus ...)
462
463   Rearranged the directory structure and adjusted the makefiles.
464   The directories contain:
465   ir:       everything for the intermediate representation (better: src?)
466     /ir:    the ir itself, and standard optimizations.
467     /tv:    the target value module
468     /tr:    the type and entity representation
469     /adt:   abstract data types
470     /common:  stuff needed by all other dirs
471     /debug: debugging Unterstuetzung
472     /ident:
473   include:  external files needen as includes
474   testprograms: examples to test the lib.
475
476   The makefiles generate files with extension .d that contain the dependencies
477   between the files.
478
479   15.2.2000 Goetz
480   Added access routine to attribute link of irnode in irnode.ch.
481   Added get_negated_pnc to irnode.ch.
482
483   14.2.2000 Goetz
484   Added an iterator in iropt that calls the optimization for all nodes.
485   Copied optimize's code to optimize_in_place and removed deallocations.
486   Made set_irn_n in irnode.c public.
487   Added Bad as possible cfg predecessor in is_cfg_node in irnode.  Bads
488   are allowded as cfgpredecessors to represent dead "incoming" control
489   flow.
490   Added call to optimize_in_place in mature_block. Is this useful?
491
492   10.2.2000 Goetz
493   Changed tests from comparing enums to comparing pointers. This is more
494   efficient (is it?) and reads better.  e.g., instead get_irn_opcode == irm_And
495   now get_irn_op == op_And
496
497   10.2.2000 Goetz
498   Compared equivalent_value to the one in the original fiasco.
499   Added a test in case iro_And.
500   Changed implementation of iro_Div. Added routines turn_into_tuple
501     and set_irn_op() in irgmod/irnode.
502   Changed implementation of irn_Minus (although commented out).
503   Now all features are ported or documented for this function.
504
505   10.2.2000 Goetz
506   Compared computed_value to the one in the original fiasco.
507   Added one further optimization in case iro_Proj.
508   Now all features are ported for this function.
509
510   9.2.2000 Goetz
511   Updated comments in ircons.h.
512
513   9.2.2000 Goetz
514   Changed possible attribute of SymConst from type_class to type.
515   SymConst size could be the size of a union, array, ...
516
517   9.2.2000 Goetz
518   Implemented two dumpers that dump type information and a graph with
519   type information.
520
521   9.2.2000 Goetz
522   Implemented a walker that walks over the type informatin that can
523   be reached from an ir node.
524   Added routine get_kind(firm_thing) in common.h, Added file common.c.
525   Added files typewalk.ch and routines to irdump.
526   Added visited flags and initialization to entity and all types.
527   Implemented some of the missing access routines in type.c, entity.c
528
529   9.2.2000 Goetz
530   Implemented constructor for ShrA.
531   Added type struct.
532   Added routine that iterates the graph and verifies all nodes.
533   Added Phi_in stack to irgraph.  This allows to build several
534     graphs at once with respect to the Phi building algorithm.
535
536   9.2.2000 Goetz
537   Implemented dumper for control flow graphs.  Changed irr_* and dead_*
538   examples to dump cfg.
539
540   8.2.2000 Goetz
541   Implemeted explicit stack for the Phi node generation.  See ircons.c.
542
543   8.2.2000 Goetz
544   added include string.h in xoprintf.c to get rid of warning:
545   implicit declaration of function `bcopy'
546
547   7.2.2000 Goetz
548   Worked on iropt.c:
549   Added more cases to equivalent_node.
550   Portet gigo, identify, identify_remember.
551   The set/pset library can not handle several hash tables.  At least,
552   compiling several procedures causes a segmentation fault during access
553   to the tables (oo_program_example).  Need to work on this.
554   transform_node still needs to be ported.
555   some cases in equivalent_node are still missing.
556
557   To get it running I had to remove the call to optimize in the
558   new_Block constructor. It can only be called when the Block is
559   mature.
560
561   7.2.2000 Goetz
562   Introduced a walker that walks only over blocks.  The asserts
563   might be too strict for general graphs, but so far it works.
564   For the walker I introduced an additional flag in the attribute
565   of Blocks, an a global block_visited variable (in irgraph.h).
566   Furhter I modularized dump_ir_node, implemented dump_ir_graph
567   with the existing walker, and added new routines to output a
568   basic block graph.
569   Changed the examples to call the new dump routine.
570
571   7.2.2000 Goetz
572   Added auxiliary routines to ir_node:
573   skip_Proj, skip_Nop, is_Bad ...
574   Changed access routines to use get_irn_n instead of explicit array
575   accesses. Changed get_irn_n to call skip_Id, so that the access routines
576   never will return Id nodes.
577
578   3.2.2000 Goetz
579   Repaired Phi computation, changed new_r_Phi_in.  Added test program to
580   test irregular controlflow.
581
582   2.2.2000 Goetz
583   Updated optimizations computed_value and equivalent_node to new
584   Syntax of FIRM nodes and to use access routines.
585   Added routine skip_Proj in irnode.
586
587   2.2.2000 Boris Boesler
588   Added files irgwalk.c and irgwalk.h. They include a simple function to
589   traverse an ir graph and execute pre and post functions to current node.
590
591   1.2.2000 Goetz
592   Added arrays with parameters and result types to the type informtion
593   of a procedure.  This is needed for the code generation.  Also added
594   the corresponding access routines.
595   Adapted the testprograms.
596
597   1.2.2000 Goetz
598   Found a bug / complication:  the call order
599     get_value   (makes Phi0, put's it into graph_arr)
600     set_value   (overwrites Phi0 in graph_arr)
601     mature_block (upgrades Phi0, puts it again into graph_arr, overwriting
602                   the proper value.)
603   fails.  Added test wether graph_arr is already set in phi_merge.
604
605   Added tons of comments to explain Phi generation -- the stack hack.
606
607
608   27.1.2000 Goetz
609   irdump now outputs the pnc_number for projs of Cmp nodes.
610   Added routine to access the pnc_string.
611
612   27.1.2000 Goetz
613   Added result "dataseg" to Start node, with all it's consequences.
614   We need this for the compiler lab to translate global variables.
615   Now they can be selected from the data segment, and the start
616   node supplies the pointer to this segment.
617   These changes are guarded by preprocessor variable UEBPRAKT in
618   common.h
619   Changed files: common.h, irgraph.ch, irnode.h
620
621   26.1.2000 Goetz
622   Testprograms:
623   removed array_example, added array-heap_example and
624   array-stack_example and adapted makefile.
625   ir_lib:
626   Entity now also allows type_method as owner. This is to model
627   the stack, Sel nodes that select a variable (array) from the
628   stack need an entity that describes what they select.  This
629   entity gets the type of the enclosing procedure as owner.
630
631   24.1.2000 Chris
632   Added future access routines in `irmode.[ch]' as comments,
633     that all attributes in the ir_mode struct can be user-defined.
634   Added access routines in `irgraph.[ch]', for all attributes.
635
636   22.1.2000 Chris
637   Moved verify routines from `irgraph.[ch]' to own files `irvrfy.[ch]'.
638   Added `irvrfy.[ch]' to MAKEFILE
639   Added "inline" before access routines in `irnode.h', that no warnings
640     will appear furthermore.
641   Added three more access routines in `irmode.[ch]':
642         struct tarval *get_min_of_mode (ir_mode *mode);
643         struct tarval *get_max_of_mode (ir_mode *mode);
644         struct tarval *get_null_of_mode (ir_mode *mode);
645
646   21.1.2000 Goetz
647   Adaption of Alloc, Sel and Entity to new types:
648     Changed array_example to use type instead of type_class.
649     Changed entity to allow all types as owner instead of
650       only type_class.  Added routine "assert_legal_owner_of_ent(type* type)".
651     Changed alloc to allow allocating variables of any type instead of
652       only type_class.
653     Adapted all testprograms to avoid warnings.
654
655   removed dtest ... from Makefile, replaced by test.
656
657   20.1.2000 Goetz
658   Added "run" to makefile, added array_example to makefile of testprograms.
659   Corrected testprogram array
660   Changed assert in irvrfy -- Conv.
661   Started Change log.
662   Started TODO log.