blob: a606db229a9b74e88cfd32942cffac3835a75d49 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2015 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below). A copy of the license is included in the section entitled
"GNU Free Documentation License".
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using the GNU Compiler Collection (GCC): Function Specific Option Pragmas</title>
<meta name="description" content="Using the GNU Compiler Collection (GCC): Function Specific Option Pragmas">
<meta name="keywords" content="Using the GNU Compiler Collection (GCC): Function Specific Option Pragmas">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Pragmas.html#Pragmas" rel="up" title="Pragmas">
<link href="Loop_002dSpecific-Pragmas.html#Loop_002dSpecific-Pragmas" rel="next" title="Loop-Specific Pragmas">
<link href="Push_002fPop-Macro-Pragmas.html#Push_002fPop-Macro-Pragmas" rel="prev" title="Push/Pop Macro Pragmas">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Function-Specific-Option-Pragmas"></a>
<div class="header">
<p>
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>
</div>
<hr>
<a name="Function-Specific-Option-Pragmas-1"></a>
<h4 class="subsection">6.59.13 Function Specific Option Pragmas</h4>
<dl compact="compact">
<dt><code>#pragma GCC target (<var>&quot;string&quot;</var>...)</code></dt>
<dd><a name="index-pragma-GCC-target"></a>
<p>This pragma allows you to set target specific options for functions
defined later in the source file. One or more strings can be
specified. Each function that is defined after this point is as
if <code>attribute((target(&quot;STRING&quot;)))</code> was specified for that
function. The parenthesis around the options is optional.
See <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>, for more information about the
<code>target</code> attribute and the attribute syntax.
</p>
<p>The <code>#pragma GCC target</code> pragma is presently implemented for
i386/x86_64, PowerPC, and Nios II targets only.
</p></dd>
</dl>
<dl compact="compact">
<dt><code>#pragma GCC optimize (<var>&quot;string&quot;</var>...)</code></dt>
<dd><a name="index-pragma-GCC-optimize"></a>
<p>This pragma allows you to set global optimization options for functions
defined later in the source file. One or more strings can be
specified. Each function that is defined after this point is as
if <code>attribute((optimize(&quot;STRING&quot;)))</code> was specified for that
function. The parenthesis around the options is optional.
See <a href="Function-Attributes.html#Function-Attributes">Function Attributes</a>, for more information about the
<code>optimize</code> attribute and the attribute syntax.
</p>
<p>The &lsquo;<samp>#pragma GCC optimize</samp>&rsquo; pragma is not implemented in GCC
versions earlier than 4.4.
</p></dd>
</dl>
<dl compact="compact">
<dt><code>#pragma GCC push_options</code></dt>
<dt><code>#pragma GCC pop_options</code></dt>
<dd><a name="index-pragma-GCC-push_005foptions"></a>
<a name="index-pragma-GCC-pop_005foptions"></a>
<p>These pragmas maintain a stack of the current target and optimization
options. It is intended for include files where you temporarily want
to switch to using a different &lsquo;<samp>#pragma GCC target</samp>&rsquo; or
&lsquo;<samp>#pragma GCC optimize</samp>&rsquo; and then to pop back to the previous
options.
</p>
<p>The &lsquo;<samp>#pragma GCC push_options</samp>&rsquo; and &lsquo;<samp>#pragma GCC pop_options</samp>&rsquo;
pragmas are not implemented in GCC versions earlier than 4.4.
</p></dd>
</dl>
<dl compact="compact">
<dt><code>#pragma GCC reset_options</code></dt>
<dd><a name="index-pragma-GCC-reset_005foptions"></a>
<p>This pragma clears the current <code>#pragma GCC target</code> and
<code>#pragma GCC optimize</code> to use the default switches as specified
on the command line.
</p>
<p>The &lsquo;<samp>#pragma GCC reset_options</samp>&rsquo; pragma is not implemented in GCC
versions earlier than 4.4.
</p></dd>
</dl>
<hr>
<div class="header">
<p>
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>
</div>
</body>
</html>