*** empty log message ***
[libfirm] / Changes
1   5.7.2000 Goetz
2   Removed strange block struct and constructor from ircons.c.
3   Moved routines for automatic Phi construction from irgmod to ircons.
4   Sorted functions in ircons to reflect the different interfaces.
5   Renamed dataseg to globals to be conformant with documentation.
6   Added conservation of current_ir_graph to irgopt.c.
7   Corrected bug in Makefiles: wrong path to directory ./inlude.
8
9   4.7.2000 Goetz
10   Commented a whole bunch of stuff, e.g. in ircons.h  (Procedure to construct)
11   We should change the naming of the Block constructor.
12
13   4.7.2000 Goetz
14   Removed acces routines to attr. "closed" of Block.
15
16   4.7.2000 Goetz
17   Removed second implementation of new_ir_node from ircons and some comments
18   concerned with the now resolved cyclic dependency.
19   Fixed some bugs in irgopt so that the compilation goes through.
20
21   31.5.2000 Chris
22   Removed some files from the archive, after dependencies and usage are
23   checked:
24   - 'ir/common/strerror.c'
25   was nowhere used;
26   - 'ir/ident/xx_ident.h'
27   an empty file, only included by 'ident.c', but never used;
28   - 'ir/tv/label.c' and
29   - 'ir/tv/label.h'
30   contained a numeric counter;
31   The files were included in 'tv.h' and implemented in 'tarval.c'. The two
32   functions 'tarval_label' and 'tarval_forall_labeled' were also never used.
33   In the old fiasco compiler, the label thing is used in the backend.
34   Search for 'babil' to see the usage.
35   Also removed the two attributes 'lab' and 'used' in the tarval struct.
36
37   26.5.2000 Chris
38   Moved the 'new_ir_node' constructor from ircons.* to irnode.* and fixed
39   afterwards some recursive includes, so libfirm works again.
40
41   2+3.2000 Goetz
42   Did a lot of changes, which I never commented until now (4.7.00).
43
44   * Added new result to Start node: Pointer to global data segment.
45   * Extended Semantics of SymConst node to represent information for the
46     linker.
47   * Added arithmeitc nodes (Shrs, Minus ...)
48
49   Rearranged the directory structure and adjusted the makefiles.
50   The directories contain:
51   ir:       everything for the intermediate representation (better: src?)
52     /ir:    the ir itself, and standard optimizations.
53     /tv:    the target value module
54     /tr:    the type and entity representation
55     /adt:   abstract data types
56     /common:  stuff needed by all other dirs
57     /debug: debugging Unterstuetzung
58     /ident:
59   include:  external files needen as includes
60   testprograms: examples to test the lib.
61
62   The makefiles generate files with extension .d that contain the dependencies
63   between the files.
64
65   15.2.2000 Goetz
66   Added access routine to attribute link of irnode in irnode.ch.
67   Added get_negated_pnc to irnode.ch.
68
69   14.2.2000 Goetz
70   Added an iterator in iropt that calls the optimization for all nodes.
71   Copied optimize's code to optimize_in_place and removed deallocations.
72   Made set_irn_n in irnode.c public.
73   Added Bad as possible cfg predecessor in is_cfg_node in irnode.  Bads
74   are allowded as cfgpredecessors to represent dead "incoming" control
75   flow.
76   Added call to optimize_in_place in mature_block. Is this useful?
77
78   10.2.2000 Goetz
79   Changed tests from comparing enums to comparing pointers. This is more
80   efficient (is it?) and reads better.  e.g., instead get_irn_opcode == irm_And
81   now get_irn_op == op_And
82
83   10.2.2000 Goetz
84   Compared equivalent_value to the one in the original fiasco.
85   Added a test in case iro_And.
86   Changed implementation of iro_Div. Added routines turn_into_tuple
87     and set_irn_op() in irgmod/irnode.
88   Changed implementation of irn_Minus (although commented out).
89   Now all features are ported or documented for this function.
90
91   10.2.2000 Goetz
92   Compared computed_value to the one in the original fiasco.
93   Added one further optimization in case iro_Proj.
94   Now all features are ported for this function.
95
96   9.2.2000 Goetz
97   Updated comments in ircons.h.
98
99   9.2.2000 Goetz
100   Changed possible attribute of SymConst from type_class to type.
101   SymConst size could be the size of a union, array, ...
102
103   9.2.2000 Goetz
104   Implemented two dumpers that dump type information and a graph with
105   type information.
106
107   9.2.2000 Goetz
108   Implemented a walker that walks over the type informatin that can
109   be reached from an ir node.
110   Added routine get_kind(firm_thing) in common.h, Added file common.c.
111   Added files typewalk.ch and routines to irdump.
112   Added visited flags and initialization to entity and all types.
113   Implemented some of the missing access routines in type.c, entity.c
114
115   9.2.2000 Goetz
116   Implemented constructor for ShrA.
117   Added type struct.
118   Added routine that iterates the graph and verifies all nodes.
119   Added Phi_in stack to irgraph.  This allows to build several
120     graphs at once with respect to the Phi building algorithm.
121
122   9.2.2000 Goetz
123   Implemented dumper for control flow graphs.  Changed irr_* and dead_*
124   examples to dump cfg.
125
126   8.2.2000 Goetz
127   Implemeted explicit stack for the Phi node generation.  See ircons.c.
128
129   8.2.2000 Goetz
130   added include string.h in xoprintf.c to get rid of warning:
131   implicit declaration of function `bcopy'
132
133   7.2.2000 Goetz
134   Worked on iropt.c:
135   Added more cases to equivalent_node.
136   Portet gigo, identify, identify_remember.
137   The set/pset library can not handle several hash tables.  At least,
138   compiling several procedures causes a segmentation fault during access
139   to the tables (oo_program_example).  Need to work on this.
140   transform_node still needs to be ported.
141   some cases in equivalent_node are still missing.
142
143   To get it running I had to remove the call to optimize in the
144   new_Block constructor. It can only be called when the Block is
145   mature.
146
147   7.2.2000 Goetz
148   Introduced a walker that walks only over blocks.  The asserts
149   might be too strict for general graphs, but so far it works.
150   For the walker I introduced an additional flag in the attribute
151   of Blocks, an a global block_visited variable (in irgraph.h).
152   Furhter I modularized dump_ir_node, implemented dump_ir_graph
153   with the existing walker, and added new routines to output a
154   basic block graph.
155   Changed the examples to call the new dump routine.
156
157   7.2.2000 Goetz
158   Added auxiliary routines to ir_node:
159   skip_Proj, skip_Nop, is_Bad ...
160   Changed access routines to use get_irn_n instead of explicit array
161   accesses. Changed get_irn_n to call skip_Id, so that the access routines
162   never will return Id nodes.
163
164   3.2.2000 Goetz
165   Repaired Phi computation, changed new_r_Phi_in.  Added test program to
166   test irregular controlflow.
167
168   2.2.2000 Goetz
169   Updated optimizations computed_value and equivalent_node to new
170   Syntax of FIRM nodes and to use access routines.
171   Added routine skip_Proj in irnode.
172
173   2.2.2000 Boris Boesler
174   Added files irgwalk.c and irgwalk.h. They include a simple function to
175   traverse an ir graph and execute pre and post functions to current node.
176
177   1.2.2000 Goetz
178   Added arrays with parameters and result types to the type informtion
179   of a procedure.  This is needed for the code generation.  Also added
180   the corresponding access routines.
181   Adapted the testprograms.
182
183   1.2.2000 Goetz
184   Found a bug / complication:  the call order
185     get_value   (makes Phi0, put's it into graph_arr)
186     set_value   (overwrites Phi0 in graph_arr)
187     mature_block (upgrades Phi0, puts it again into graph_arr, overwriting
188                   the proper value.)
189   fails.  Added test wether graph_arr is already set in phi_merge.
190
191   Added tons of comments to explain Phi generation -- the stack hack.
192
193
194   27.1.2000 Goetz
195   irdump now outputs the pnc_number for projs of Cmp nodes.
196   Added routine to access the pnc_string.
197
198   27.1.2000 Goetz
199   Added result "dataseg" to Start node, with all it's consequences.
200   We need this for the compiler lab to translate global variables.
201   Now they can be selected from the data segment, and the start
202   node supplies the pointer to this segment.
203   These changes are guarded by preprocessor variable UEBPRAKT in
204   common.h
205   Changed files: common.h, irgraph.ch, irnode.h
206
207   26.1.2000 Goetz
208   Testprograms:
209   removed array_example, added array-heap_example and
210   array-stack_example and adapted makefile.
211   ir_lib:
212   Entity now also allows type_method as owner. This is to model
213   the stack, Sel nodes that select a variable (array) from the
214   stack need an entity that describes what they select.  This
215   entity gets the type of the enclosing procedure as owner.
216
217   24.1.2000 Chris
218   Added future access routines in `irmode.[ch]' as comments,
219     that all attributes in the ir_mode struct can be user-defined.
220   Added access routines in `irgraph.[ch]', for all attributes.
221
222   22.1.2000 Chris
223   Moved verify routines from `irgraph.[ch]' to own files `irvrfy.[ch]'.
224   Added `irvrfy.[ch]' to MAKEFILE
225   Added "inline" before access routines in `irnode.h', that no warnings
226     will appear furthermore.
227   Added three more access routines in `irmode.[ch]':
228         struct tarval *get_min_of_mode (ir_mode *mode);
229         struct tarval *get_max_of_mode (ir_mode *mode);
230         struct tarval *get_null_of_mode (ir_mode *mode);
231
232   21.1.2000 Goetz
233   Adaption of Alloc, Sel and Entity to new types:
234     Changed array_example to use type instead of type_class.
235     Changed entity to allow all types as owner instead of
236       only type_class.  Added routine "assert_legal_owner_of_ent(type* type)".
237     Changed alloc to allow allocating variables of any type instead of
238       only type_class.
239     Adapted all testprograms to avoid warnings.
240
241   removed dtest ... from Makefile, replaced by test.
242
243   20.1.2000 Goetz
244   Added "run" to makefile, added array_example to makefile of testprograms.
245   Corrected testprogram array
246   Changed assert in irvrfy -- Conv.
247   Started Change log.
248   Started TODO log.