A Model for Inter-module Analysis and Optimizing Compilation
Recent research into the implementation of logic programming languages has demonstrated that global program analysis can be used to speed up execution by an order of magnitude. However, currently such global program analysis requires the program to be analysed as a whole: separate compilation of modules is not supported. We describe and empirically evaluate a simple model for extending global program analysis to support separate compilation of modules. Importantly, our model supports context-sensitive program analysis and multi-variant specialization of procedures in the modules.
Unable to display preview. Download preview PDF.
- 1.T. Armstrong, K. Marriott, P. J. Schachte, and H. Søndergaard. Boolean functions for dependency analysis: Algebraic properties and efficient representation. In Proceedings of the 1st International Static Analysis Symposium, B. Le Charlier, Ed. Lecture Notes in Computer Science, vol. 864. Springer-Verlag, Berlin, 266–280, 1994.Google Scholar
- 2.F. Bueno, M. García de la Banda, M. Hermenegildo, K. Marriott, G. Puebla, and P. J. Stuckey. Inter-module Analysis and Optimizing Compilation. Department of Computer Science and Software Engineering, University of Melbourne, Forthcoming Technical Report, 2001.Google Scholar
- 3.F. Bueno, M. García de la Banda, M. Hermenegildo, and K. Muthukumar. Automatic compile-time parallelization of logic programs for restricted, goal-level, independent and-parallelism. Journal of Logic Programming 38, 2, 165–218.Google Scholar
- 4.M. Codish, S. K. Debray, and R. Giacobazzi. Compositional analysis of modular logic programs. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages POPL’93, pages 451–464, Charleston, South Carolina, 1993. ACM.Google Scholar
- 5.P. Cousot and R. Cousot. Abstract Interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Fourth ACM Symposium on Principles of Programming Languages, 238–252, 1977.Google Scholar
- 6.S. I. Feldman. Make-a program for maintaining computer programs. Software-Practice and Experience, 1979.Google Scholar
- 11.G. Puebla and M. Hermenegildo. Some issues in analysis and specialization of modular Ciao-Prolog programs. In .Google Scholar
- 12.A. Rountev, B. G. Ryder, and W. Landi. Data-flow analysis of program fragments. In Proceedings of ESEC/FSE’ 99, volume 1687 of LNCS, pages 235–252. Springer-Verlag, 1999.Google Scholar
- 13.Z. Shao and A. Appel. Smartest recompilation. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages POPL’93, pages 439–450, Charleston, South Carolina, 1993. ACM.Google Scholar
- 17.W. Vanhoof and Bruynooghe. Towards modular binding-time analysis for firstorder Mercury. In .Google Scholar
- 18.H. Sondergaard. An application of abstract interpretation of logic programs: occur check reduction. In European Symposium on Programming, LNCS 123, pages 327-338. Springer-Verlag, 1986.Google Scholar
- 20.Special Issue on Optimization and Implementation of Declarative Programming Languages, volume 30 of Electronic Notes in Theoretical Computer Science. Elsevier-North Holland, March 2000.Google Scholar