Hi,
This series of patches solves few issues we found with Thumb-2
conditional insns. These fixes include:
1) Split if_then_else into cond_execs to generate only required minimum
of IT-blocks;
2) Grouping conditional insns of same INSN_PRIORITY to avoid excessive
splitting of IT-blocks;
3) In if-conversion, set the maximum number of converted insns in a
branch to 4, to match the limit for IT-block;
4) Don't perform if-conversion, if one of branches has significantly
greater probability then the other;
5) Swap passes peephole2 and if_after_reload in order to generate more
conditional insns (this one is actually more like a problem report, than
a fix).
The combined effect on code size from patches 1-4 on SPEC2K INT with -O2
is as follows:
Test bytes
name saved
--------------
gzip 4
vpr 0
gcc 100
mcf 4
crafty 16
parser 0
eon 8
perlbmk 8
gap 44
vortex 8
bzip2 16
twolf 24
--------------
Total: 232
Do you think some of this patches are OK for trunk?
--
Best regards,
Dmitry