Patent ID: 7516448

Claim:
A method, operable in a computer system, for improving compile speed in irreducible code regions within a computer program, each of said code regions composed of a plurality of code blocks, each of said plurality of code blocks containing at least one element, the method comprising: determining which of said code regions is irreducible; selecting, in turn, each of said code regions determined to be irreducible; setting a plurality of directional indicators indicating a current processing direction, an upward processing direction and a downward processing direction; performing an optimization process on the selected code region, said optimization process being performed on said selected code region in an optimization direction selected as one of a top-to-bottom and a bottom-to-top processing direction, based on said current processing direction indicator, wherein said optimization process determining characteristics of at least one of said at least one element in said plurality of code blocks; determining an effect of a change of the characteristics of one of said at least one element in a current code block upon characteristics of at least one of said at least one element in another code block; propagating knowledge of said effect to directly adjacent code blocks; determining a next processing direction based upon a direction of said adjacent code blocks, with respect to said current code block, effected by changes in said current code block, wherein said determined next processing direction being selected from said upward processing direction and said downward processing direction; determining the direction of a next optimization pass based on said current processing direction indicator and said determined direction of next processing; performing said next optimization pass on the selected code region based on the determined next processing direction; and completing the optimization process when the determined direction of next processing, as specified by the upward processing direction and said downward processing direction, fails to specify a direction of processing.