Results 1 -
4 of
4
A Practical Framework for Demand-Driven Interprocedural Data Flow Analysis
- ACM Transactions on Programming Languages and Systems
, 1998
"... this article, we present a general framework for developing demand-driven interprocedural data flow analyzers and report our experience in evaluating the performance of this approach. A demand for data flow information is modeled as a set of queries. The framework includes a generic demand-driven al ..."
Abstract
-
Cited by 52 (10 self)
- Add to MetaCart
this article, we present a general framework for developing demand-driven interprocedural data flow analyzers and report our experience in evaluating the performance of this approach. A demand for data flow information is modeled as a set of queries. The framework includes a generic demand-driven algorithm that determines the response to a query by iteratively applying a system of query propagation rules. The propagation rules yield precise responses for the class of distributive finite data flow problems. We also describe a two-phase framework variation to accurately handle nondistributive problems. A performance evaluation of our demand-driven approach is presented for two data flow problems, namely, reaching-definitions and copy constant propagation. Our experiments show that demand-driven analysis performs well in practice, reducing both time and space requirements when compared with exhaustive analysis.
Scalable Procedure Restructuring for Ambitious Optimization
, 2000
"... Compiler optimization of computer programs is necessary to exploit the features of the target architecture while masking the details of the architecture from the programmer. The continuing trends toward instruction-level parallel computers and larger programs mean that scalable optimization techniqu ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Compiler optimization of computer programs is necessary to exploit the features of the target architecture while masking the details of the architecture from the programmer. The continuing trends toward instruction-level parallel computers and larger programs mean that scalable optimization techniques which increase available parallelism simultaneously with controlling compilation time and memory usage are required. Well-known solutions include using procedure inlining and cloning to increase the instructionlevel parallelism and specificity of analysis in a program, and a region-based compilation framework to improve code quality while bounding some optimization costs. However, these techniques are inherently unscalable because all can lead to excessive compile time memory usage and code growth. My hypothesis is that procedure boundaries and calling relationships can be restructured to improve optimization opportunities in a scalable way. In particular, I propose to investigate compil...
Data-Flow Analysis for Hot-Spot Program Optimization
"... Abstract. A hot spot of a program is a program region, whose execution time crucially impacts the overall execution time of the program. A hot spot can often be optimized without fully analyzing the whole program. This is supported by approaches for demand-driven data-flow analysis. Particularly suc ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. A hot spot of a program is a program region, whose execution time crucially impacts the overall execution time of the program. A hot spot can often be optimized without fully analyzing the whole program. This is supported by approaches for demand-driven data-flow analysis. Particularly successful in practice turned out to be an approach based on reverse data-flow analysis. In this paper, we reconsider this approach. By recalling the Reverse Safety and Coincidence Theorem and the Link Theorem we highlight the duality of classical and reverse data-flow analysis and their relationship to each other. This addresses a common gap in previous presentations of this approach and sheds light on the formal foundation underlying the construction of correct and precise demand-driven data-flow analyses based on reverse data-flow analysis. We illustrate the usability of this approach for hot-spot program optimization. It is useful, however, for other applications, too, such as just-in-time compilation and debugging. 1
Data-Flow Analysis for Multi-Core Computing Systems: A Reminder to Reverse Data-Flow Analysis
"... Abstract. The increasing demands for highly performant, proven correct, easily maintainable, extensible programs together with the continuous growth of real-world programs strengthen the pressure for powerful and scalable program analyses for program development and code generation. Multi-core compu ..."
Abstract
- Add to MetaCart
Abstract. The increasing demands for highly performant, proven correct, easily maintainable, extensible programs together with the continuous growth of real-world programs strengthen the pressure for powerful and scalable program analyses for program development and code generation. Multi-core computing systems offer new chances for enhancing the scalability of program analyses, if the additional computing power offered by these systems can be used effectively. This, however, poses new challenges on the analysis side. In principle, it requires program analyses which can be easily parallelized and mapped to multi-core architectures. In this paper we remind to reverse data-flow analysis, which has been introduced and investigated in the context of demand-driven data-flow analysis, as one such class of program analyses which is particularly suitable for this. Keywords. Multi-core computing systems, scalable program analysis, reverse data-flow analysis, demand-driven data-flow analysis 1

