basic block computer program constant folding depth-first search exception handling flowchart group representation halting problem infinite loop jump threading loop-invariant code motion reachability static code analysis unreachable code