+ 17.12.2001 Boris
+ Removed all obsolete Makefiles
+
+ 10.12.2001 Goetz
+ Added support for constant entities. A new example program illustrates
+ their use. Extended dumper routines to dump constant values.
+
+ 30.11.2001 Goetz
+ Extendend "comfortable" construction interface by some methods
+ serving as simple shortcuts.
+
+ 30.11.2001 Goetz
+ Added a class type to irgs. This class type is to be used as owner
+ for local entities of the procedure. This are all entities allocated
+ for each execution of the procedure.
+ The class type is allocated automatically by new_ir_graph(). Access
+ routines to get this type are in irgraph.h.
+ We chose a class type as this allows to represent "inner" procedures
+ as, e.g., in Pascal.
+ Adapted array-stack-example.
+
+ 29.11.2001 Goetz
+ irdump outputs nodeids instead of pointers for labels of nodes.
+ With a preprocessor flag in common.h this can be turned off.
+
+ 28.11.2001 Boris
+ Added an Id tag to every .c and .h file
+
+ 20.11.2001 Goetz
+ Changed SSA constuction for exception control flow.
+ If PRECISE_EXC_CONTEXT is used Phi nodes will use the values
+ valid when the execption operation was allocated. This increases
+ the memory consuption of the construction algorithm by
+ n_loc * #fragile_ops.
+
+ 19.11.2001 Goetz
+ Added method to replace in array of a node in irnode.c/h
+ Added functionality to irgmod:
+ * collect all Phi nodes as link-list in the Blocks link field
+ * collect all Proj nodes as link-list in node producing the tuple.
+ * Seperate a Block into two
+ Added inlining transformation in irgopt.h
+ Improved output of dump_ir_block_graph. Now also dumps nodes that
+ don't belong to a block.
+ Added flag opt_unreachable_code, opt_inline.
+ Changed irvrfy so that it accepts nodes with Bad predecessors.
+
+ 19.10.2001 Boris
+ renamed get_type_nameid to get_type_ident
+
+ 10.9.2001 Goetz
+ Bugfix: dead node elimination did not replace the hash table
+ for cse.
+
+ 29.8.2001 Goetz
+ Added routine remove_irp_irg.
+ Changed comment to free_ir_graph.
+
+ 29.8.2001 Goetz
+ Added routine to free irgraphs.
+
+ 17.7.2001 Goetz
+ Improved add routines to sub, supertype in type.c
+
+ 12.7.2001 Goetz
+ Added implementation of overwrites stuff.
+
+ 11.7.2001 Goetz
+ Implemented stuff to change the type graph. See
+ typegmod.h and tpop.h for basic documentation of the change.
+ There now exists a type of kind type_id. If this appears
+ externally this is a bug.
+
+ 9.7.2001 Goetz
+ Added some new access routines to types.
+ List of overwritten fields for entities.
+ Removed a bug in irnode.
+
+ 4.7.2001 Goetz
+ Added a routine to set the mangled entity name.
+ Added two routines to copy entites.
+
+ 3.7.2001 Goetz
+ Entities now have two more flags, for visibility and allocation mode.
+ Types that have a layout have a flag indicating whether the layout is
+ fixed.
+
+ 25.6.2001 Goetz
+ We distinguish three kinds of Cond nodes. These can be distinguished
+ by the mode of the selector operand and an internal flag of type cond_kind.
+ First we distinguish binary Conds and switch Conds.
+ A binary Cond has as selector a boolean value. Proj(0) projects the control
+ flow for case "False", Proj(1) the control flow for "True". A binary Cond
+ is recognized by the boolean selector.
+ The switch Cond has as selector an unsigned integer. It produces as result
+ an n+1 Tuple (cf0, ... , cfn) of control flows.
+ We differ two flavours of this Cond. The first, the dense Cond, passes
+ control along output i if the selector value is i, 0 <= i <= n. If the
+ selector value is >n it passes control along output n.
+ The second Cond flavor differes in the treatment of cases not specified in
+ the source program. It magically knows about the existence of Proj nodes.
+ It only passes control along output i, 0 <= i <= n, if a node Proj(Cond, i)
+ exists. Else it passes control along output n (even if this Proj does not
+ exist.) This Cond we call "fragmentary". There is a special constructor
+ new_defaultProj that automatically sets the flavor.
+ The two switch flavors are distinguished by a flag of type cond_kind.
+ Default flavor is "dense"
+
+ 20.6.2001 Goetz
+ Extended iropt, tv.
+ tv now implements Minus, Abs.
+ iropt now optimizes these and Div, Mod, Quot, DivMod.
+ Still missing: Shrs, Rot.
+ tarval_shr somtimes performs shrs, depending on the compiler/system!!
+ If the ArmRoq implementation is faulty there might appear errors.
+
+ 20.6.2001 Goetz
+ Changed ircons: If undefined values are used the Phi construction
+ inserts a constant with value tarval_bad.
+
+ 19.6.2001 Goetz
+ Changed array bounds in type.h to ir_node*. This allows to
+ construct array bounds that are complex constant expressions
+ simpler. Further dynamic array bounds can be displayed.
+ Comment in ircons.c extended: undefined values in start_block.
+
+ 7.6.2001 Goetz
+ ifdef'ed all uses of gmp in tv.c away. Optimizations for
+ mode_Z no more supported, as well as constants of that mode.
+
+ 7.6.2001 Goetz
+ Dokumentation in ir_dump
+ Habe Routinen fuer einzelne Knoten/Kanten aus header entfernt:
+ Benutzen globale Variable die nicht oeffentlich zugaenglich ist.
+
+ 28.5.2001 Goetz
+ We need an entity for the array elements for the Sel nodes. This
+ entity should be stored in the array type. Changed constructor
+ parameters: include array element type. Entity for elements is built
+ automatically now.
+
+ 28.5.2001 Goetz
+ Removed bug in tv.c.
+ Faulty use of va_arg, became visible with new, stricter gcc 2.96.
+
+ 23.5.2001 Goetz
+ Added list of member entites to union. unioned_types and delimiters
+ are superfluous now -- removed.
+ Rationale: we want to express selection of a union member as a Sel
+ node. for this we need to have entities. The entities contain the
+ unioned type and have as name the delimiters...
+
+ 17.4.2001 Boris
+ Changed Makefile/MakeTargets to install headers and libraries
+ seperately.
+
+ 28.3.2001 Boris
+ Changed Makefile and Configure scripts to produce a proper tar file
+ for distribution (libfirm-VERSION.tar)
+ Use 'make distrib' instead of 'make dist'
+
+ 14.3.2001 Goetz
+ Changed implementation of tr module. With this I also changed the
+ interface!! Type casts are unnecessary now, but some access funcions
+ differ.
+
+
+======================================================================
+==================== New version: 0.3.0 ==============================
+======================================================================
+
+ 14.3.2001 Boris
+ added file TODO
+
+ 14.3.2001 Boris
+ added creation of a tar archive for distribution
+ replaced ir/.dummy.in by ir/Makefile.in
+
+ 13.3.2001 Goetz
+ Changed equivalent_node() and copy_preds() so that the end block
+ is not optimized away if it has no real predecessors. This fixes
+ the problem with the while examples.
+ Added while_example in Makefile
+
+ 12.3.2001 Goetz
+ Fooled around with if_while_example: Why does cse make it abort?
+ Cse removes path to End node, Bad remains as pred of Endblock.
+ The block walker can't deal with this.
+ Made new example with only loop: while_example.
+
+ 12.3.2001 Boris
+ added auto documentation in Makefiles, configure, etc
+ example in ir/ir/ircons.c - much must be added
+ creation of documentation by 'make autodoc' in architecture directory
+
+ 5.3.2001 Boris
+ added lots of #ifdef HAVE_CONFIG_G #include "config.h" #endif
+ replaced some C++ style comments (//) by standard C comments /**/
+ added autoconf stuff
+ worked this night:
+ - configure (with some features, see --help for more)
+ - make [depend | tags | install]
+ - make [run] in testprograms
+ did not work:
+ - compilation on SunOS
+ - make dist
+ - automatic call of autoconf if required
+
+ 5.3.2001 Goetz
+ More colours in vcg output.
+ Fixed bug: cse found that start block equals it's
+ first successor as both have the Start block as predecessor.
+ This only happens for local_optimize_graph() as during construction
+ the Start block is not entered in the value table.
+ Changed implementation: irgmod: local_optimize_graph() did not
+ empty the hash table with the irnodes for cse. This might cause that
+ cse turns up with a node that seems better but was removed from the
+ graph in an earlier optimization phase.
+ Removed old #if 1 from ircons.c
+ Commented in call of optimization for Block nodes in irgopt.c, copy_preds():
+ Optimizes blocks that had bad predecessors.
+ Same for Phi nodes.
+
+
+ 27.2.2001 Goetz
+ Moved struct from irprog.h to irprog_t.h, same for irmode.h.
+ Added a module deb_info in debug.h. Adapted makefile. Added example
+ use in iropt.h.
+ Removed use of debug.h in ident.c. Now debug.c|h can be moved to
+ /adt/.
+ Removed inabled code for dead node elimination in irgopt.h.
+ Renamed some missnamed access routines (_of_). Macros with old names
+ are in old_fctnames.h.
+ Edited makefiles to remove #* and *.flc.
+
+ ??.2.2001 Goetz
+ Some minor bugfixes...
+
+ 25.1.2001 Goetz
+ After compacting of in arrays in dead_node_elimination
+ merge blocks and remove Phis with one pred.
+
+ 24.1.2001 Goetz
+ Freeing of obstack in dead_node_elimination commented in.
+ Compacting in arrays of Block and Phi nodes in dead_node_
+ elimination.
+ Some more changes...
+
+ 15.01.2001 Goetz
+ added set/get_SymConst_type_or_id in irnode.h
+ added field offset to entity in entity.h
+ added field size to type_class in type.h
+ include "gmp.h" in tv.h with "" instead <>
+
+ 12.01.2001 Goetz
+ Some changes to make the lib better portable
+
+ 29.12.2000 Goetz
+ Initialize max_node_nr in irprog.
+
+ 27.12.2000 Goetz
+ Now outputs warning if faulty type in irdump, dump_type_info.
+ Explicit string termination in irdump, vcg_open.
+
20.12.2000 Goetz
Added external to declaration of irp.
Added typedef before pns and pnc_number.