Method of analyzing definitions and uses in programs with pointers and aggregates in an optimizing compiler
US5790866A · kind A · utility
Assignee
Inventor
Key dates
| Filing date | Feb 13, 1995 |
| Grant date | Aug 4, 1998 |
| Priority date | — |
| Expiry date | Feb 13, 2015 |
Classification
- Technology area (CPC G)Physics
- CPC primaryG06F8/4435
- WIPO fieldComputer technology
- WIPO sectorElectrical engineering
Abstract
A method for analyzing and optimizing programs that contain pointers and/or aggregates, such as found in the languages C, C++, FORTRAN-90, and Ada. The method applies to storage locations (lvalues) and values (rvalues) computed by expressions. Data-flow analysis is performed on two levels. The bottom level determines when an rvalue computed at one point in a program is the same if recomputed at a later point in the program. The top level computes reaching definitions, based upon information provided by the bottom level. Each destination lvalue may be designated by an arbitrary rvalue (pointer-expression). Splitting of data-flow analysis into two levels allows computation of reaching definitions that involve assignments to lvalues with designating rvalues that are arbitrary expressions. Furthermore, for aggregate lvalues, which themselves may contain components that are pointers to other aggregates, data-flow analysis is done on a component-by-component basis. Data-flow analysis is then used to forward-substitute definitions and remove "dead" assignments.
Source: USPTO / EPO open patent data. Objective bibliographic and citation counts.