Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/512644.512651acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

Code motion of control structures in high-level languages

Published: 01 January 1986 Publication History

Abstract

One trend among programmers is the increased use of abstractions. Through encapsulation techniques, abstractions extend the repertory of data structures and their concomitant operations that are processed directly by a compiler. For example, a compiler might not offer sets or set operations in its base language, but abstractions allow a programmer to define sets in terms of constructs already recognized by the compiler. In particular, abstractions can allow new constructs to be defined in terms of other abstractions. Although significant power is gained through the use of layered abstractions, object code quality suffers as increasingly less of a program's data structures and operations are exposed to the optimization phase of a compiler. Multiple references to abstractions are also inefficient, since the interaction between abstractions is often complex yet hidden from a compiler. Abstractions are most flexible when they are cast in general terms; a specific invocation is then tailored by the abstraction to obtain the appropriate code. A sequence of references to such abstractions can be inefficient due to functional redundancy that cannot be detected at compile-time. By integrating the references, the offending segments of code can be moved to a more advantageous position. Although procedure integration materializes abstracted constructs, the abstractions can still be ineligible for optimization using current techniques; in particular, abstractions often involve loops and conditional branches that can obscure code that would otherwise be eligible for code motion.

References

[1]
{Allen70} Allen, F. E., Control flow analysis. SIGPLAN Notices, July 1970.]]
[2]
{Allen83} Allen, J. R., Dependence Analysis for Subscripted Variables and Its Application to Program Transformations. Published by Computer Science Department, Rice University, Houston Texas, April 1983.]]
[3]
{Banerjee79} Banerjee, U., Speedup of Ordinary Programs. Published by University of Illinois at Urbana-Champaign, Oct. 1979, DCS Report No. UIUCDCS-R-79--989.]]
[4]
{Burke84} Burke, M., An interval approach toward interprocedural analysis. Published by IBM, July, 1984, RC 10640 #47724.]]
[5]
{Chaitin81} Chaitin, G. J., Auslander, M. A., Chandra, A. K., Cocke, J., Hopkins, M. E., Markstein, P. W., Register allocation via coloring. Computer Languages, 1981, vol. 6, page 47--57.]]
[6]
{Chaitin82} Chaitin, G. J., Register allocation and spilling via graph coloring. Conference Record of the SIGPLAN '82 Symposium on Compiler Construction, June 1982, page 98--105.]]
[7]
{Cooper83} Cooper, K. D., Interprocedural data flow analysis in a programming environment. Published by Mathematical Sciences Department, Rice University, Houston Texas, 1983.]]
[8]
{Ferrante83} Ferrante, J., Ottenstein, K. J., A program form based on data dependency in predicate regions. Conference Record of the Tenth Annual ACM Symposium on Principles of Programming Languages, Jan. 1983.]]
[9]
{Ferrante84} Ferrante, J., Warren, J. D., A program dependence graph and its use in optimization. Published by Springer-VerlagLecture Notes in Computer Science, 1984, page 125--132.]]
[10]
{Ferrante85} Ferrante, J., Mace, M., On Linearizing Parallel Code, Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, Jan. 1985.]]
[11]
{Graham76} Graham, S. L., Wegman, M., A fast and usually linear algorithm for global flow analysis. Journal of the ACM, Jan. 1976, vol. 23, no. 1, page 172--202.]]
[12]
{Lowry69} Lowry, E. S., Medlock, C. W., Object Code Optimization. Communications of the ACM, 1969, vol. 12, no. 1, page 13--22.]]
[13]
{Morel79} Morel, E., Renviose, C., Global optimization by supression of partial redundancies. Communications of the ACM, Feb. 1979, vol. 22, no. 2, page 96--103.]]
[14]
{Myers81} Myers, E. W., A precise interprocedural data flow algorithm. Eighth Annual ACM Symposium on Principles of Programming Languages, Jan. 1981, page 219--230.]]
[15]
{Reif77} Reif, J. H., Lewis, H. R., Symbolic evaluation and the global value graph. Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, Jan. 1977, page 104--118.]]
[16]
{Reif81} Reif, J. H., Tarjan, R. E., Symbolic program analysis in almost linear time. SIAM Journal of Computing, Feb. 1981, vol. 11, no. 1, page 81--93.]]
[17]
{Reif82} Reif, J. H., Lewis, H. R., Efficent symbolic analysis of programs. Published by Harvard University, Aiken Computation Laboratory, 1982, no. TR-37--82.]]
[18]
{Schwartz73} Schwartz, J. T., On Programming, An Interim Report on the SETL Project, Installment II: The SETL Language and Examples of Its Use. Published by Computer Science Department, Courant Institute of Mathematical Sciences. New York University, Oct. 1973.]]
[19]
{Schwartz79} Schwartz, J. T., Sharir, M., A design for optimizations of the bitvectoring class. Published by Courant Institute of Mathematical Sciences. Computer Science Department, New York University., Sept. 1979, no. 17.]]
[20]
{Tarjan74} Tarjan, R. E., Testing flow graph reducibility. Journal of Computer and Systems Sciences, Dec. 1974, vol. 9, page 355--365.]]
[21]
{Wegman85} Wegman, M., Zadeck, F. K., Constant propagation with conditional branches. Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, Jan. 1985, page 291--299.]]
[22]
{Wolfe82} Wolfe, M. J., Optimizing Supercompilers for Supercomputers. Published by Computer Science Department, University of Illinois at Urbana-Champaign, 1982.]]

