+ ... no more updated, see cvs entries.
+
+ 7.8.02 Goetz
+ Implemented scc algorithm. Added datastructure to mark
+ backedges (ana/backedge.h) and to represent loops
+ (ana/irloop.h). The scc algorithm (ana/irscc.c) builds
+ both datastructures.
+ The algorithm does not yet work properly for interprocedural
+ graphs. Finds more loops than only recursions.
+
+ Improved place_code: now moves nodes out of loops.
+ Fixed bug in iropt.c: wrong parameter in debug info: iropt_dbg.c
+ Now flag set_opt_control_flow can be set to 1 again.
+
+ 11.7.2002 Goetz
+ Viele Aenderungen,
+ u.a. Zugrffsfkt normalisiert,
+ global, frame type nicht mehr in irp_types
+ interproz darstellung
+ mehr Zugriffsfkt bei entitaeten
+ u.v.a.
+
+ 25.4.2002 Goetz
+ Added several constructors to tv.
+ Changed xgprintf so that full precision of double tvs is printed.
+ Fixed bug in irouts.c.
+
+ 22.4.2002 Goetz
+ Added debug support, renamed stuff in ir/debug.
+ Optimizations still loose debug information.
+
+ 19.3.2002 Goetz
+ Added flag "peculiarity" to entity.h, type.h.
+
+ 15.3. Goetz
+ Bug: dominator construction aborts for BreakTest with flag 3.31
+ Problem: optimization of many subsequent blocks (Jmp-chains)
+ where one is inlined (Tuple control flow) in a loop. Not all
+ nodes in merged blocks are moved to remaining block.
+ Fix: different calling order to optimize_in_place_2 from
+ optimize_in_place_wrapper.
+ Bug: dumping cfg when a block is Bad. Fix: Output Bad node.
+ Change: not only turn off cse but all optimizations during
+ inlining.
+
+ 15.3. Goetz
+ Parted common.h into two files common_t.h. By this config.h
+ as well as the preprocessor flags are no more visible externaly.
+ Adapted include directives.
+
+ 12.3. Goetz
+ Bugfix in inlining: problems in combination with cse.
+
+ 8.3. Goetz
+ Implemented cf optimizations.
+ Checked compiler flags -- sorted better to fit optimizations.
+
+ 4.3. Goetz
+ Bugfix in irdom.
+ Implemented code placement.
+
+ 28.2 Goetz
+ block walk in irouts.
+ irdom implemented: dominator information.
+
+ 25.2. Goetz
+ Bugfix Optmierung Binops mit mode Tupel.
+
+ 22.2. Goetz
+ irgopt: inline_small_irgs implemented
+
+ 30.1. - 20.2. Goetz
+ Bugfixes, some access functions ...
+
+ 29.1.2002 Goetz
+ New directory: ana for analyses. Adapted configure/makefiles
+ implemented irout: backedges. Added one field to ir_graph, one to ir_node.
+ Implemented state management for irgraphs: see irgraph.h.
+ Must now call finalize_cons() after graph construction!!
+
+ 24.1.2002 Goetz
+ Procedure global cse.
+ Flag pinned in irop, irgraph.
+ Global cse in irop, setting the irgraph flag.
+ Example programs: Endless_loop.c. global_cse.c.
+ Adapted irdump.
+
+ 23.1.2002 Goetz
+ Implemented support for endless loops:
+ Adapted End node.
+ Adapted Phi constructors so that memory phis are added.
+ Adapted Cond optimization: add block to End.
+ Adapted dead node elimination: compation of Ends predecessors
+ Adapted inlineing: remember keepalives of inlined graph.
+ Added informative strings to asserts in irvrfy.
+
+ 21.1.2002 Goetz
+ Added volatile flag to entity, order flag to array.
+ Added a set of assertions.
+
+ 17.1.2002 Goetz
+ Added access function set_class_members()
+
+ 21.12.2001 Goetz
+ Asserts in irvrfy that verify the mode of Proj nodes. For Start,
+ Call, Return they check the corresponding function type! Corrected
+ bugs in testprograms.
+ Some asserts for legal values of 'pos' arguments in type/entity
+ access routines.
+
+ 20.12.2001 Goetz
+ Some access routines for visited flags in entity.h, irnode.h,
+ bug in oo_program_example.
+
+ 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.
+ irmode.c, init_mode(): We need to memset all new modes as
+ tarval_vrfy reads fields before they are initialized: It
+ compares to min/max when tarvals for min/max are allocated!
+
+ 18.12.2000 Goetz
+ Changed parameter of Methods in type.h and type.c from
+ class to clss. Class is a C++ keyword.
+
+ 10.12.2000 Goetz
+ Changed some testprograms to accomodate Uebprakt.
+
+ 7.9.2000 Goetz
+ Finished implementation of dump_all_types.
+ Added new testprogram inheritance_example.
+
+ 6.9.2000 Chris
+ Added seven access routines in type.[hc]:
+ get_class_n_member, get_class_n_subtype, get_class_n_supertype,
+ get_strct_n_member, add_strct_member, get_strct_member and set_strct_member.
+ Fixed the type_walk_2 for those seven routines.
+
+ 6.9.2000 Goetz
+ Added irdump routine dump_all_types.
+ Did changes to irprog, type, typewalk to achieve this.
+ typewalk needs to walk along members, sub and supertypes, this
+ is still missing! irdump then needs to output these edges.
+
+======================================================================
+==================== New version: 0.2.5 ==============================
+======================================================================
+
+ 3.9.2000 Goetz
+ Made new Version: 0.2.5
+
+ 15.8.2000 Goetz until 3.9.00
+ Separated irnode.h and many others into two files: one public
+ one private.
+ Added funcionality to extract headers for lib.
+
+ 23.8.2000 Goetz
+ type_dump also dumps irg->ent
+ if_example: corrected nr of locals
+
+ 16.8.2000 Goetz
+ irgopt: Correct copy of self pointer in start block.
+ irgopt: Correct treatment of loops: pre function in walker
+ breaks all possible loops in Phi and Block nodes.
+ irr_loop_example: wrong Return statement
+ Now I fixed all but one error: in memory_example.
+ This error showed a conceptual problem, so I wrote
+ a slightly different algorithm. This now runs for
+ all testprograms.
+ dead_node_example: cse is buggy!! merges start and the
+ following block!
+
+ 15.8.2000 Goetz
+ looking at bug in dead_node_elimination.
+ Following fixes:
+ irnode: all get_..._arr functions changed
+ ircons: new_r_Block: set matured flag.
+ ircons: new_r_SymConst: needs mode_p for linkage_ptr_info.
+ adapted call_str_example to new concepts.
+
+ 2.8.2000 Goetz
+ Implemented simpler Phi construction algorithm that constructs
+ correct code for three_cfpred_example in ircons. This algorithm
+ generates more Id nodes than the original algorithm and therefore
+ is less effective.
+ Also made some changes to optimizations of Not.
+
+ 31.7.2000 Chris
+ Fixed a bug, caused by the recursive use in type.h and entity.h.
+ Deleted the _TYPE_TYPEDEF_ and inserted the _ENTITY_TYPEDEF_ instead.
+ Fixed a problem in if_while testprogram, so it now works.
+
+ 20.7.2000 Goetz
+ Fixed bug in optimize(). Returned Null instead n if
+ get_optimize() == false.
+
+ 19.7.2000 Christian
+ Added some access routines in type.[hc]. Solved a recursive definition
+ of type_class struct, entity struct and type union.
+
+ 18.7.2000 Goetz
+ Separated entity header into pure functional header and header
+ with data types.
+
+ Goetz
+ ... a bunch small changes not documented
+
+ 12.7.2000 Goetz
+ Changed output of oo_prog_example: now uses the internal list
+ of all irgs. Had to implement some of the access routines for
+ that. Also fixed a bug in irdump. Main routines did not use
+ current_ir_graph properly.
+
+ 12.7.2000 Goetz
+ Implemented some missing parts in irgopt.
+ Added field irg to entity. Only valid if entity is a method.
+ Had to resove a cyclic de[endency between irgraph.h and entity.h
+ for this.
+ Added fields sub and super to type_class for inheritance.
+ Added field main_irg to irprog.
+
+ 7.7.2000 Chris
+ Fixed some bugs in irgopt.c
+ Added some missing 'get_new_node' methods, so the new obstack contains
+ the correct nodes.
+
+ 6.7.2000 Chris
+ Renamed ir_vrfy to irn_vrfy and vrfy_graphg to irg_vrfy.
+ Solved some copy'n'paste problems. Deleted most debug-code!
+ Added comments to several files.
+
+ 6.7.2000 Goetz
+ Fixed bug in _r_ constructors for all four Div operations.
+ Fixed bug in turn_into_tuple: didn't remember the block.
+ Tested transform_node.
+