summaryrefslogtreecommitdiff
path: root/share/doc/gccint/Selectors.html
diff options
context:
space:
mode:
Diffstat (limited to 'share/doc/gccint/Selectors.html')
-rw-r--r--share/doc/gccint/Selectors.html195
1 files changed, 195 insertions, 0 deletions
diff --git a/share/doc/gccint/Selectors.html b/share/doc/gccint/Selectors.html
new file mode 100644
index 0000000..504180b
--- /dev/null
+++ b/share/doc/gccint/Selectors.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 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.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>GNU Compiler Collection (GCC) Internals: Selectors</title>
+
+<meta name="description" content="GNU Compiler Collection (GCC) Internals: Selectors">
+<meta name="keywords" content="GNU Compiler Collection (GCC) Internals: Selectors">
+<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="Test-Directives.html#Test-Directives" rel="up" title="Test Directives">
+<link href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" rel="next" title="Effective-Target Keywords">
+<link href="Directives.html#Directives" rel="previous" title="Directives">
+<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="Selectors"></a>
+<div class="header">
+<p>
+Next: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="n" rel="next">Effective-Target Keywords</a>, Previous: <a href="Directives.html#Directives" accesskey="p" rel="previous">Directives</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</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="Selecting-targets-to-which-a-test-applies"></a>
+<h4 class="subsection">7.2.2 Selecting targets to which a test applies</h4>
+
+<p>Several test directives include <var>selector</var>s to limit the targets
+for which a test is run or to declare that a test is expected to fail
+on particular targets.
+</p>
+<p>A selector is:
+</p><ul>
+<li> one or more target triplets, possibly including wildcard characters;
+use &lsquo;<samp>*-*-*</samp>&rsquo; to match any target
+</li><li> a single effective-target keyword (see <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords">Effective-Target Keywords</a>)
+</li><li> a list of compiler options that should be included or excluded
+(as described in more detail below)
+</li><li> a logical expression
+</li></ul>
+
+<p>Depending on the context, the selector specifies whether a test is
+skipped and reported as unsupported or is expected to fail. A context
+that allows either &lsquo;<samp>target</samp>&rsquo; or &lsquo;<samp>xfail</samp>&rsquo; also allows
+&lsquo;<samp>{ target <var>selector1</var> xfail <var>selector2</var> }</samp>&rsquo;
+to skip the test for targets that don&rsquo;t match <var>selector1</var> and the
+test to fail for targets that match <var>selector2</var>.
+</p>
+<p>A selector expression appears within curly braces and uses a single
+logical operator: one of &lsquo;<samp>!</samp>&rsquo;, &lsquo;<samp>&amp;&amp;</samp>&rsquo;, or &lsquo;<samp>||</samp>&rsquo;. An
+operand is one of the following:
+</p>
+<ul>
+<li> another selector expression, in curly braces
+
+</li><li> an effective-target keyword, such as <code>lp64</code>
+
+</li><li> a single target triplet
+
+</li><li> a list of target triplets within quotes or curly braces
+
+</li><li> one of the following:
+
+<dl compact="compact">
+<dt>&lsquo;<samp>{ any-opts <var>opt1</var> &hellip; <var>optn</var> }</samp>&rsquo;</dt>
+<dd><p>Each of <var>opt1</var> to <var>optn</var> is a space-separated list of option globs.
+The selector expression evaluates to true if, for one of these strings,
+every glob in the string matches an option that was passed to the compiler.
+For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ any-opts &quot;-O3 -flto&quot; &quot;-O[2g]&quot; }
+</pre></div>
+
+<p>is true if any of the following are true:
+</p>
+<ul>
+<li> <samp>-O2</samp> was passed to the compiler
+
+</li><li> <samp>-Og</samp> was passed to the compiler
+
+</li><li> both <samp>-O3</samp> and <samp>-flto</samp> were passed to the compiler
+</li></ul>
+
+<p>This kind of selector can only be used within <code>dg-final</code> directives.
+Use <code>dg-skip-if</code>, <code>dg-xfail-if</code> or <code>dg-xfail-run-if</code> to
+skip whole tests based on options, or to mark them as expected to fail
+with certain options.
+</p>
+</dd>
+<dt>&lsquo;<samp>{ no-opts <var>opt1</var> &hellip; <var>optn</var> }</samp>&rsquo;</dt>
+<dd><p>As for <code>any-opts</code> above, each of <var>opt1</var> to <var>optn</var> is a
+space-separated list of option globs. The selector expression
+evaluates to true if, for all of these strings, there is at least
+one glob that does not match an option that was passed to the compiler.
+It is shorthand for:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ ! { any-opts <var>opt1</var> &hellip; <var>optn</var> } }
+</pre></div>
+
+<p>For example:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ no-opts &quot;-O3 -flto&quot; &quot;-O[2g]&quot; }
+</pre></div>
+
+<p>is true if all of the following are true:
+</p>
+<ul>
+<li> <samp>-O2</samp> was not passed to the compiler
+
+</li><li> <samp>-Og</samp> was not passed to the compiler
+
+</li><li> at least one of <samp>-O3</samp> or <samp>-flto</samp> was not passed to the compiler
+</li></ul>
+
+<p>Like <code>any-opts</code>, this kind of selector can only be used within
+<code>dg-final</code> directives.
+</p>
+</dd>
+</dl>
+</li></ul>
+
+<p>Here are some examples of full target selectors:
+</p>
+<div class="smallexample">
+<pre class="smallexample">{ target { ! &quot;hppa*-*-* ia64*-*-*&quot; } }
+{ target { powerpc*-*-* &amp;&amp; lp64 } }
+{ xfail { lp64 || vect_no_align } }
+{ xfail { aarch64*-*-* &amp;&amp; { any-opts &quot;-O2&quot; } } }
+</pre></div>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Effective_002dTarget-Keywords.html#Effective_002dTarget-Keywords" accesskey="n" rel="next">Effective-Target Keywords</a>, Previous: <a href="Directives.html#Directives" accesskey="p" rel="previous">Directives</a>, Up: <a href="Test-Directives.html#Test-Directives" accesskey="u" rel="up">Test Directives</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>