Cited By

View all
  • (2024)Automated Code Generation of High-Order Stencils for a Dataflow ArchitectureProceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis10.1109/SC41406.2024.00025(1-13)Online publication date: 17-Nov-2024
  • (2024)Automated Verification of Silq Quantum Programs using SMT Solvers2024 IEEE International Conference on Quantum Software (QSW)10.1109/QSW62656.2024.00027(125-134)Online publication date: 7-Jul-2024
  • (2023)Identifying Vulnerabilities in Smart Contracts using Interval AnalysisElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.389.12389(144-151)Online publication date: 22-Sep-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '86: Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
January 1986
326 pages
ISBN:9781450373470
DOI:10.1145/512644
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 January 1986

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)160
  • Downloads (Last 6 weeks)18
Reflects downloads up to 14 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Automated Code Generation of High-Order Stencils for a Dataflow ArchitectureProceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis10.1109/SC41406.2024.00025(1-13)Online publication date: 17-Nov-2024
  • (2024)Automated Verification of Silq Quantum Programs using SMT Solvers2024 IEEE International Conference on Quantum Software (QSW)10.1109/QSW62656.2024.00027(125-134)Online publication date: 7-Jul-2024
  • (2023)Identifying Vulnerabilities in Smart Contracts using Interval AnalysisElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.389.12389(144-151)Online publication date: 22-Sep-2023
  • (2023)Graph IRs for Impure Higher-Order Languages: Making Aggressive Optimizations Affordable with Precise Effect DependenciesProceedings of the ACM on Programming Languages10.1145/36228137:OOPSLA2(400-430)Online publication date: 16-Oct-2023
  • (2005)Code Liberation — A tool for refitting code to a parallel environmentPARLE'94 Parallel Architectures and Languages Europe10.1007/3-540-58184-7_99(167-179)Online publication date: 2-Jun-2005
  • (2005)Reducing the cost of data flow analysis by congruence partitioningCompiler Construction10.1007/3-540-57877-3_24(357-373)Online publication date: 30-May-2005
  • (2005)Efficiently computing φ-nodes on-the-flyLanguages and Compilers for Parallel Computing10.1007/3-540-57659-2_27(461-476)Online publication date: 31-May-2005
  • (2004)What can we gain by unfolding loops?ACM SIGPLAN Notices10.1145/967278.96728439:2(26-33)Online publication date: 1-Feb-2004
  • (2003)Engineering a CompilerundefinedOnline publication date: 11-Dec-2003
  • (2002)On loops, dominators, and dominance frontiersACM Transactions on Programming Languages and Systems10.1145/570886.57088724:5(455-490)Online publication date: 1-Sep-2002
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media