http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48649
--- Comment #6 from Popielewicz <vasco at icpnet dot pl> 2011-10-18 07:25:24 UTC --- OK. Because I suspected, that IRA could help I have decided to port 4.4.6, the last with coff. Another motivation was tree-vectorizer. I have discovered immediately , that purge-dead-edges bug appears. I have found in one bug description for higher releases the solution for something similar and it solved the problem for a while . Namely I have copied the function sel_bb_empty_or_nop_p from release 4.6 , added a line of code(EDGE_COUNT etc) , and then commented out one gcc_assert in basic_block.h. The problem seems to be related with single succesors etc. As a result the optimizition flag -O2/-O3 etc works, at least for simpler programs. What is more important even ftree-vectorize(enabled also by -O3) works(shown by ftree-vectorizer-verbose=n) , but for small programs. For bigger programs remove-insn at emit-rtl.c bug appears. usable solution is to compile small functions with tree loops with gcc-4.4.6 and the rest of the programs with stable gcc-3.2.3.