is_SubClass_of() check only once for transitive closure state
[libfirm] / TODO
diff --git a/TODO b/TODO
index 7e864bf..3800901 100644 (file)
--- a/TODO
+++ b/TODO
-  * 29.10.2002 Goetz
+  * 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
+  + 29.10.2002 Goetz
     We can not represent bitfield members of structs in C.
-    A struct can have fields with n bits, n e.g. set to 3...
+    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
     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
+  + 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
+  + 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
+  + 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
+  + 19.6.2001 Goetz
     What happens if undefined values are allowed?  See ircons.c,
     grep for get_irg_start_block.
 
-  * 23.5.2001 Goetz
+  + 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.
 
     All compound types need a flag saying whether the order of the members
     must be conserved.
 
-  * 23.5.2001 Goetz
+  + 23.5.2001 Goetz
     Add element_type to array constructor
 
-  * 15.3.2001 Goetz
+  + 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
     in get_type_mode die typen asserten, und set_mode verbieten,
     dafuer im enum konstruktor mode mitgeben?
 
-  * 14.3.2001 Boris
+  + 14.3.2001 Boris
     make dist should create an archive which has the directory libfirm/
     as top-level
 =======
 
 *********** old stuff ***********
 
* Problem mit endlosen Schleifen loesen.
+ 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)
+ + think again about implementation of boolean expressions  (0<1) && (2<3)
+   Cast now possible
 
* Add evaluation routines for Rotate, Not, Minus, ShrA to target value,
+ Add evaluation routines for Rotate, Not, Minus, ShrA to target value,
    extend optimization to cover these nodes.
 
  * do we need remainder (Rem) operator?