In the modern world, not only is software getting larger and more complex, it is also becoming pervasive in our daily lives. Interprocedural analysis is a mechanism for performing optimization across function boundaries. If there is a call to another routine that occurs within a loop, ipo analysis may. Whenev er the optimizing compiler needs informa tion about possible side effects of a particular procedure, it can simply e xtract the. Introduction scalable program analyses work by exploiting the modular structure of programs. Interprocedural optimization ipo is an automatic, multistep process that allows the compiler to analyze your code to determine where you can benefit from specific optimizations. The impact of interprocedural analysis and optimization on the design of a software dev elopment environment. For the love of physics walter lewin may 16, 2011 duration. Interprocedural optimization ipo is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length. The problem of tracking data flow across procedure boundaries has a long history of theoretical study by people who believed that such information would be useful for code optimization. For software built with reusable components, the traditional. Interprocedural control dependence, interprocedural analysis, semantic dependence, program slicing, software maintenance 1. Citeseerx citation query interprocedural data flow analysis. Building upon previous work, an algorithm for interprocedural data flow analysis has been implemented.
Few commercial optimizing compilers employ interprocedural techniques because the cost of gathering the requisite information in a traditional compiler is too great. The ideas presented here are from a paper called two approaches to interprocedural analysis, by micha sharir and amir pnueli, in a book called program flow analysis, theory and applications edited by s. The impact of interprocedural analysis and optimization in the r. Cs 380c lecture 22 5 interprocedural analysis why dont many compilers use ip analysis. Interprocedural data flow analysis in soot using value. Interprocedural analysis ipa enables the compiler to optimize across. A schema for interprocedural modification sideeffect analysis with pointer aliasing. Interprocedural dataflow analysis has a large number of uses for software optimization, maintenance, testing, and verification. A schema for interprocedural modification sideeffect. Is inlining an alternative, or is it part of ip analysis and. The impact of interprocedural analysis and optimization on the design of a software development environment article pdf available in acm sigplan notices 207.
The development, optimization and maintenance of these program systems consumes a lot of resources as time, manpower and of course money. A slice of a program is taken with respect to a program point p and a variable x. Here an advanced compiler based on interprocedural. Interprocedural analysis an overview sciencedirect topics. Program analyses for bloat detection and optimization. Interprocedural analysis and optimization of an object. The present invention is directed to a new framework for interprocedural analysis and optimization of programs that support dynamic class andor method loading e.
For programs that exclusively use synchronous function calls, interprocedural data. Standard compiler optimization is no longer sufficient for competitive high performance computing. Interprocedural dataflow analysis is useful in compiler optimization, automatic vectorization and parallelization, dataflow anomaly detection, and software maintenance applications such as program revalidation, and software. Interprocedural analysis and optimization, dataflow. Interprocedural slicing using dependence graphs semantic. Bringing profile information to the tree optimization framework. The impact of interprocedural analysis and optimization in. One of the primary goals of the ir n programming environment project is to mount a concerted attack on the problems of performing interprocedural analysis and optimization in a compiler.
The first problem that the compiler must address in interprocedural analysis is the. We have implemented this algorithm on top of the blast interprocedural reachability analysis which is a lazy version of the summarybased. Interprocedural analysis that is performed by the ipa compiler option improves on the limited interprocedural analysis described above. Cs553 lecture interprocedural analysis 5 interprocedural analysis vs. Analysis of interprocedural side effects in a parallel. Program analysis researchers tackle the problem typically by developing approximations, trading off analysis capability for scalability. The impact of interprocedural analysis and optimization on. The optimizing translator performs interprocedural analysis, but only within a compilation unit. However, approximations render analyses less useful and, even with approximations, most analyses still cannot scale to large software. The information and subsequent analysis may then be used to reduce the recompilation required in program maintenance. Interprocedural analysis useless for code optimization. Issues in interprocedural analysis 386 interprocedural analysis. Information processing letters 32 1989 7142 northholland interprocedural analysis vs. Ipo differs from other compiler optimization because it analyzes the entire program.
Improving gccs interprocedural optimization infrastructure. You can specify interprocedural analysis on the compilation step only or on both compilation and link steps in whole program mode. Interprocedural optimization interprocedural analysis gather information across multiple procedures typically across the entire. The notion of a program slice, originally introduced by mark weiser, is useful in program debugging, automatic parallelization, and program integration.
T1 interprocedural control flow analysis of firstorder programs with tailcall optimization. On the one hand, the advent of multicore processors is pushing software towards becoming more concurrent. Interprocedural analysis ipa can analyze and optimize your application as a whole, rather than on a filebyfile basis. Interprocedural control flow analysis of firstorder. Using interprocedural analysis ibm knowledge center.
Computers and internet algorithms analysis compilers software. Interprocedural analysis ipa enables the compiler to optimize across different files wholeprogram analysis, and it can result in significant performance improvements. For the r environment to be effective as a tool for research in the construction of optimizing compilers, it must also be successful as a programming support tool. Here we discuss interprocedural analysis ipa or whole program analysis, its costs and. The impact of interprocedural analysis and optimization on the. Interprocedural analysis and the verification of concurrent programs by akash lal a dissertation submitted in partial ful. Introduction programdependence information is useful for a variety of applications, such as software. Citeseerx interprocedural dataflow analysis in the. Run during the link step of an application build, the entire application, including linked. Interprocedural optimization ipo is a collection of compiler techniques used in computer. This has resulted in the development of algorithms for interprocedural analysis of the side effects of a subroutine, which summarize the body of a subroutine, producing approximate information to improve. Interprocedural dataflow analysis in the presence of large libraries. Interprocedural modification side effect analysis with.
Intraprocedural analysis is a mechanism for performing optimization for each function within a compilation unit, using only the information available for that function. We also created a tool named webssari web application security by static analysis and runtime inspection to test our algorithm, and used it to verify 230 opensource web application projects on. March 4, 2015 interprocedural analysis 5 interprocedural analysis vs. Interprocedural analysis gathering information about the whole program instead of a single procedure interprocedural optimization program transformation that involves more than one procedure in the program uses interprocedural analysis tuesday, may 4, 2010. If interprocedural analysis ipa can determine that the call to sub does not alter gv, the address calculation inside the loop can be significantly optimized. Citeseerx document details isaac councill, lee giles, pradeep teregowda.
Separate compilation, the practice of compiling small subsets of a program independently, limits the compilers ability to build a call graph and to perform interprocedural analysis and optimization. Gather information across multiple procedures typically across the entire. Concurrent interprocedural data ow analysis by di zou thesis submitted to the. Interprocedural analysis gathering information about the whole program instead of a single procedure interprocedural optimization program transformation that involves more than one procedure in the. The paper focuses on its use in compiler optimization for register elimination and inline substitution. Some compilers build partial call graphs for all of the procedures in a compilation unit and perform analysis and optimization across that set. Framework for interprocedural analysis and optimizations.
The impact of interprocedural analysis and optimization on the design of a software. Home conferences slipe proceedings slipe 85 the impact of interprocedural analysis and optimization on the design of a software development environment. Procedure integration stephen richardson and mahadevan ganapathi center for integrated. Many methods of interprocedural analysis sacrice precision for scalability while. There has been much interest lately in the use of such information for program parallelization and software understanding. Tailcall optimization is a valuable tool that converts tail recursion to a form.
176 724 1500 966 1367 1000 696 24 1013 440 688 751 1422 946 915 880 1370 1528 480 1018 1087 254 412 305 716 847 1070 426 1260 1105 1555 736 1080 1277 302 413 1311 136 341