Method and apparatus for compiling source code using symbolic execution
First Claim
1. A method of compiling a computer program, the program comprising a plurality of operations having a sequence, the method comprising:
- extracting from the computer program, information describing the operations and the sequence of the operations and storing the extracted information as a data structure;
identifying operations in the computer program which involve index expressions;
symbolically executing the operations in the computer program which involve index expressions, thereby producing information describing memory accesses; and
identifying the operations which can be executed in parallel based on the information describing memory accesses.
7 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for optimizing the compilation of a computer program by exposing parallelism are disclosed. Information describing the operations in the program and their sequence is extracted and stored in a data structure. The operations in the program which involve index expressions are identified and symbolically executed, producing information describing the memory accesses by the program. Operations which can be executed in parallel are identified based on the information describing memory accesses. The program is interrogated with questions in a question data structure relating to how the program accesses memory. The answers to the questions are accumulated in index sets and back annotated into the question data structure.
65 Citations
20 Claims
-
1. A method of compiling a computer program, the program comprising a plurality of operations having a sequence, the method comprising:
-
extracting from the computer program, information describing the operations and the sequence of the operations and storing the extracted information as a data structure;
identifying operations in the computer program which involve index expressions;
symbolically executing the operations in the computer program which involve index expressions, thereby producing information describing memory accesses; and
identifying the operations which can be executed in parallel based on the information describing memory accesses. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus for compiling computer code, the apparatus comprising:
-
first signal flow analysis means for creating a signal flow data structure for index expressions used by the computer code, wherein the first signal flow analysis means comprises;
means for identifying an index path in the computer code, the index path comprising operations involved in computing indices used in memory accesses by index expressions;
symbolic execution means for executing the index path, thereby extracting information relating to index expression memory accesses. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A method of exposing parallelism in a computer program, comprising:
-
extracting from the computer program, information describing a plurality of operations specified by the computer program, and the sequence of the operations and storing the extracted information as a data structure;
identifying operations in the computer program which involve at least non-linear index expressions;
symbolically executing the operations specified by the computer program which involve at least non-linear index expressions, thereby producing information describing memory accesses; and
identifying the operations which can be executed in parallel based on the information describing memory accesses. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification