In most compilers, the decision to optimize all or part of a program is made by a user, usually by setting an option or flag. An alternate is to automate the decision, so that optimization is automatically triggered when certain criteria are met.
Suggest some criteria that could be used to trigger optimizations. How would this change the optimization process?
Specify the set of flowgraph edges that must be added to a C function because it includes a call to setjmp().
Specify the set of flowgraph edges that need to be added if the program uses exception handling. What if these edges are not added? You may chose the exception handling mechanism of you favorite language in answering this question.
On page 183, the text says regarding the algorithm in Figure 7.15 (immediate dominators): "the greatest efficiency is achieved by having the for loop that is marked with an asterix process the nodes of the flowgraph in depth-first order". Why is this the case? Support your argument with an example.
Give an example of a procedure whose flow graph is irreducible. Transform the program (using node splitting) to make the flow graph reducible.