X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=TODO;h=3800901437f076b3438dc40d54d1b52c2000fd90;hb=910768f7422310c3e2a6588f32dff7729fc4768c;hp=236136910959026f2bce579f202ff311801c55b3;hpb=8190061958bd836a6350ba84feb7d55940f535cb;p=libfirm diff --git a/TODO b/TODO index 236136910..380090143 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,197 @@ + * 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] @@ -5,30 +199,23 @@ *********** 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??? @@ -69,6 +256,11 @@ Propositions by Boris, 5.3.2001: ==> 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.