Partitioning optimizations in an optimizing compiler
First Claim
1. A method for operating a compiler program in a computer system, said computer system utilizing said compiler program to execute a specified procedure for improving an intermediate language version of a computer program under development, comprising the steps of:
- a) developing a control flowgraph representing a largest strongly connected region in said program under development;
b) by examining code sequences in said strongly connected region, determining an amount of memory of said computer system required to perform said specified procedure to said strongly connected region;
c) comparing said amount of memory determined in step b) to a predetermined computer system memory usage limit to determine if said amount of memory determined in step b) exceeds said predetermined computer system memory usage limit, thereby denoting an incapability of said computer system of applying said specified procedure to said strongly connected region;
d) if said amount of memory determined in step b) does not exceed said predetermined limit, applying said specified procedure to said strongly connected region examined in step b);
otherwisee) if said amount of memory determined in step b) exceeds said predetermined limit, executing steps b)-d) to a next largest previously unselected strongly connected region in said control flowgraph.
1 Assignment
0 Petitions
Accused Products
Abstract
A computer program to be compiled is optimized prior to carrying out the final compilation. Subgraphs within the program are identified and examined for optimization beginning with the entire program as the largest subgraph. The number of entities in each subgraph which are relevant to each dimension of arrays used to represent data flow equations is determined. Next, the amount of memory required to contain the arrays is determined. If that memory requirement is within a predefined memory usage limit for the compilation, then a specified procedure of the compilation process is applied. If the memory requirement to contain the arrays exceeds the predefined memory usage limit for the compilation, the process is repeated for successively smaller subgraphs within the program in an attempt to find a subgraph to which the memory limits allow application of the specified procedure.
55 Citations
7 Claims
-
1. A method for operating a compiler program in a computer system, said computer system utilizing said compiler program to execute a specified procedure for improving an intermediate language version of a computer program under development, comprising the steps of:
-
a) developing a control flowgraph representing a largest strongly connected region in said program under development; b) by examining code sequences in said strongly connected region, determining an amount of memory of said computer system required to perform said specified procedure to said strongly connected region; c) comparing said amount of memory determined in step b) to a predetermined computer system memory usage limit to determine if said amount of memory determined in step b) exceeds said predetermined computer system memory usage limit, thereby denoting an incapability of said computer system of applying said specified procedure to said strongly connected region; d) if said amount of memory determined in step b) does not exceed said predetermined limit, applying said specified procedure to said strongly connected region examined in step b);
otherwisee) if said amount of memory determined in step b) exceeds said predetermined limit, executing steps b)-d) to a next largest previously unselected strongly connected region in said control flowgraph. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for operating a compiler program in a computer system, said computer system utilizing said compiler program to execute a specified procedure for improving an intermediate language version of a computer program under development, comprising the steps of:
-
a) developing a control flowgraph representing a largest strongly connected region in said program under development, said largest strongly connected region being a parent strongly connected region and including one or more nested strongly connected regions; b) defining said largest strongly connected region as a first strongly connected region; c) by examining code sequences in said first strongly connected region, determining an amount of memory of said computer system required to perform said specified procedure to said first strongly connected region; d) comparing said amount of memory determined in step c) to a predetermined computer system memory usage limit to determine if said amount of memory determined in step c) is less than said predetermined computer system memory usage limit, thereby denoting a capability of said computer system of applying said specified procedure to said first strongly connected region; e) if said amount of memory determined in step c) is less than said predetermined limit, applying said specified procedure to said first strongly connected region examined in step c) and determining if said first strongly connected region is nested within a first parent strongly connected region in said control flowgraph, and if so; f) determining if said first strongly connected region is nested within a first parent strongly connected region in said control flowgraph, and if so; f) defining said first parent strongly connected region as said first strongly connected region and repeating steps c)-e); and g) if said amount of memory determined in step c) is greater than said predetermined limit, defining a next largest previously unselected strongly connected region in said control flowgraph as said first strongly connected region and repeating steps c)-f).
-
Specification