Folklore confirmed: Reducible flow graphs are exponentially larger
Many program analysis techniques used by compilers are applicable only to programs whose control flow graphs are reducible. Node-splitting is a technique that can be used to convert any control flow graph to a reducible one. However, as has been observed for various node-splitting algorithms., there can be an exponential blowup in the size of the graph. We prove that exponential blowup is unavoidable. In particular, we show that any reducible graph that is equivalent to the complete graph on n nodes (or to related bounded degree control flow graphs) must have at least 2(n-1) nodes. While this result is not a surprise, it may be relevant to the quest for finding methods of obfuscation for software protection.
compilers algorithms security languages theory computational complexity programming languages safety/security in digital systems