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