Peephole-Definitions.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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: Peephole Definitions</title>
  20. <meta name="description" content="GNU Compiler Collection (GCC) Internals: Peephole Definitions">
  21. <meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Peephole Definitions">
  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="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.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="Peephole-Definitions"></a>
  63. <div class="header">
  64. <p>
  65. 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>
  66. </div>
  67. <hr>
  68. <a name="Machine_002dSpecific-Peephole-Optimizers"></a>
  69. <h3 class="section">16.18 Machine-Specific Peephole Optimizers</h3>
  70. <a name="index-peephole-optimizer-definitions"></a>
  71. <a name="index-defining-peephole-optimizers"></a>
  72. <p>In addition to instruction patterns the <samp>md</samp> file may contain
  73. definitions of machine-specific peephole optimizations.
  74. </p>
  75. <p>The combiner does not notice certain peephole optimizations when the data
  76. flow in the program does not suggest that it should try them. For example,
  77. sometimes two consecutive insns related in purpose can be combined even
  78. though the second one does not appear to use a register computed in the
  79. first one. A machine-specific peephole optimizer can detect such
  80. opportunities.
  81. </p>
  82. <p>There are two forms of peephole definitions that may be used. The
  83. original <code>define_peephole</code> is run at assembly output time to
  84. match insns and substitute assembly text. Use of <code>define_peephole</code>
  85. is deprecated.
  86. </p>
  87. <p>A newer <code>define_peephole2</code> matches insns and substitutes new
  88. insns. The <code>peephole2</code> pass is run after register allocation
  89. but before scheduling, which may result in much better code for
  90. targets that do scheduling.
  91. </p>
  92. <table class="menu" border="0" cellspacing="0">
  93. <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
  94. </td></tr>
  95. <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
  96. </td></tr>
  97. </table>
  98. </body>
  99. </html>