+ 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.
+
+ 5.7.2000 Goetz
+ Fixed some testprograms to new semantics of firm.
+ Added testprogram global_var_example.
+ Fixed a bug in irop: Size of Sel node was (entity *) instead of
+ sel_attr. Therefor array_heap_example aborted.
+ Also found a missing break in typewalk, case iro_Alloc.
+ Added a construct that unifies all things constructed by the lib
+ and needed to represent a program: irprog.ch
+ This contains a list of all types as well as a list of all ir graphs.
+ I added calls to initialization and constructors so that this is constructed
+ automatically. I changed firm.c, type.c, irgraph.c and ev. more.
+ Removed strange block struct and constructor from ircons.c.
+ Moved routines for automatic Phi construction from irgmod to ircons.
+ Sorted functions in ircons to reflect the different interfaces.
+ Renamed dataseg to globals to be conformant with documentation.
+ Added conservation of current_ir_graph to irgopt.c.
+ Corrected bug in Makefiles: wrong path to directory ./inlude.
+
+ 4.7.2000 Goetz
+ Commented a whole bunch of stuff, e.g. in ircons.h (Procedure to construct)
+ We should change the naming of the Block constructor.
+ Removed acces routines to attr. "closed" of Block.
+ Removed second implementation of new_ir_node from ircons and some comments
+ concerned with the now resolved cyclic dependency.
+ Fixed some bugs in irgopt so that the compilation goes through.
+
+ 29.6.2000 Chris
+ Changed the irnode attribut 'visit' into 'visited'.
+ Added some access functions, like get/set_irn_visit etc.
+
+ 28.6.2000 Chris
+ Renamed some access funtion in irgraph.*.
+ Deleted two global flags (ir_visited and block_visited) from irgraph.*.
+ Added two attributes to the irgraph struct. The visited flags belongs
+ to a ir graph, not to a whole program.
+
+ 26.6.2000 Chris
+ A new optimization has been finished. The dead-node-elimination copies
+ the existing ir graph from one opstack to another. While walking the
+ graph, only the reachable nodes will be copied, so the "dead-nodes"
+ (unreachable in the controlflow) are removed.
+
+ 19.6.2000 Chris
+ Solved some problems in the 'copy_node' function. The in array was not
+ as easy as it seamed.
+
+ 16.6.2000 Chris
+ Wrote a new 'post' funtion, for future use in 'dead-node-elimination'
+ optimization, which is needed in the paramter list of 'irg_walk'.
+
+ 14.6.2000 Chris
+ Moved 'optimze_in_place_wrapper' from iropt.* tothe new files irgopt.*.
+ New functions 'local_optimze_graph' and 'dead_node_elimination' are added,
+ but not finished.
+
+ 31.5.2000 Chris
+ Removed some files from the archive, after dependencies and usage are
+ checked:
+ - 'ir/common/strerror.c'
+ was nowhere used;
+ - 'ir/ident/xx_ident.h'
+ an empty file, only included by 'ident.c', but never used;
+ - 'ir/tv/label.c' and
+ - 'ir/tv/label.h'
+ contained a numeric counter;
+ The files were included in 'tv.h' and implemented in 'tarval.c'. The two
+ functions 'tarval_label' and 'tarval_forall_labeled' were also never used.
+ In the old fiasco compiler, the label thing is used in the backend.
+ Search for 'babil' to see the usage.
+ Also removed the two attributes 'lab' and 'used' in the tarval struct.
+
+ 26.5.2000 Chris
+ Moved the 'new_ir_node' constructor from ircons.* to irnode.* and fixed
+ afterwards some recursive includes, so libfirm works again.
+
+ 2+3.2000 Goetz
+ Did a lot of changes, which I never commented until now (4.7.00).
+
+ * Added new result to Start node: Pointer to global data segment.
+ * Extended Semantics of SymConst node to represent information for the
+ linker.
+ * Added arithmeitc nodes (Shrs, Minus ...)
+
+ Rearranged the directory structure and adjusted the makefiles.
+ The directories contain:
+ ir: everything for the intermediate representation (better: src?)
+ /ir: the ir itself, and standard optimizations.
+ /tv: the target value module
+ /tr: the type and entity representation
+ /adt: abstract data types
+ /common: stuff needed by all other dirs
+ /debug: debugging Unterstuetzung
+ /ident:
+ include: external files needen as includes
+ testprograms: examples to test the lib.
+
+ The makefiles generate files with extension .d that contain the dependencies
+ between the files.
+
15.2.2000 Goetz
Added access routine to attribute link of irnode in irnode.ch.
Added get_negated_pnc to irnode.ch.
10.2.2000 Goetz
Changed tests from comparing enums to comparing pointers. This is more
- efficient and reads better. e.g., instead get_irn_opcode == irm_And
+ efficient (is it?) and reads better. e.g., instead get_irn_opcode == irm_And
now get_irn_op == op_And
10.2.2000 Goetz