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.

Function-Specific-Option-Pragmas.html 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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>Function Specific Option Pragmas (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="Function Specific Option Pragmas (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="Function Specific Option Pragmas (Using the GNU Compiler Collection (GCC))">
  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="Pragmas.html#Pragmas" rel="up" title="Pragmas">
  30. <link href="Loop_002dSpecific-Pragmas.html#Loop_002dSpecific-Pragmas" rel="next" title="Loop-Specific Pragmas">
  31. <link href="Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas" rel="prev" title="Push/Pop Macro Pragmas">
  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="Function-Specific-Option-Pragmas"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="Loop_002dSpecific-Pragmas.html#Loop_002dSpecific-Pragmas" accesskey="n" rel="next">Loop-Specific Pragmas</a>, Previous: <a href="Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas" accesskey="p" rel="prev">Push/Pop Macro Pragmas</a>, Up: <a href="Pragmas.html#Pragmas" accesskey="u" rel="up">Pragmas</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="Function-Specific-Option-Pragmas-1"></a>
  68. <h4 class="subsection">6.62.16 Function Specific Option Pragmas</h4>
  69. <dl compact="compact">
  70. <dt><code>#pragma GCC target (<var>string</var>, &hellip;)</code></dt>
  71. <dd><a name="index-pragma-GCC-target"></a>
  72. <p>This pragma allows you to set target-specific options for functions
  73. defined later in the source file. One or more strings can be
  74. specified. Each function that is defined after this point is treated
  75. as if it had been declared with one <code>target(</code><var>string</var><code>)</code>
  76. attribute for each <var>string</var> argument. The parentheses around
  77. the strings in the pragma are optional. See <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>,
  78. for more information about the <code>target</code> attribute and the attribute
  79. syntax.
  80. </p>
  81. <p>The <code>#pragma GCC target</code> pragma is presently implemented for
  82. x86, ARM, AArch64, PowerPC, S/390, and Nios II targets only.
  83. </p>
  84. </dd>
  85. <dt><code>#pragma GCC optimize (<var>string</var>, &hellip;)</code></dt>
  86. <dd><a name="index-pragma-GCC-optimize"></a>
  87. <p>This pragma allows you to set global optimization options for functions
  88. defined later in the source file. One or more strings can be
  89. specified. Each function that is defined after this point is treated
  90. as if it had been declared with one <code>optimize(</code><var>string</var><code>)</code>
  91. attribute for each <var>string</var> argument. The parentheses around
  92. the strings in the pragma are optional. See <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>,
  93. for more information about the <code>optimize</code> attribute and the attribute
  94. syntax.
  95. </p>
  96. </dd>
  97. <dt><code>#pragma GCC push_options</code></dt>
  98. <dt><code>#pragma GCC pop_options</code></dt>
  99. <dd><a name="index-pragma-GCC-push_005foptions"></a>
  100. <a name="index-pragma-GCC-pop_005foptions"></a>
  101. <p>These pragmas maintain a stack of the current target and optimization
  102. options. It is intended for include files where you temporarily want
  103. to switch to using a different &lsquo;<samp>#pragma GCC target</samp>&rsquo; or
  104. &lsquo;<samp>#pragma GCC optimize</samp>&rsquo; and then to pop back to the previous
  105. options.
  106. </p>
  107. </dd>
  108. <dt><code>#pragma GCC reset_options</code></dt>
  109. <dd><a name="index-pragma-GCC-reset_005foptions"></a>
  110. <p>This pragma clears the current <code>#pragma GCC target</code> and
  111. <code>#pragma GCC optimize</code> to use the default switches as specified
  112. on the command line.
  113. </p>
  114. </dd>
  115. </dl>
  116. <hr>
  117. <div class="header">
  118. <p>
  119. Next: <a href="Loop_002dSpecific-Pragmas.html#Loop_002dSpecific-Pragmas" accesskey="n" rel="next">Loop-Specific Pragmas</a>, Previous: <a href="Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas" accesskey="p" rel="prev">Push/Pop Macro Pragmas</a>, Up: <a href="Pragmas.html#Pragmas" accesskey="u" rel="up">Pragmas</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>
  120. </div>
  121. </body>
  122. </html>