Patent ID: 8312434
Filing Date: 2012-11-13
Classification: G06F

Abstract:
1. A method comprising: receiving an identifier of a storage location, wherein the storage location is accessed by execution of a program, wherein the program comprises a plurality of statements divided into a plurality of blocks; in response to the receiving the identifier of the storage location, determining a first source statement in the program that must have written to the storage location and a second source statement in the program that might have written to the storage location, wherein the determining is performed while the execution of the program is halted at a halted statement in a halted block, and wherein the first source statement and the second source statement are different than the halted statement; presenting a first identifier of the first source statement, an indication that the first source statement must have written to the storage location, a second identifier of the second source statement, and an indication that the second source statement might have written to the storage location, in response to the determining; reading a must-define set and a may-define set for the storage location, wherein the must-define set and the may-define set were created by a compiler that compiled the program, wherein the may-define set comprises a first plurality of identifiers of the statements in the program that the compiler calculated have a probability of writing to the storage location of greater than zero, and wherein the must-define set comprises a second plurality of identifiers of the statements in the program that the compiler calculated have a probability of writing to the storage location of equal to one; and wherein the determining further comprises for each block in a control flow graph that represents all paths through the plurality of blocks that are possible for the execution of the program to traverse, calculating a defined-locally set for the block, wherein the calculating the defined-locally set further comprises adding to the defined-locally set for the block the identifiers of the statements that are in the block, are also in the may-define set, and no later statement in the block is in the must-define set, and for each block in the control flow graph, calculating a mask for the block, wherein the calculating the mask for the block further comprises setting the mask for the block to be true if the block contains a statement that is in the must-define set and setting the mask for the block to be false if the block does not contain any of the identifiers of the statements that are in the must-define set.