- 31 May, 2011 1 commit
-
-
Andreas Zwinkau authored
The remove_empty_blocks function must be used for a pre-walker, otherwise it might be called on blocks, which were optimized away. Consider infinite loops and the Keep edges: \ ___ B | \ / Empty / / Keep Edge! In this example, we must not call remove_empty_blocks on Empty, after we called it on B, but a post walker would do that.
-
- 30 May, 2011 6 commits
-
-
unknown authored
-
unknown authored
- renamed clear_link() to clear_link_and_mark_blocks_removable() - renamed optimize_conds() to optimize_ifs() - simplified has_*() implementations - made some walker POST walker - invalidate out edges - and add some doxygen docu - fixed some typos - adapt to firm indentation style
-
Matthias Braun authored
-
Christoph Mallon authored
-
Andreas Zwinkau authored
-
Matthias Braun authored
-
- 28 May, 2011 1 commit
-
-
Matthias Braun authored
-
- 27 May, 2011 16 commits
-
-
Michael Beck authored
-
Michael Beck authored
-
Michael Beck authored
-
Andreas Zwinkau authored
-
yb9976 authored
The get_n in the foreach loop is a macro and not a use of the function.
-
Matthias Braun authored
merge start-block successor with start-block in backend (necessary after equivalent_node_Block is gone)
-
Matthias Braun authored
-
Matthias Braun authored
-
Matthias Braun authored
-
Christoph Mallon authored
-
Christoph Mallon authored
-
yb9976 authored
-
yb9976 authored
-
yb9976 authored
-
Andreas Zwinkau authored
Since Bads have modes now the check for mode_X initialized the bitinfo, which results in incorrect reachability information.
-
Andreas Zwinkau authored
Broken with csmith 2.0.0 seed 909842313 in libFirm 1953ce88
-
- 26 May, 2011 11 commits
-
-
Matthias Braun authored
-
Matthias Braun authored
-
Andreas Zwinkau authored
-
Matthias Braun authored
convopt: fix potential bug with modulo shifts, improve cost calculation for optimizable conv(shift) combinations
-
Matthias Braun authored
-
Matthias Braun authored
-
Andreas Zwinkau authored
Fixes C/unkept_loop.c
-
Andreas Zwinkau authored
The functionality already existed, but this is necessary at more than on place.
-
Andreas Zwinkau authored
-
Andreas Zwinkau authored
-
Andreas Zwinkau authored
Cond / \ projA projB => Jmp Bad \ / \ / block block This optimization might produce more empty blocks to remove, which in turn might enable more Cond=>Jmp opts. So we need to perform this until nothing changes anymore. Fixes x86code/cfopt.c Breaks C/unkept_loop.c, because ifconv cannot handle Bads
-
- 25 May, 2011 5 commits
-
-
uqxyd authored
-
Andreas Zwinkau authored
This code does nothing, because the previous commit removed the equivalent_node_Block function.
-
Andreas Zwinkau authored
Fixes opt/localopts2 Because of Phis blocks cannot be equivalent. The cfopt must do all block merging. For example, consider the case where block A has one predecessor block B, which contains a Jmp. Naively, we might exchange(A,B). However, A might contain a Phi with one operand, then the graph is broken afterwards, since we move the Phi into B as well.
-
Andreas Zwinkau authored
-
Andreas Zwinkau authored
-