converted comments to doxygen
[libfirm] / Changes
diff --git a/Changes b/Changes
index 4338fe0..0b07016 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,250 @@
+  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
   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