Patent ID: 8806463

Claim:
A method comprising: determining, using a computing device, module grouping information for each source code module of a first executable program module by: designating each source code module as a primary module of a module group; and identifying other source code modules as auxiliary modules of the module group, each identified auxiliary modules defining a callee procedure that is called by a caller procedure in the primary module of the module group, wherein identifying the auxiliary modules includes, for each procedure in the primary module: identifying all outgoing edges of the procedure of the auxiliary module that have an edge frequency count exceeding a threshold value, each of the outgoing edges representing a procedural call from the callee procedure to another procedure; and for each of the identified outgoing edges: identifying, using the computing device, a callee procedure associated with the identified outgoing edge; identifying, using the computing device, a defining source code module of the identified callee procedure; and designating the identified defining source code module as an auxiliary module of the primary module if the identified defining source code module has not already been so designated; performing inter-procedural optimization, using the data processing device, based on the module grouping information to generate object code modules; and generating, using the data processing device, a second executable program module based on the object code modules.