6 * SSA is broken by simplify_loads() & branches rewriting/simplification
7 * attributes of struct, union & enums are ignored (and possibly in other
9 * add support for bitwise enums
13 * document the extensions
15 * document the limitations of modifying ptrlists during list walking
16 * document the data structures
17 * document flow of data / architecture / code structure
21 * if a variable has its address taken but in an unreachable BB then
22 its MOD_ADDRESSABLE may be wrong and it won't be SSA converted.
23 - let kill_insn() check killing of SYMADDR,
24 - add the sym into a list and
25 - recalculate the addressability before memops's SSA conversion
26 * bool_ctype should be split into internal 1-bit / external 8-bit
30 * there are more than 50 failing tests. They should be fixed
31 (but most are non-trivial to fix).
35 * GCC's -Wenum-compare / clangs's -Wenum-conversion -Wassign-enum
36 * parse __attribute_((fallthrough))
37 * add support for format(printf()) (WIP by Ben Dooks)
38 * make use of UNDEFs (issues warnings, simplification, ... ?)
39 * add a pass to inline small functions during simplification.
43 * the current way of doing CSE uses a lot of time
47 * use better/more systematic use of internal verification framework
51 * OP_SET should return a bool, always
52 * add IR instructions for va_arg() & friends
53 * add a possibility to import of file in "IR assembly"
63 * add some basic register allocation
64 * add a pass to transform 3-addresses code to 2-addresses
65 * what can be done for x86?
67 Longer term/to investigate
68 --------------------------
69 * better architecture handling than current machine.h + target.c
70 * attributes are represented as ctypes's alignment, modifiers & contexts
71 but plenty of attributes doesn't fit, for example they need arguments.
72 * format(printf, ...),
74 * assume_aligned(alignment[, offsert])
75 * error("message"), warning("message")
77 * should support "-Werror=..." ?
78 * All warning messages should include the option how to disable it.
81 "warning: Variable length array is used."
83 should be something like:
85 "warning: Variable length array is used. (-Wno-vla)"
87 * ptrlists must not have elements removed while being iterated;
88 this should somehow be enforced.
89 * having 'struct symbol' used to represent symbols *and* types is
90 quite handy but it also creates lots of problems and complications
91 * Possible mixup of symbol for a function designator being not a pointer?
92 This seems to make evaluation of function pointers much more complex
94 * extend test-inspect to inspect more AST fields.
95 * extend test-inspect to inspect instructions.