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