+ * 27.8.2004 Goetz
+ Classes need a flag comparable to visibility of entities.
+ This flag must express whether these classes are accessed from
+ outside, i.e., the fields must have a specific layout.
+ Further it should express whether the outside can allocate classes
+ of the type. Then we can determine whether the class can be turned
+ into a description class by, e.g., rta.
+
+ *
+
+ * 5.7.04 Goetz
+ in free_type: check the types that there is no pointer type that points
+ to the freed type. If so report error.
+
+ + 28.6.04 MMB
+ Div/Mod optimization for constants produces a result that will be optimized
+ again and again :-( Add a flag or a clever encoding so thios does not happen
+
+ + Goetz 10.6.04
+ Error in removing dead code:
+ In an if condition is a loop. We optimized the if condition to Jmp/Bad,
+ the loop now is unreachable. It should be removed by gigo or the like.
+ It remains in the representation as all blocks in the loop have a
+ valid predecessor, i.e., walking from End we find a true loop. We need
+ a pass walking and marking starting at the Start node to remove this loop.
+ Currently scc causes an segmetation fault for this situation.
+
+ + Goetz 10.6.04
+ Error in irscc: If we have an unreachable loop, or a loop
+ resulting from an exiting endless recursion, irscc finds
+ no tail ==> issues an assertion.
+
+ * Goetz 10.6.04
+ Error in interprocedural view: Endless recursions are lost.
+
+ * print routines for all enums!
+
+ * Add flag whether mode is associative, float modes are not!!
+
+ * 25.2.04 Goetz
+ Fix memory leak in irprog: free_ir_prog.
+ Fix memory leak in entity: free_entity_attrs
+
+ * 19.12.03 Goetz
+ Add state management for loops (consistent, inconsistent, invalid).
+
+ * 18.12.03 Goetz
+ It sucks that Call and CallBegin are different nodes. Change this!!!!
+ (as for Filter: Phi/Proj).
+
+ * 8.12. Goetz
+ Vorgaengernummern am Looptree auf Kanten ausgeben.
+
+ * 8.12.03 Goetz und Till
+ Alloc Semantik: Der Alloc Knoten koennte wissen, ob der
+ allozierte Speicher zu Null initialisiert ist. Dies nehmen
+ wir im Jack Java Compiler an, im CRS C Compiler jedoch nicht.
+ Ist das nicht explizit im Allok Knoten vermerkt, kann eine
+ Optimierung nur in Abhaengigkeit vom Frontend darauf aufbauen.
+ (z.B. heapanal nimmt any an, statt null.)
+
+ * 8.9.03 Boris
+ Wenn man in Arrays.java in der Methode ArrObject.f() die
+ ersten zwei prints auskommentiert und pass_array_test die
+ for-Schleife durch ein i = 0, while(true).. ersetzt, stürzt der
+ Compiler in get_Block_idom ab; der übergebene Zeiger ist ein
+ NULL-Zeiger.
+
+ * 15.9.03 Goetz
+ Wir haben ev. einen Fehler in scc gefunden: Matthias hat eine
+ Enlosrekursion a() { b(); }, b() { a(); } in Java implementiert.
+ Darauf ist in is_head die Assertion
+ assert(get_irn_uplink(pred) >= get_irn_uplink(root));
+ geflogen.
+
+ * 29.8.03 Goetz
+ Cast: irsimpletype: implement type analyses for one node. Test the
+ effort of that analyses. Add optimization to iropt that removes
+ Cast nodes.
+
+ * 22.8.2003 Goetz
+ Firm const nodes should have a type.
+ In jack all nodes are typed now, except the Const nodes. Only const from
+ tarval is typed.
+
+ * 14.8.2003 Goetz
+ Diverse dynamische arrays haben ein erstes, unverwendetes element. Z.B.
+ class members. Entfernen um Speicher zu sparen.
+ Ev. auch attribute an firm Knoten optimieren, per bitfield.
+
+ + 24.3.2003 Goetz
+ tarval requirements:
+ zu register_mode:
+ Ich haette ganz gerne
+ new_ir_mode(ident* name, int size, int alignment, mode_sort sort);
+ modecode ist der naechste frei int > maxenum.
+ Und der konstruktor sollte auch nach den zwei inits aufgerufen werden koennen.
+ was spricht dagegen? (die zwei inits stehen in init_firm(), ein benutzer kann
+ schwer dazwischen andere methoden aufrufen.)
+
+ * 24.3.2003 Goetz
+ tarval requirements:
+ - if overflow either return no tarval or return result of overflow
+ computation. Offer to output a warning. (configurable)
+ - Div: configure rounding (up/down) in init_firm, remark in each Div node
+ rounding sheme, default by initializations, pass rounding sheme
+ to tarval module
+ - impelement tarval_bitpattern
+ - make routine that outputs parts < 32 bits from any tarval
+ at given position in a C type that is exactly 32 bits.
+ For this test C types for their size or use int32 in integer.h
+ (is this standard C??)
+ - add routine that outputs the position of the largest set bit.
+
+ + 29.10.2002 Goetz
+ Representation of value compounds is not good, especially with
+ calls.
+
+ + 29.10.2002 Goetz
+ We can not represent bitfield members of structs in C.
+ Decision: generate explicit code for it, using shifts etc.
+ No special support.
+
+ * 29.10.2002 Goetz
+ If parameter variables are dereferenced they must be represented
+ by an entity in the stack frame type. We need a mechanism to
+ find out which fields were parameters so that the parameter
+ passing space on the frame can be used for the parameters.
+
+ + 19.11.2001 Goetz
+ SymConst mit ident taugt nicht: Wenn man z.B. die Prozedur kennt
+ sollte man die entitaet der Prozedur angeben koennen. Ermoeglicht
+ einfachere Navigation im Callgraphen.
+ --> Verwende Const mit entity.
+
+ + 13.11.2001 Goetz
+ Aufbau Exceptions tut nicht:
+ 1) mache exception handle block
+ 2) baue code auf, verzweige von fragile ops zu dem Handler
+ 3) mature exception block
+ --> Dann werden natuerlich die Werte am Ende der Bloecke mit den
+ fragile ops verwendet! Diese sind ev. nicht berechnet. Trifft
+ insbesondere auf memory zu ...
+ Loesung z.B.:
+ immExcBlock konstruktor. Neuer "mature" status. immExcBlocks duerfen
+ keine zyklen bilden. In immExcBlocks werden PhiKnoten sofort eingesetzt,
+ aber wie immBlock mit flexibler vorgaenger liste. add_in_edge ergaenzt
+ bei allen Phi Knoten dann sofort die neu bekannten Werte. Jetzt kann
+ genau der Status zum Zeitpunkt der Exception abgebildet werden.
+
+ + 7.11.2001 Goetz
+ Model Stack frame of a method as class type as for Global type?
+ (Class so that methods defined within methods can be represented?)
+ So far local entities are added to GlobalType.
+
+ + 7.11.2001 Goetz
+ Implement support for endless loops.
+ (Add Jump target block to a list if optimizing Cond nodes.
+ Extend walker to start walking at this list.
+ Extend dead node elimination to update and compact this list.
+ Extend inlining to inline this list.)
+
+ + 7.11.2001 Goetz
+ Implement checking whether layout is fixed when setting corresponding
+ flag. See firmtut, 3.1.4.
+ Maybe write a checker for the type information.
+
+ + 19.6.2001 Goetz
+ What happens if undefined values are allowed? See ircons.c,
+ grep for get_irg_start_block.
+
+ + 23.5.2001 Goetz
+ Does the array type contain a field with the array entity?
+ This entity should be constructed automatically with the array type.
+
+ * 23.5.2005 Goetz
+ All compound types need a flag saying whether the order of the members
+ must be conserved.
+
+ + 23.5.2001 Goetz
+ Add element_type to array constructor
+
+ + 15.3.2001 Goetz
+ mode, size in type: Wann gibt es einen mode, wann die size?
+ Kann man den mode aendern? Nicht bei prim, enum, pointer da
+ schon irreversibel in Programmcode umgesetzt. Die anderen
+ haben keinen mode. Reicht daher intern ein Feld? Muss man
+ in get_type_mode die typen asserten, und set_mode verbieten,
+ dafuer im enum konstruktor mode mitgeben?
+
+ + 14.3.2001 Boris
+ make dist should create an archive which has the directory libfirm/
+ as top-level
+=======
14.3.2001 Boris
- make dist should create an archive which has the directory libfirm/
as top-level [DONE:28.3.2001 Boris]
*********** old stuff ***********
-
- * Problem mit endlosen Schleifen loesen.
-
- + if_while_example ergibt Segmentation Fault da Bad Vorgaenger von Endblock.
- Optimierung des end blocks geaendert.
+ + Problem mit endlosen Schleifen loesen.
* Automatisches generieren und set_value der Argumente-projs in
new_ir_graph
- * Define and implement procedure-global extensions, e.g., the call graph.
+ + Define and implement procedure-global extensions, e.g., the call graph.
* Implement Confirm node: Added by optimization to annotate dataflow
edge with information as (value > 0). This improves dataflow analysis.
These nodes can be derived from Cmp nodes in conjunction with dataflow
information.
- * think again about implementation of boolean expressions (0<1) && (2<3)
-
- * Adapt tv to operate on the new modes, adapt libfirm, e.g., remove
- strange constructors.
+ + think again about implementation of boolean expressions (0<1) && (2<3)
+ Cast now possible
- * define Nodes for Rotate, Not, Minus, ShrA (Done.)
- Add evaluation routines to target value, extend optimization,
- verification to cover these nodes, extend irdump to cover them.
+ + Add evaluation routines for Rotate, Not, Minus, ShrA to target value,
+ extend optimization to cover these nodes.
* do we need remainder (Rem) operator?
different sign handling than Mod. How much processors???
==> viel Arbeit, nur Namenskonvention. Ev wenn target value modul
ausgetauscht.
+ + if_while_example ergibt Segmentation Fault da Bad Vorgaenger von Endblock.
+ Optimierung des end blocks geaendert.
+
+ + define Nodes for Rotate, Not, Minus, ShrA. Extend irdump, verification.
+
+ change impelmentation of type to use concept as in irnode.
Three common fields: kind, ident, mode !!! fill mode with
mode_none if applicable.