Tree-SSA.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2017 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <title>GNU Compiler Collection (GCC) Internals: Tree SSA</title>
  20. <meta name="description" content="GNU Compiler Collection (GCC) Internals: Tree SSA">
  21. <meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Tree SSA">
  22. <meta name="resource-type" content="document">
  23. <meta name="distribution" content="global">
  24. <meta name="Generator" content="makeinfo">
  25. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="index.html#Top" rel="up" title="Top">
  30. <link href="Annotations.html#Annotations" rel="next" title="Annotations">
  31. <link href="Statement-and-operand-traversals.html#Statement-and-operand-traversals" rel="prev" title="Statement and operand traversals">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.smallquotation {font-size: smaller}
  36. div.display {margin-left: 3.2em}
  37. div.example {margin-left: 3.2em}
  38. div.indentedblock {margin-left: 3.2em}
  39. div.lisp {margin-left: 3.2em}
  40. div.smalldisplay {margin-left: 3.2em}
  41. div.smallexample {margin-left: 3.2em}
  42. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style:oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nocodebreak {white-space:nowrap}
  54. span.nolinebreak {white-space:nowrap}
  55. span.roman {font-family:serif; font-weight:normal}
  56. span.sansserif {font-family:sans-serif; font-weight:normal}
  57. ul.no-bullet {list-style: none}
  58. -->
  59. </style>
  60. </head>
  61. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  62. <a name="Tree-SSA"></a>
  63. <div class="header">
  64. <p>
  65. Next: <a href="RTL.html#RTL" accesskey="n" rel="next">RTL</a>, Previous: <a href="GIMPLE.html#GIMPLE" accesskey="p" rel="prev">GIMPLE</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  66. </div>
  67. <hr>
  68. <a name="Analysis-and-Optimization-of-GIMPLE-tuples"></a>
  69. <h2 class="chapter">12 Analysis and Optimization of GIMPLE tuples</h2>
  70. <a name="index-Tree-SSA"></a>
  71. <a name="index-Optimization-infrastructure-for-GIMPLE"></a>
  72. <p>GCC uses three main intermediate languages to represent the program
  73. during compilation: GENERIC, GIMPLE and RTL. GENERIC is a
  74. language-independent representation generated by each front end. It
  75. is used to serve as an interface between the parser and optimizer.
  76. GENERIC is a common representation that is able to represent programs
  77. written in all the languages supported by GCC.
  78. </p>
  79. <p>GIMPLE and RTL are used to optimize the program. GIMPLE is used for
  80. target and language independent optimizations (e.g., inlining,
  81. constant propagation, tail call elimination, redundancy elimination,
  82. etc). Much like GENERIC, GIMPLE is a language independent, tree based
  83. representation. However, it differs from GENERIC in that the GIMPLE
  84. grammar is more restrictive: expressions contain no more than 3
  85. operands (except function calls), it has no control flow structures
  86. and expressions with side-effects are only allowed on the right hand
  87. side of assignments. See the chapter describing GENERIC and GIMPLE
  88. for more details.
  89. </p>
  90. <p>This chapter describes the data structures and functions used in the
  91. GIMPLE optimizers (also known as &ldquo;tree optimizers&rdquo; or &ldquo;middle
  92. end&rdquo;). In particular, it focuses on all the macros, data structures,
  93. functions and programming constructs needed to implement optimization
  94. passes for GIMPLE.
  95. </p>
  96. <table class="menu" border="0" cellspacing="0">
  97. <tr><td align="left" valign="top">&bull; <a href="Annotations.html#Annotations" accesskey="1">Annotations</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Attributes for variables.
  98. </td></tr>
  99. <tr><td align="left" valign="top">&bull; <a href="SSA-Operands.html#SSA-Operands" accesskey="2">SSA Operands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SSA names referenced by GIMPLE statements.
  100. </td></tr>
  101. <tr><td align="left" valign="top">&bull; <a href="SSA.html#SSA" accesskey="3">SSA</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Static Single Assignment representation.
  102. </td></tr>
  103. <tr><td align="left" valign="top">&bull; <a href="Alias-analysis.html#Alias-analysis" accesskey="4">Alias analysis</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Representing aliased loads and stores.
  104. </td></tr>
  105. <tr><td align="left" valign="top">&bull; <a href="Memory-model.html#Memory-model" accesskey="5">Memory model</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory model used by the middle-end.
  106. </td></tr>
  107. </table>
  108. <hr>
  109. <div class="header">
  110. <p>
  111. Next: <a href="RTL.html#RTL" accesskey="n" rel="next">RTL</a>, Previous: <a href="GIMPLE.html#GIMPLE" accesskey="p" rel="prev">GIMPLE</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  112. </div>
  113. </body>
  114. </html>