Revision 1 as of 2006-07-13 00:16:29
converted to 1.6 markup
|Deletions are marked like this.||Additions are marked like this.|
|Line 1:||Line 1:|
|In addition to ["TreeOptimizers"], ["GCC"] also performs various optimizations on its internal ["RTL"] representation.||In addition to [[TreeOptimizers]], [[GCC]] also performs various optimizations on its internal [[RTL]] representation.|
|Line 10:||Line 10:|
| * ["Improve instruction selection"]
* ["Clean up insn notes"]
* ["Analyze what effect PR16967 has on CPROP after PRE"]
* ["Make the representation more compact"]
* ["RTL hooks"]: there are lots of places where different passes do slightly
| * [[Improve_instruction_selection]]
* [[RTL_hooks]]: there are lots of places where different passes do slightly
Passes and their technology (incomplete, feed me):
- if-conversion ([gccsource:ifcvt.c]): Runs before and after reload, does not work in cfglayout mode,
- does not use [gccsource:df.c].
- PRE, CPROP, hoisting ([gccsource:gcse.c]): Does not use cfglayout mode or [gccsource:df.c].
CSE: it is a mess. In 4.2 we should be able to [make it work on EBBs||Replacements for CSE path following], but 6000 lines of code will remain there! It has many ad hoc loops that look for special cases and are probably not useful anymore (because of tree optimization, or using [gccsource:simplify-rtx.c]).
RTL_hooks: there are lots of places where different passes do slightly
- different things,
- CSE and GCSE have some functions in common (e.g. exp_equiv_p).
- A lot of nice simplifications in combine could be made generic by
- hookizing expand_compound_operation and make_compound_operation.
- There are some more simplifications that can be moved from combine
- to [gccsource:simplify-rtx.c]
- Many pattern matching loops in CSE could be replaced by assigning nonzero_bits values to each reg_qty.
- Could be worth creating a one_bits hook (similar to nonzero_bits, and useful for additional simplifications).
Better handling of the [control flow graph||basic block graph].