Date: Tue, 10 Dec 1996 22:59:21 GMT Server: NCSA/1.4.2 Content-type: text/html Last-modified: Fri, 22 Nov 1996 03:05:28 GMT Content-length: 2848 Michael Ernst's compilation page

Compilation

My primary research goal is improving programmer productivity, and my chief research area is compilation. However, I am also interested in other topics from game theory to intellectual property.

Microsoft's program analysis group aims to improve programming tools, primarily through the use of a new intermediate representation, the value dependence graph (VDG). The VDG promises to make optimization easier and more efficient, at the cost of slightly more involved code generation. We have a prototype programming environment and compiler for C which use the VDG.

Source information

Our compiler generates information about source statements corresponding to intermediate graph nodes, and maintains this mapping during transformations. This permits effective queries and feedback based on the original program. A paper describing the details is forthcoming.

Slicing

A static slicer for visualizing dependences is integrated with our programming environment. This integration permits the slicer to take advantage of analyses and and optimizations performed by the compiler, resulting in improved slices. The expression-oriented nature of the slicer also improves programmer control and the precision of the resulting slices. Executable slices can be created without constraints based on the syntax of the original program or language.

Debugging

Implementation of a source-level debugger for optimized programs is underway. The debugger will take advantage of the features of the VDG to provide the programmer with fine control over the execution of the program and to avoid misleading the programmer about the computation which is actually ocurring.

Serialization

"Serializing Parallel Programs by Removing Redundant Computation" (also see the abstract) takes a new approach to the old problem of compiling programs to run fast on both serial and parallel machines. Exclusive focus on parallelization of serial programs is misguided; we should work to serialize parallel programs, because that is easier, more natural, and produces better results for a certain class of programs. The paper also discusses new forms of common subexpression elimination.

Back to Michael Ernst's home page.