You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 line
5.1KB

  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-2020 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 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>Peephole Definitions (GNU Compiler Collection (GCC) Internals)</title>
  21. <meta name="description" content="Peephole Definitions (GNU Compiler Collection (GCC) Internals)">
  22. <meta name="keywords" content="Peephole Definitions (GNU Compiler Collection (GCC) Internals)">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  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="Machine-Desc.html#Machine-Desc" rel="up" title="Machine Desc">
  30. <link href="define_005fpeephole.html#define_005fpeephole" rel="next" title="define_peephole">
  31. <link href="Including-Patterns.html#Including-Patterns" rel="prev" title="Including Patterns">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  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.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="Peephole-Definitions"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="Insn-Attributes.html#Insn-Attributes" accesskey="n" rel="next">Insn Attributes</a>, Previous: <a href="Including-Patterns.html#Including-Patterns" accesskey="p" rel="prev">Including Patterns</a>, Up: <a href="Machine-Desc.html#Machine-Desc" accesskey="u" rel="up">Machine Desc</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>
  65. </div>
  66. <hr>
  67. <a name="Machine_002dSpecific-Peephole-Optimizers"></a>
  68. <h3 class="section">17.18 Machine-Specific Peephole Optimizers</h3>
  69. <a name="index-peephole-optimizer-definitions"></a>
  70. <a name="index-defining-peephole-optimizers"></a>
  71. <p>In addition to instruction patterns the <samp>md</samp> file may contain
  72. definitions of machine-specific peephole optimizations.
  73. </p>
  74. <p>The combiner does not notice certain peephole optimizations when the data
  75. flow in the program does not suggest that it should try them. For example,
  76. sometimes two consecutive insns related in purpose can be combined even
  77. though the second one does not appear to use a register computed in the
  78. first one. A machine-specific peephole optimizer can detect such
  79. opportunities.
  80. </p>
  81. <p>There are two forms of peephole definitions that may be used. The
  82. original <code>define_peephole</code> is run at assembly output time to
  83. match insns and substitute assembly text. Use of <code>define_peephole</code>
  84. is deprecated.
  85. </p>
  86. <p>A newer <code>define_peephole2</code> matches insns and substitutes new
  87. insns. The <code>peephole2</code> pass is run after register allocation
  88. but before scheduling, which may result in much better code for
  89. targets that do scheduling.
  90. </p>
  91. <table class="menu" border="0" cellspacing="0">
  92. <tr><td align="left" valign="top">&bull; <a href="define_005fpeephole.html#define_005fpeephole" accesskey="1">define_peephole</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL to Text Peephole Optimizers
  93. </td></tr>
  94. <tr><td align="left" valign="top">&bull; <a href="define_005fpeephole2.html#define_005fpeephole2" accesskey="2">define_peephole2</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RTL to RTL Peephole Optimizers
  95. </td></tr>
  96. </table>
  97. </body>
  98. </html>