I'm working on decompiling x86-64 binary programs, using branches to
rebuild a control-flow graph and looking for loops. I've found a
significant number of irreducible loops in gcc-produced code
(irreducible loops are loops with more than one entry point), especially
in -O3 optimized binaries, even when the source code is "well"
structured. My experiments are done mainly on the SPEC CPU-2006 benchmarks.
My question is: where do these irreducible loops come from? Which
optimization pass leads to irreducible regions? Thanks in advance for
any pointer.
-- Alain.
- Irreducible loops in generated code Alain Ketterlin
-