1
# DP: updates from the 4.8 branch upto 20140117 (r206708).
5
cat > ${dir}LAST_UPDATED <<EOF
6
Fri Jan 17 15:39:17 CET 2014
7
Fri Jan 17 14:39:17 UTC 2014 (revision 206708)
11
LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_2_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch \
12
| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
13
| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
15
Index: libgomp/ChangeLog
16
===================================================================
17
--- a/src/libgomp/ChangeLog (.../tags/gcc_4_8_2_release)
18
+++ b/src/libgomp/ChangeLog (.../branches/gcc-4_8-branch)
20
+2013-12-12 Jakub Jelinek <jakub@redhat.com>
23
+ * testsuite/libgomp.fortran/crayptr2.f90: Add private (d) clause to
26
2013-10-16 Release Manager
29
Index: libgomp/testsuite/libgomp.fortran/crayptr2.f90
30
===================================================================
31
--- a/src/libgomp/testsuite/libgomp.fortran/crayptr2.f90 (.../tags/gcc_4_8_2_release)
32
+++ b/src/libgomp/testsuite/libgomp.fortran/crayptr2.f90 (.../branches/gcc-4_8-branch)
37
-!$omp parallel num_threads (3) reduction (.or.:l)
38
+!$omp parallel num_threads (3) reduction (.or.:l) private (d)
39
if (omp_get_thread_num () .eq. 0) then
41
elseif (omp_get_thread_num () .eq. 1) then
42
Index: libstdc++-v3/configure
43
===================================================================
44
--- a/src/libstdc++-v3/configure (.../tags/gcc_4_8_2_release)
45
+++ b/src/libstdc++-v3/configure (.../branches/gcc-4_8-branch)
46
@@ -71573,7 +71573,7 @@
49
# For libtool versioning info, format is CURRENT:REVISION:AGE
50
-libtool_VERSION=6:18:0
51
+libtool_VERSION=6:19:0
53
# Everything parsed; figure out what files and settings to use.
54
case $enable_symvers in
55
Index: libstdc++-v3/doc/xml/manual/abi.xml
56
===================================================================
57
--- a/src/libstdc++-v3/doc/xml/manual/abi.xml (.../tags/gcc_4_8_2_release)
58
+++ b/src/libstdc++-v3/doc/xml/manual/abi.xml (.../branches/gcc-4_8-branch)
60
<listitem><para>GCC 4.5.0: GCC_4.5.0</para></listitem>
61
<listitem><para>GCC 4.6.0: GCC_4.6.0</para></listitem>
62
<listitem><para>GCC 4.7.0: GCC_4.7.0</para></listitem>
63
+ <listitem><para>GCC 4.8.0: GCC_4.8.0</para></listitem>
68
<listitem><para>GCC 4.6.1: libstdc++.so.6.0.16</para></listitem>
69
<listitem><para>GCC 4.7.0: libstdc++.so.6.0.17</para></listitem>
70
<listitem><para>GCC 4.8.0: libstdc++.so.6.0.18</para></listitem>
71
+ <listitem><para>GCC 4.8.3: libstdc++.so.6.0.19</para></listitem>
74
Note 1: Error should be libstdc++.so.3.0.3.
76
<listitem><para>GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5</para></listitem>
77
<listitem><para>GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6</para></listitem>
78
<listitem><para>GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7</para></listitem>
79
+ <listitem><para>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</para></listitem>
83
Index: libstdc++-v3/doc/xml/manual/status_cxx2011.xml
84
===================================================================
85
--- a/src/libstdc++-v3/doc/xml/manual/status_cxx2011.xml (.../tags/gcc_4_8_2_release)
86
+++ b/src/libstdc++-v3/doc/xml/manual/status_cxx2011.xml (.../branches/gcc-4_8-branch)
91
+ <?dbhtml bgcolor="#B0B0B0" ?>
92
<entry>20.9.7.6</entry>
93
<entry>Other transformations</entry>
96
+ <entry>Partial</entry>
97
+ <entry>Missing <code>aligned_union</code>.</entry>
101
Index: libstdc++-v3/doc/xml/manual/spine.xml
102
===================================================================
103
--- a/src/libstdc++-v3/doc/xml/manual/spine.xml (.../tags/gcc_4_8_2_release)
104
+++ b/src/libstdc++-v3/doc/xml/manual/spine.xml (.../branches/gcc-4_8-branch)
111
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
113
Index: libstdc++-v3/doc/html/bk02.html
114
===================================================================
115
--- a/src/libstdc++-v3/doc/html/bk02.html (.../tags/gcc_4_8_2_release)
116
+++ b/src/libstdc++-v3/doc/html/bk02.html (.../branches/gcc-4_8-branch)
118
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
119
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library" /><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility" /><link rel="next" href="api.html" title="The GNU C++ Library API Reference" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="api.html">The GNU C++ Library API Reference</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> The GNU C++ Library API Reference</td></tr></table></div></body></html>
120
\ No newline at end of file
121
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library" /><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility" /><link rel="next" href="api.html" title="The GNU C++ Library API Reference" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="article"><a href="api.html">The GNU C++ Library API Reference</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> The GNU C++ Library API Reference</td></tr></table></div></body></html>
122
\ No newline at end of file
123
Index: libstdc++-v3/doc/html/bk03.html
124
===================================================================
125
--- a/src/libstdc++-v3/doc/html/bk03.html (.../tags/gcc_4_8_2_release)
126
+++ b/src/libstdc++-v3/doc/html/bk03.html (.../branches/gcc-4_8-branch)
128
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
129
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library" /><link rel="prev" href="api.html" title="The GNU C++ Library API Reference" /><link rel="next" href="faq.html" title="Frequently Asked Questions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library API Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html>
130
\ No newline at end of file
131
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library" /><link rel="prev" href="api.html" title="The GNU C++ Library API Reference" /><link rel="next" href="faq.html" title="Frequently Asked Questions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library API Reference </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html>
132
\ No newline at end of file
133
Index: libstdc++-v3/doc/html/faq.html
134
===================================================================
135
--- a/src/libstdc++-v3/doc/html/faq.html (.../tags/gcc_4_8_2_release)
136
+++ b/src/libstdc++-v3/doc/html/faq.html (.../branches/gcc-4_8-branch)
138
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
139
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk03.html" title="" /><link rel="prev" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="faq"></a>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright ©
140
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk03.html" title="" /><link rel="prev" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="faq"></a>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright ©
143
<a class="link" href="http://www.fsf.org" target="_top">FSF</a>
144
- </p></div></div><hr /></div><div class="qandaset"><a id="idp1581728"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
145
+ </p></div></div><hr /></div><div class="qandaset"><a id="idm270011560848"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
147
</a></dt><dt>1.2. <a href="faq.html#faq.why">
148
Why should I use libstdc++?
149
Index: libstdc++-v3/doc/html/index.html
150
===================================================================
151
--- a/src/libstdc++-v3/doc/html/index.html (.../tags/gcc_4_8_2_release)
152
+++ b/src/libstdc++-v3/doc/html/index.html (.../branches/gcc-4_8-branch)
154
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
155
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="description" content="Short Contents Copyright (C) 2008-2013 FSF Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. This is the top level of the libstdc++ documentation set. The documentation is divided into the following three sections. Manual Frequently Asked Questions API and Source Documentation" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="next" href="manual/index.html" title="The GNU C++ Library Manual" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/index.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library</h1></div><div><div class="abstract"><a id="contents"></a><p class="title"><strong>Short Contents</strong></p><p>
156
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="description" content="Short Contents Copyright (C) 2008-2013 FSF Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. This is the top level of the libstdc++ documentation set. The documentation is divided into the following three sections. Manual Frequently Asked Questions API and Source Documentation" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="next" href="manual/index.html" title="The GNU C++ Library Manual" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="manual/index.html">Next</a></td></tr></table><hr /></div><div class="set" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="set-index"></a>The GNU C++ Library</h1></div><div><div class="abstract"><a id="contents"></a><p class="title"><strong>Short Contents</strong></p><p>
157
Copyright (C) 2008-2013
158
<a class="link" href="http://www.fsf.org/" target="_top">FSF
161
</p></li><li class="listitem"><p>
162
<a class="link" href="api.html" title="The GNU C++ Library API Reference">API and Source Documentation</a>
163
</p></li></ul></div><p>
164
- </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I.
165
+ </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I.
168
</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="manual/status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/std_contents.html">II.
170
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/utilities.html">6.
173
-</a></span></dt><dd><dl><dt><span class="section"><a href="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="manual/pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="manual/memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idp13920976">Interface Design</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp13924528">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp13937824">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idp15512272">Class Hierarchy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp15534784">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp15542080">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp15556704">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idp15573056">Examples</a></span></dt><dt><span class="section"><a href="manual/memory.html#idp15576640">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/strings.html">7.
174
+</a></span></dt><dd><dl><dt><span class="section"><a href="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="manual/pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="manual/memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm270001611968">Interface Design</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm270001608416">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm270001595120">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm270000019344">Class Hierarchy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269999996832">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269999989536">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269999974912">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm269999958496">Examples</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269999954912">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/strings.html">7.
177
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="manual/strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/localization.html">8.
180
-</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#idp15778336">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers.html">9.
181
+</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#idm269999753024">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers.html">9.
184
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="manual/containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="manual/associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="manual/associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="manual/associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="manual/unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="manual/unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/iterators.html">10.
185
Index: libstdc++-v3/doc/html/api.html
186
===================================================================
187
--- a/src/libstdc++-v3/doc/html/api.html (.../tags/gcc_4_8_2_release)
188
+++ b/src/libstdc++-v3/doc/html/api.html (.../branches/gcc-4_8-branch)
190
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
191
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library API Reference</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk02.html" title="" /><link rel="prev" href="bk02.html" title="" /><link rel="next" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library API Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="api"></a>The GNU C++ Library API Reference</h1></div><div><p class="copyright">Copyright ©
192
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library API Reference</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk02.html" title="" /><link rel="prev" href="bk02.html" title="" /><link rel="next" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library API Reference</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="api"></a>The GNU C++ Library API Reference</h1></div><div><p class="copyright">Copyright ©
197
<a class="link" href="http://www.fsf.org/" target="_top">FSF
199
- </p></div><div><div class="legalnotice"><a id="idp3706336"></a><p>
200
+ </p></div><div><div class="legalnotice"><a id="idm270006235696"></a><p>
201
<a class="link" href="manual/license.html" title="License">License
203
</p></div></div></div><hr /></div><p>
204
Index: libstdc++-v3/doc/html/manual/dynamic_memory.html
205
===================================================================
206
--- a/src/libstdc++-v3/doc/html/manual/dynamic_memory.html (.../tags/gcc_4_8_2_release)
207
+++ b/src/libstdc++-v3/doc/html/manual/dynamic_memory.html (.../branches/gcc-4_8-branch)
209
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
210
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Dynamic Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="support.html" title="Chapter 4. Support" /><link rel="next" href="termination.html" title="Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Chapter 4.
211
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Dynamic Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="support.html" title="Chapter 4. Support" /><link rel="next" href="termination.html" title="Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Chapter 4.
214
</th><td width="20%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.support.memory"></a>Dynamic Memory</h2></div></div></div><p>
215
Index: libstdc++-v3/doc/html/manual/iterators.html
216
===================================================================
217
--- a/src/libstdc++-v3/doc/html/manual/iterators.html (.../tags/gcc_4_8_2_release)
218
+++ b/src/libstdc++-v3/doc/html/manual/iterators.html (.../branches/gcc-4_8-branch)
220
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
221
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="containers_and_c.html" title="Interacting with C" /><link rel="next" href="algorithms.html" title="Chapter 11. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10.
222
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="containers_and_c.html" title="Interacting with C" /><link rel="next" href="algorithms.html" title="Chapter 11. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10.
225
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers_and_c.html">Prev</a> </td><th width="60%" align="center">Part II.
227
</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators"></a>Chapter 10.
229
- <a id="idp16156992" class="indexterm"></a>
230
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="section"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="section"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.iterators.predefined"></a>Predefined</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p>
231
+ <a id="idm269999374096" class="indexterm"></a>
232
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="section"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="section"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.iterators.predefined"></a>Predefined</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p>
234
FAQ <a class="link" href="../faq.html#faq.iterator_as_pod" title="7.1.">entry</a> points out that
235
iterators are not implemented as pointers. They are a generalization
236
Index: libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html
237
===================================================================
238
--- a/src/libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html (.../tags/gcc_4_8_2_release)
239
+++ b/src/libstdc++-v3/doc/html/manual/mt_allocator_ex_single.html (.../branches/gcc-4_8-branch)
241
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
242
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Single Thread Example</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_impl.html" title="Implementation" /><link rel="next" href="mt_allocator_ex_multi.html" title="Multiple Thread Example" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Single Thread Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_ex_multi.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.example_single"></a>Single Thread Example</h2></div></div></div><p>
243
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Single Thread Example</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_impl.html" title="Implementation" /><link rel="next" href="mt_allocator_ex_multi.html" title="Multiple Thread Example" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Single Thread Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_ex_multi.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.example_single"></a>Single Thread Example</h2></div></div></div><p>
244
Let's start by describing how the data on a freelist is laid out in memory.
245
This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes):
246
</p><pre class="programlisting">
247
Index: libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
248
===================================================================
249
--- a/src/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html (.../tags/gcc_4_8_2_release)
250
+++ b/src/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html (.../branches/gcc-4_8-branch)
252
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
253
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Generalized Operations</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="numerics.html" title="Chapter 12. Numerics" /><link rel="next" href="numerics_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Chapter 12.
254
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Generalized Operations</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="numerics.html" title="Chapter 12. Numerics" /><link rel="next" href="numerics_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Chapter 12.
257
</th><td width="20%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.generalized_ops"></a>Generalized Operations</h2></div></div></div><p>
258
Index: libstdc++-v3/doc/html/manual/mt_allocator.html
259
===================================================================
260
--- a/src/libstdc++-v3/doc/html/manual/mt_allocator.html (.../tags/gcc_4_8_2_release)
261
+++ b/src/libstdc++-v3/doc/html/manual/mt_allocator.html (.../branches/gcc-4_8-branch)
263
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
264
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. The mt_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="profile_mode_diagnostics.html" title="Diagnostics" /><link rel="next" href="mt_allocator_design.html" title="Design Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. The mt_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III.
265
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. The mt_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="profile_mode_diagnostics.html" title="Diagnostics" /><link rel="next" href="mt_allocator_design.html" title="Design Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. The mt_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III.
268
-</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_design.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.mt"></a>Chapter 20. The mt_allocator</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="mt_allocator_design.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_design.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_ex_single.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="mt_allocator_ex_multi.html">Multiple Thread Example</a></span></dt></dl></div><p>
269
+</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_design.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.mt"></a>Chapter 20. The mt_allocator</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="mt_allocator_design.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_design.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_ex_single.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="mt_allocator_ex_multi.html">Multiple Thread Example</a></span></dt></dl></div><p>
270
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.intro"></a>Intro</h2></div></div></div><p>
271
The mt allocator [hereinafter referred to simply as "the allocator"]
272
is a fixed size (power of two) allocator that was initially
273
Index: libstdc++-v3/doc/html/manual/unordered_associative.html
274
===================================================================
275
--- a/src/libstdc++-v3/doc/html/manual/unordered_associative.html (.../tags/gcc_4_8_2_release)
276
+++ b/src/libstdc++-v3/doc/html/manual/unordered_associative.html (.../branches/gcc-4_8-branch)
278
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
279
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Unordered Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="associative.html" title="Associative" /><link rel="next" href="containers_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Unordered Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
280
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Unordered Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="associative.html" title="Associative" /><link rel="next" href="containers_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Unordered Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
283
</th><td width="20%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.unordered"></a>Unordered Associative</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.unordered.hash"></a>Hash Code</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="containers.unordered.cache"></a>Hash Code Caching Policy</h4></div></div></div><p>
284
Index: libstdc++-v3/doc/html/manual/configure.html
285
===================================================================
286
--- a/src/libstdc++-v3/doc/html/manual/configure.html (.../tags/gcc_4_8_2_release)
287
+++ b/src/libstdc++-v3/doc/html/manual/configure.html (.../branches/gcc-4_8-branch)
289
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
290
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Configure</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, configure, options" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="setup.html" title="Chapter 2. Setup" /><link rel="next" href="make.html" title="Make" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.configure"></a>Configure</h2></div></div></div><p>
291
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Configure</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, configure, options" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="setup.html" title="Chapter 2. Setup" /><link rel="next" href="make.html" title="Make" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.configure"></a>Configure</h2></div></div></div><p>
292
When configuring libstdc++, you'll have to configure the entire
293
<span class="emphasis"><em>gccsrcdir</em></span> directory. Consider using the
294
toplevel gcc configuration option
295
Index: libstdc++-v3/doc/html/manual/status.html
296
===================================================================
297
--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_4_8_2_release)
298
+++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-4_8-branch)
300
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
301
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I.
302
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I.
305
-</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
306
+</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
307
This status table is based on the table of contents of ISO/IEC 14882:2003.
309
This page describes the C++ support in mainline GCC SVN, not in any
311
-</p><div class="table"><a id="idp452240"></a><p class="title"><strong>Table 1.1. C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
312
+</p><div class="table"><a id="idm270008034928"></a><p class="title"><strong>Table 1.1. C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
313
<span class="emphasis"><em>18</em></span>
314
</td><td colspan="3" align="left">
315
<span class="emphasis"><em>Language support</em></span>
318
This page describes the C++11 support in mainline GCC SVN, not in any
320
-</p><div class="table"><a id="idp8670848"></a><p class="title"><strong>Table 1.2. C++ 2011 Implementation Status</strong></p><div class="table-contents"><table summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
321
+</p><div class="table"><a id="idm270007982624"></a><p class="title"><strong>Table 1.2. C++ 2011 Implementation Status</strong></p><div class="table-contents"><table summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
322
<span class="emphasis"><em>18</em></span>
323
</td><td colspan="3" align="left">
324
<span class="emphasis"><em>Language support</em></span>
326
is_trivially_copy_constructible, is_trivially_move_constructible,
327
is_trivially_assignable, is_trivially_default_assignable,
328
is_trivially_copy_assignable, is_trivially_move_assignable
329
- </td></tr><tr><td align="left">20.9.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.6</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code"><ratio></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.4</td><td align="left">Arithmetic on <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5</td><td align="left">Comparison of <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.6</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.4.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.11.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Partial</td><td align="left">Missing constexpr for non-member arithmetic operations</td></tr><tr><td align="left">20.11.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.7.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.2</td><td align="left">Class <code class="code">steady_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.12</td><td align="left">Scoped allocator adaptor</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">20.12.1</td><td align="left">Header <code class="code"><scoped_allocator></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.12.2</td><td align="left">Scoped allocator adaptor member types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.3</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.12.4</td><td align="left">Scoped allocator adaptor members</td><td align="left">Partial</td><td align="left">OUTERMOST is not recursive.</td></tr><tr><td align="left">20.12.5</td><td align="left">Scoped allocator operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.13</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
330
+ </td></tr><tr><td align="left">20.9.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.9.7.6</td><td align="left">Other transformations</td><td align="left">Partial</td><td align="left">Missing <code class="code">aligned_union</code>.</td></tr><tr><td align="left">20.10</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code"><ratio></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.4</td><td align="left">Arithmetic on <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5</td><td align="left">Comparison of <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.6</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.4.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.11.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Partial</td><td align="left">Missing constexpr for non-member arithmetic operations</td></tr><tr><td align="left">20.11.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.7.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.2</td><td align="left">Class <code class="code">steady_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.12</td><td align="left">Scoped allocator adaptor</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">20.12.1</td><td align="left">Header <code class="code"><scoped_allocator></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.12.2</td><td align="left">Scoped allocator adaptor member types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.3</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.12.4</td><td align="left">Scoped allocator adaptor members</td><td align="left">Partial</td><td align="left">OUTERMOST is not recursive.</td></tr><tr><td align="left">20.12.5</td><td align="left">Scoped allocator operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.13</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
331
<span class="emphasis"><em>21</em></span>
332
</td><td colspan="3" align="left">
333
<span class="emphasis"><em>Strings</em></span>
336
This page describes the TR1 support in mainline GCC SVN, not in any particular
338
-</p><div class="table"><a id="idp7483200"></a><p class="title"><strong>Table 1.3. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code"><functional></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code"><memory></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
339
+</p><div class="table"><a id="idm270006687472"></a><p class="title"><strong>Table 1.3. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code"><functional></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code"><memory></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
342
<a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
345
This page describes the TR 24733 support in mainline GCC SVN, not in any
347
-</p><div class="table"><a id="idp12559072"></a><p class="title"><strong>Table 1.4. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
348
+</p><div class="table"><a id="idm270002960368"></a><p class="title"><strong>Table 1.4. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
349
<span class="emphasis"><em>0</em></span>
350
</td><td colspan="3" align="left">
351
<span class="emphasis"><em>Introduction</em></span>
352
Index: libstdc++-v3/doc/html/manual/profile_mode_devel.html
353
===================================================================
354
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_devel.html (.../tags/gcc_4_8_2_release)
355
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_devel.html (.../branches/gcc-4_8-branch)
357
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
358
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Developer Information</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_impl.html" title="Implementation Issues" /><link rel="next" href="profile_mode_diagnostics.html" title="Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_diagnostics.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.developer"></a>Developer Information</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"></a>Big Picture</h3></div></div></div><p>The profile mode headers are included with
359
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Developer Information</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_impl.html" title="Implementation Issues" /><link rel="next" href="profile_mode_diagnostics.html" title="Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_diagnostics.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.developer"></a>Developer Information</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"></a>Big Picture</h3></div></div></div><p>The profile mode headers are included with
360
<code class="code">-D_GLIBCXX_PROFILE</code> through preprocessor directives in
361
<code class="code">include/std/*</code>.
362
</p><p>Instrumented implementations are provided in
363
Index: libstdc++-v3/doc/html/manual/debug_mode_design.html
364
===================================================================
365
--- a/src/libstdc++-v3/doc/html/manual/debug_mode_design.html (.../tags/gcc_4_8_2_release)
366
+++ b/src/libstdc++-v3/doc/html/manual/debug_mode_design.html (.../branches/gcc-4_8-branch)
368
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
369
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode_using.html" title="Using" /><link rel="next" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.design"></a>Design</h2></div></div></div><p>
370
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode_using.html" title="Using" /><link rel="next" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_using.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.design"></a>Design</h2></div></div></div><p>
371
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.design.goals"></a>Goals</h3></div></div></div><p>
372
</p><p> The libstdc++ debug mode replaces unsafe (but efficient) standard
373
containers and iterators with semantically equivalent safe standard
375
</p><p> There are several existing implementations of debug modes for C++
376
standard library implementations, although none of them directly
377
supports debugging for programs using libstdc++. The existing
378
- implementations include:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a class="link" href="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html" target="_top">SafeSTL</a>:
379
+ implementations include:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a class="link" href="http://www.cs.sjsu.edu/faculty/horstman/safestl.html" target="_top">SafeSTL</a>:
380
SafeSTL was the original debugging version of the Standard Template
381
Library (STL), implemented by Cay S. Horstmann on top of the
382
Hewlett-Packard STL. Though it inspired much work in this area, it
383
Index: libstdc++-v3/doc/html/manual/policy_data_structures_design.html
384
===================================================================
385
--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures_design.html (.../tags/gcc_4_8_2_release)
386
+++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures_design.html (.../branches/gcc-4_8-branch)
388
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
389
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures_using.html" title="Using" /><link rel="next" href="policy_based_data_structures_test.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_using.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_based_data_structures_test.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.pbds.design"></a>Design</h2></div></div></div><p></p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.design.concepts"></a>Concepts</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.design.concepts.null_type"></a>Null Policy Classes</h4></div></div></div><p>
390
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures_using.html" title="Using" /><link rel="next" href="policy_based_data_structures_test.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_using.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_based_data_structures_test.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.pbds.design"></a>Design</h2></div></div></div><p></p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.design.concepts"></a>Concepts</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.design.concepts.null_type"></a>Null Policy Classes</h4></div></div></div><p>
391
Associative containers are typically parametrized by various
392
policies. For example, a hash-based associative container is
393
parametrized by a hash-functor, transforming each key into an
395
naturally; collision-chaining hash tables (label B) store
396
equivalent-key values in the same bucket, the bucket can be
397
arranged so that equivalent-key values are consecutive.
398
- </p><div class="figure"><a id="idp18000448"></a><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_1.png" align="middle" alt="Non-unique Mapping Standard Containers" /></div></div></div><br class="figure-break" /><p>
399
+ </p><div class="figure"><a id="idm269997530416"></a><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_1.png" align="middle" alt="Non-unique Mapping Standard Containers" /></div></div></div><br class="figure-break" /><p>
400
Put differently, the standards' non-unique mapping
401
associative-containers are associative containers that map
402
primary keys to linked lists that are embedded into the
404
first graphic above. Labels A and B, respectively. Each shaded
405
box represents some size-type or secondary
406
associative-container.
407
- </p><div class="figure"><a id="idp18023952"></a><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_3.png" align="middle" alt="Non-unique Mapping Containers" /></div></div></div><br class="figure-break" /><p>
408
+ </p><div class="figure"><a id="idm269997506912"></a><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_3.png" align="middle" alt="Non-unique Mapping Containers" /></div></div></div><br class="figure-break" /><p>
409
In the first example above, then, one would use an associative
410
container mapping each user to an associative container which
411
maps each application id to a start time (see
413
shows invariants for order-preserving containers: point-type
414
iterators are synonymous with range-type iterators.
415
Orthogonally, <span class="emphasis"><em>C</em></span>shows invariants for "set"
416
- containers: iterators are synonymous with const iterators.</p><div class="figure"><a id="idp18043824"></a><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterator_hierarchy.png" align="middle" alt="Point Iterator Hierarchy" /></div></div></div><br class="figure-break" /><p>Note that point-type iterators in self-organizing containers
417
+ containers: iterators are synonymous with const iterators.</p><div class="figure"><a id="idm269997487104"></a><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterator_hierarchy.png" align="middle" alt="Point Iterator Hierarchy" /></div></div></div><br class="figure-break" /><p>Note that point-type iterators in self-organizing containers
418
(hash-based associative containers) lack movement
419
operators, such as <code class="literal">operator++</code> - in fact, this
420
is the reason why this library differentiates from the standard C++ librarys
422
to the question of whether point-type iterators and range-type
423
iterators are valid. The graphic below shows tags corresponding to
424
different types of invalidation guarantees.
425
- </p><div class="figure"><a id="idp18057168"></a><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_tag_hierarchy.png" align="middle" alt="Invalidation Guarantee Tags Hierarchy" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
426
+ </p><div class="figure"><a id="idm269997473760"></a><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_tag_hierarchy.png" align="middle" alt="Invalidation Guarantee Tags Hierarchy" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
427
<code class="classname">basic_invalidation_guarantee</code>
428
corresponds to a basic guarantee that a point-type iterator,
429
a found pointer, or a found reference, remains valid as long
432
This library contains a container tag hierarchy corresponding to the
434
- </p><div class="figure"><a id="idp18087392"></a><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_container_tag_hierarchy.png" align="middle" alt="Container Tag Hierarchy" /></div></div></div><br class="figure-break" /><p>
435
+ </p><div class="figure"><a id="idm269997443664"></a><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_container_tag_hierarchy.png" align="middle" alt="Container Tag Hierarchy" /></div></div></div><br class="figure-break" /><p>
436
Given any container <span class="type">Cntnr</span>, the tag of
437
the underlying data structure can be found via <code class="literal">typename
438
Cntnr::container_category</code>.
440
collision-chaining container, except for the following.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><code class="classname">Comb_Probe_Fn</code> describes how to transform a probe
441
sequence into a sequence of positions within the table.</p></li><li class="listitem"><p><code class="classname">Probe_Fn</code> describes a probe sequence policy.</p></li></ol></div><p>Some of the default template values depend on the values of
442
other parameters, and are explained below.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="container.hash.details"></a>Details</h5></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.hash_policies"></a>Hash Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.general"></a>General</h6></div></div></div><p>Following is an explanation of some functions which hashing
443
- involves. The graphic below illustrates the discussion.</p><div class="figure"><a id="idp18127536"></a><p class="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
444
+ involves. The graphic below illustrates the discussion.</p><div class="figure"><a id="idm269997403584"></a><p class="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
445
range-hashing functions</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_ranged_hash_range_hashing_fns.png" align="middle" alt="Hash functions, ranged-hash functions, and range-hashing functions" /></div></div></div><br class="figure-break" /><p>Let U be a domain (e.g., the integers, or the
446
strings of 3 characters). A hash-table algorithm needs to map
447
elements of U "uniformly" into the range [0,..., m -
449
Z<sub>+</sub>,</p><p>which maps a non-negative hash value, and a non-negative
450
range upper-bound into a non-negative integral in the range
451
between 0 (inclusive) and the range upper bound (exclusive),
452
- i.e., for any r in Z<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><div class="equation"><a id="idp18141344"></a><p class="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><div class="equation-contents"><span class="mathphrase">
453
+ i.e., for any r in Z<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><div class="equation"><a id="idm269997389776"></a><p class="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><div class="equation-contents"><span class="mathphrase">
454
f(u , m) = g(h(u), m)
455
</span></div></div><br class="equation-break" /><p>From the above, it is obvious that given g and
456
h, f can always be composed (however the converse
458
transforming the sequence of hash values into a sequence of
459
positions.</p></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.range"></a>Range Hashing</h6></div></div></div><p>Some common choices for range-hashing functions are the
460
division, multiplication, and middle-square methods (<a class="xref" href="policy_data_structures.html#biblio.knuth98sorting" title="The Art of Computer Programming - Sorting and Searching">[biblio.knuth98sorting]</a>), defined
461
- as</p><div class="equation"><a id="idp18147232"></a><p class="title"><strong>Equation 22.2. Range-Hashing, Division Method</strong></p><div class="equation-contents"><span class="mathphrase">
462
+ as</p><div class="equation"><a id="idm269997383888"></a><p class="title"><strong>Equation 22.2. Range-Hashing, Division Method</strong></p><div class="equation-contents"><span class="mathphrase">
464
</span></div></div><br class="equation-break" /><p>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</p><p>and</p><p>g(r, m) = ⌈ u/v ( r<sup>2</sup> mod v ) ⌉</p><p>respectively, for some positive integrals u and
465
v (typically powers of 2), and some a. Each of
467
implement using the low
468
level % (modulo) operation (for any m), or the
469
low level & (bit-mask) operation (for the case where
470
- m is a power of 2), i.e.,</p><div class="equation"><a id="idp18151744"></a><p class="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><div class="equation-contents"><span class="mathphrase">
471
+ m is a power of 2), i.e.,</p><div class="equation"><a id="idm269997379376"></a><p class="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><div class="equation-contents"><span class="mathphrase">
473
- </span></div></div><br class="equation-break" /><p>and</p><div class="equation"><a id="idp18153568"></a><p class="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><div class="equation-contents"><span class="mathphrase">
474
+ </span></div></div><br class="equation-break" /><p>and</p><div class="equation"><a id="idm269997377552"></a><p class="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><div class="equation-contents"><span class="mathphrase">
475
g(r, m) = r & m - 1, (with m =
476
2<sup>k</sup> for some k)
477
</span></div></div><br class="equation-break" /><p>respectively.</p><p>The % (modulo) implementation has the advantage that for
479
s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]
480
</p><p>be a string of t characters, each of which is from
481
domain S. Consider the following ranged-hash
482
- function:</p><div class="equation"><a id="idp18163200"></a><p class="title"><strong>Equation 22.5.
483
+ function:</p><div class="equation"><a id="idm269997367984"></a><p class="title"><strong>Equation 22.5.
484
A Standard String Hash Function
485
</strong></p><div class="equation-contents"><span class="mathphrase">
486
f<sub>1</sub>(s, m) = ∑ <sub>i =
488
of a long DNA sequence (and so S = {'A', 'C', 'G',
489
'T'}). In this case, scanning the entire string might be
490
prohibitively expensive. A possible alternative might be to use
491
- only the first k characters of the string, where</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><div class="equation"><a id="idp18169344"></a><p class="title"><strong>Equation 22.6.
492
+ only the first k characters of the string, where</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><div class="equation"><a id="idm269997361840"></a><p class="title"><strong>Equation 22.6.
493
Only k String DNA Hash
494
</strong></p><div class="equation-contents"><span class="mathphrase">
495
f<sub>2</sub>(s, m) = ∑ <sub>i
496
@@ -606,12 +606,12 @@
497
the container transforms the key into a non-negative integral
498
using the hash functor (points B and C), and transforms the
499
result into a position using the combining functor (points D
500
- and E).</p><div class="figure"><a id="idp18191968"></a><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" align="middle" alt="Insert hash sequence diagram" /></div></div></div><br class="figure-break" /><p>If <code class="classname">cc_hash_table</code>'s
501
+ and E).</p><div class="figure"><a id="idm269997339216"></a><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" align="middle" alt="Insert hash sequence diagram" /></div></div></div><br class="figure-break" /><p>If <code class="classname">cc_hash_table</code>'s
502
hash-functor, <code class="classname">Hash_Fn</code> is instantiated by <code class="classname">null_type</code> , then <code class="classname">Comb_Hash_Fn</code> is taken to be
503
a ranged-hash function. The graphic below shows an <code class="function">insert</code> sequence
504
diagram. The user inserts an element (point A), the container
505
transforms the key into a position using the combining functor
506
- (points B and C).</p><div class="figure"><a id="idp18199024"></a><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" align="middle" alt="Insert hash sequence diagram with a null policy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"></a>
507
+ (points B and C).</p><div class="figure"><a id="idm269997332160"></a><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" align="middle" alt="Insert hash sequence diagram with a null policy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"></a>
509
</h6></div></div></div><p><code class="classname">gp_hash_table</code> is parametrized by
510
<code class="classname">Hash_Fn</code>, <code class="classname">Probe_Fn</code>,
512
a linear probe and a quadratic probe function,
513
respectively.</p></li></ol></div><p>
514
The graphic below shows the relationships.
515
- </p><div class="figure"><a id="idp18215840"></a><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_policy_cd.png" align="middle" alt="Hash policy class diagram" /></div></div></div><br class="figure-break" /></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"></a>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
516
+ </p><div class="figure"><a id="idm269997315408"></a><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_policy_cd.png" align="middle" alt="Hash policy class diagram" /></div></div></div><br class="figure-break" /></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"></a>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
517
shrink. It is necessary to specify policies to determine how
518
and when a hash table should change its size. Usually, resize
519
policies can be decomposed into orthogonal policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>A size policy indicating how a hash table
520
@@ -667,10 +667,10 @@
521
and some load factor be denoted by Α. We would like to
522
calculate the minimal length of k, such that if there were Α
523
m elements in the hash table, a probe sequence of length k would
524
- be found with probability at most 1/m.</p><div class="figure"><a id="idp18234944"></a><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_balls_and_bins.png" align="middle" alt="Balls and bins" /></div></div></div><br class="figure-break" /><p>Denote the probability that a probe sequence of length
525
+ be found with probability at most 1/m.</p><div class="figure"><a id="idm269997296368"></a><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_balls_and_bins.png" align="middle" alt="Balls and bins" /></div></div></div><br class="figure-break" /><p>Denote the probability that a probe sequence of length
526
k appears in bin i by p<sub>i</sub>, the
527
length of the probe sequence of bin i by
528
- l<sub>i</sub>, and assume uniform distribution. Then</p><div class="equation"><a id="idp18240448"></a><p class="title"><strong>Equation 22.7.
529
+ l<sub>i</sub>, and assume uniform distribution. Then</p><div class="equation"><a id="idm269997290864"></a><p class="title"><strong>Equation 22.7.
530
Probability of Probe Sequence of Length k
531
</strong></p><div class="equation-contents"><span class="mathphrase">
534
l<sub>i</sub> are negatively-dependent
535
(<a class="xref" href="policy_data_structures.html#biblio.dubhashi98neg" title="Balls and bins: A study in negative dependence">[biblio.dubhashi98neg]</a>)
537
- I(.) denote the indicator function. Then</p><div class="equation"><a id="idp18247216"></a><p class="title"><strong>Equation 22.8.
538
+ I(.) denote the indicator function. Then</p><div class="equation"><a id="idm269997284096"></a><p class="title"><strong>Equation 22.8.
539
Probability Probe Sequence in Some Bin
540
</strong></p><div class="equation-contents"><span class="mathphrase">
541
P( exists<sub>i</sub> l<sub>i</sub> ≥ k ) =
543
a resize is needed, and if so, what is the new size (points D
544
to G); following the resize, it notifies the policy that a
545
resize has completed (point H); finally, the element is
546
- inserted, and the policy notified (point I).</p><div class="figure"><a id="idp18265728"></a><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" align="middle" alt="Insert resize sequence diagram" /></div></div></div><br class="figure-break" /><p>In practice, a resize policy can be usually orthogonally
547
+ inserted, and the policy notified (point I).</p><div class="figure"><a id="idm269997265648"></a><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" align="middle" alt="Insert resize sequence diagram" /></div></div></div><br class="figure-break" /><p>In practice, a resize policy can be usually orthogonally
548
decomposed to a size policy and a trigger policy. Consequently,
549
the library contains a single class for instantiating a resize
550
policy: <code class="classname">hash_standard_resize_policy</code>
552
both, and acts as a standard delegate (<a class="xref" href="policy_data_structures.html#biblio.gof" title="Design Patterns - Elements of Reusable Object-Oriented Software">[biblio.gof]</a>)
553
to these policies.</p><p>The two graphics immediately below show sequence diagrams
554
illustrating the interaction between the standard resize policy
555
- and its trigger and size policies, respectively.</p><div class="figure"><a id="idp18273504"></a><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
556
- diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" align="middle" alt="Standard resize policy trigger sequence diagram" /></div></div></div><br class="figure-break" /><div class="figure"><a id="idp18277664"></a><p class="title"><strong>Figure 22.21. Standard resize policy size sequence
557
+ and its trigger and size policies, respectively.</p><div class="figure"><a id="idm269997257872"></a><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
558
+ diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" align="middle" alt="Standard resize policy trigger sequence diagram" /></div></div></div><br class="figure-break" /><div class="figure"><a id="idm269997253712"></a><p class="title"><strong>Figure 22.21. Standard resize policy size sequence
559
diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram3.png" align="middle" alt="Standard resize policy size sequence diagram" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.impl.predefined"></a>Predefined Policies</h6></div></div></div><p>The library includes the following
560
instantiations of size and trigger policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><code class="classname">hash_load_check_resize_trigger</code>
561
implements a load check trigger policy.</p></li><li class="listitem"><p><code class="classname">cc_hash_max_collision_check_resize_trigger</code>
563
each node, and maintains node invariants (see <a class="xref" href="policy_data_structures.html#biblio.clrs2001" title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>.) The first stores in
564
each node the size of the sub-tree rooted at the node; the
565
second stores at each node the maximal endpoint of the
566
- intervals at the sub-tree rooted at the node.</p><div class="figure"><a id="idp18355696"></a><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invariants.png" align="middle" alt="Tree node invariants" /></div></div></div><br class="figure-break" /><p>Supporting such trees is difficult for a number of
567
+ intervals at the sub-tree rooted at the node.</p><div class="figure"><a id="idm269997175616"></a><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invariants.png" align="middle" alt="Tree node invariants" /></div></div></div><br class="figure-break" /><p>Supporting such trees is difficult for a number of
568
reasons:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>There must be a way to specify what a node's metadata
569
should be (if any).</p></li><li class="listitem"><p>Various operations can invalidate node
570
invariants. The graphic below shows how a right rotation,
572
metadata.</p></li><li class="listitem"><p>It is not feasible to know in advance which methods trees
573
can support. Besides the usual <code class="classname">find</code> method, the
574
first tree can support a <code class="classname">find_by_order</code> method, while
575
- the second can support an <code class="classname">overlaps</code> method.</p></li></ol></div><div class="figure"><a id="idp18365136"></a><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invalidations.png" align="middle" alt="Tree node invalidation" /></div></div></div><br class="figure-break" /><p>These problems are solved by a combination of two means:
576
+ the second can support an <code class="classname">overlaps</code> method.</p></li></ol></div><div class="figure"><a id="idm269997166176"></a><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invalidations.png" align="middle" alt="Tree node invalidation" /></div></div></div><br class="figure-break" /><p>These problems are solved by a combination of two means:
577
node iterators, and template-template node updater
578
parameters.</p><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.node.iterators"></a>Node Iterators</h6></div></div></div><p>Each tree-based container defines two additional iterator
579
types, <code class="classname">const_node_iterator</code>
581
<code class="classname">node_update</code> class, and publicly subclasses
582
<code class="classname">node_update</code>. The graphic below shows this
583
scheme, as well as some predefined policies (which are explained
584
- below).</p><div class="figure"><a id="idp18378304"></a><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_updator_policy_cd.png" align="middle" alt="A tree and its update policy" /></div></div></div><br class="figure-break" /><p><code class="classname">node_update</code> (an instantiation of
585
+ below).</p><div class="figure"><a id="idm269997153072"></a><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_updator_policy_cd.png" align="middle" alt="A tree and its update policy" /></div></div></div><br class="figure-break" /><p><code class="classname">node_update</code> (an instantiation of
586
<code class="classname">Node_Update</code>) must define <code class="classname">metadata_type</code> as
587
the type of metadata it requires. For order statistics,
588
e.g., <code class="classname">metadata_type</code> might be <code class="classname">size_t</code>.
590
<code class="classname">nd_it</code>. For example, say node x in the
591
graphic below label A has an invalid invariant, but its' children,
592
y and z have valid invariants. After the invocation, all three
593
- nodes should have valid invariants, as in label B.</p><div class="figure"><a id="idp18389968"></a><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_restoring_node_invariants.png" align="middle" alt="Restoring node invariants" /></div></div></div><br class="figure-break" /><p>When a tree operation might invalidate some node invariant,
594
+ nodes should have valid invariants, as in label B.</p><div class="figure"><a id="idm269997141408"></a><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_restoring_node_invariants.png" align="middle" alt="Restoring node invariants" /></div></div></div><br class="figure-break" /><p>When a tree operation might invalidate some node invariant,
595
it invokes this method in its <code class="classname">node_update</code> base to
596
restore the invariant. For example, the graphic below shows
597
an <code class="function">insert</code> operation (point A); the tree performs some
599
C, and D). (It is well known that any <code class="function">insert</code>,
600
<code class="function">erase</code>, <code class="function">split</code> or <code class="function">join</code>, can restore
601
all node invariants by a small number of node invariant updates (<a class="xref" href="policy_data_structures.html#biblio.clrs2001" title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>)
602
- .</p><div class="figure"><a id="idp18398144"></a><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_update_seq_diagram.png" align="middle" alt="Insert update sequence" /></div></div></div><br class="figure-break" /><p>To complete the description of the scheme, three questions
603
+ .</p><div class="figure"><a id="idm269997133232"></a><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_update_seq_diagram.png" align="middle" alt="Insert update sequence" /></div></div></div><br class="figure-break" /><p>To complete the description of the scheme, three questions
604
need to be answered:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>How can a tree which supports order statistics define a
605
method such as <code class="classname">find_by_order</code>?</p></li><li class="listitem"><p>How can the node updater base access methods of the
606
tree?</p></li><li class="listitem"><p>How can the following cyclic dependency be resolved?
608
node's metadata (this is halting reducible). In the graphic
609
below, assume the shaded node is inserted. The tree would have
610
to traverse the useless path shown to the root, applying
611
- redundant updates all the way.</p></li></ol></div><div class="figure"><a id="idp18420400"></a><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_rationale_null_node_updator.png" align="middle" alt="Useless update path" /></div></div></div><br class="figure-break" /><p>A null policy class, <code class="classname">null_node_update</code>
612
+ redundant updates all the way.</p></li></ol></div><div class="figure"><a id="idm269997110976"></a><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_rationale_null_node_updator.png" align="middle" alt="Useless update path" /></div></div></div><br class="figure-break" /><p>A null policy class, <code class="classname">null_node_update</code>
613
solves both these problems. The tree detects that node
614
invariants are irrelevant, and defines all accordingly.</p></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.details.split"></a>Split and Join</h6></div></div></div><p>Tree-based containers support split and join methods.
615
It is possible to split a tree so that it passes
616
@@ -1071,7 +1071,7 @@
617
sub-tree with leafs "a" and "as". The maximal common prefix is
618
"a". The internal node contains, consequently, to const
619
iterators, one pointing to <code class="varname">'a'</code>, and the other to
620
- <code class="varname">'s'</code>.</p><div class="figure"><a id="idp18465088"></a><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_pat_trie.png" align="middle" alt="A PATRICIA trie" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>Trie-based containers support node invariants, as do
621
+ <code class="varname">'s'</code>.</p><div class="figure"><a id="idm269997066288"></a><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_pat_trie.png" align="middle" alt="A PATRICIA trie" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>Trie-based containers support node invariants, as do
622
tree-based containers. There are two minor
623
differences, though, which, unfortunately, thwart sharing them
624
sharing the same node-updating policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>A trie's <code class="classname">Node_Update</code> template-template
625
@@ -1080,7 +1080,7 @@
626
parametrized by <code class="classname">Cmp_Fn</code>.</p></li><li class="listitem"><p>Tree-based containers store values in all nodes, while
627
trie-based containers (at least in this implementation) store
628
values in leafs.</p></li></ol></div><p>The graphic below shows the scheme, as well as some predefined
629
- policies (which are explained below).</p><div class="figure"><a id="idp18475584"></a><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_trie_node_updator_policy_cd.png" align="middle" alt="A trie and its update policy" /></div></div></div><br class="figure-break" /><p>This library offers the following pre-defined trie node
630
+ policies (which are explained below).</p><div class="figure"><a id="idm269997055856"></a><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_trie_node_updator_policy_cd.png" align="middle" alt="A trie and its update policy" /></div></div></div><br class="figure-break" /><p>This library offers the following pre-defined trie node
631
updating policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
632
<code class="classname">trie_order_statistics_node_update</code>
633
supports order statistics.
634
@@ -1128,7 +1128,7 @@
635
simple list of integer keys. If we search for the integer 6, we
636
are paying an overhead: the link with key 6 is only the fifth
637
link; if it were the first link, it could be accessed
638
- faster.</p><div class="figure"><a id="idp18506160"></a><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_simple_list.png" align="middle" alt="A simple list" /></div></div></div><br class="figure-break" /><p>List-update algorithms reorder lists as elements are
639
+ faster.</p><div class="figure"><a id="idm269997025344"></a><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_simple_list.png" align="middle" alt="A simple list" /></div></div></div><br class="figure-break" /><p>List-update algorithms reorder lists as elements are
640
accessed. They try to determine, by the access history, which
641
keys to move to the front of the list. Some of these algorithms
642
require adding some metadata alongside each entry.</p><p>For example, in the graphic below label A shows the counter
643
@@ -1138,7 +1138,7 @@
644
predetermined value, say 10, as shown in label C, the count is set
645
to 0 and the node is moved to the front of the list, as in label
647
- </p><div class="figure"><a id="idp18511744"></a><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_list_update.png" align="middle" alt="The counter algorithm" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"></a>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
648
+ </p><div class="figure"><a id="idm269997019760"></a><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_list_update.png" align="middle" alt="The counter algorithm" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"></a>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
649
implementing any algorithm moving nodes to the front of the
650
list (policies implementing algorithms interchanging nodes are
651
unsupported).</p><p>Associative containers based on lists are parametrized by a
652
@@ -1310,7 +1310,7 @@
653
sequence; the second uses a tree (or forest of trees), which is
654
typically less structured than an associative container's tree;
655
the third simply uses an associative container. These are
656
- shown in the graphic below, in labels A1 and A2, label B, and label C.</p><div class="figure"><a id="idp18575568"></a><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" align="middle" alt="Underlying Priority-Queue Data-Structures." /></div></div></div><br class="figure-break" /><p>Roughly speaking, any value that is both pushed and popped
657
+ shown in the graphic below, in labels A1 and A2, label B, and label C.</p><div class="figure"><a id="idm269996955920"></a><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" align="middle" alt="Underlying Priority-Queue Data-Structures." /></div></div></div><br class="figure-break" /><p>Roughly speaking, any value that is both pushed and popped
658
from a priority queue must incur a logarithmic expense (in the
659
amortized sense). Any priority queue implementation that would
660
avoid this, would violate known bounds on comparison-based
661
@@ -1390,7 +1390,7 @@
662
container <code class="classname">Cntnr</code>, the tag of the underlying
663
data structure can be found via <code class="classname">typename
664
Cntnr::container_category</code>; this is one of the possible tags shown in the graphic below.
665
- </p><div class="figure"><a id="idp18610544"></a><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" align="middle" alt="Priority-Queue Data-Structure Tags." /></div></div></div><br class="figure-break" /><p>Additionally, a traits mechanism can be used to query a
666
+ </p><div class="figure"><a id="idm269996920880"></a><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" align="middle" alt="Priority-Queue Data-Structure Tags." /></div></div></div><br class="figure-break" /><p>Additionally, a traits mechanism can be used to query a
667
container type for its attributes. Given any container
668
<code class="classname">Cntnr</code>, then </p><pre class="programlisting">__gnu_pbds::container_traits<Cntnr></pre><p>
669
is a traits class identifying the properties of the
670
Index: libstdc++-v3/doc/html/manual/using.html
671
===================================================================
672
--- a/src/libstdc++-v3/doc/html/manual/using.html (.../tags/gcc_4_8_2_release)
673
+++ b/src/libstdc++-v3/doc/html/manual/using.html (.../branches/gcc-4_8-branch)
675
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
676
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I.
677
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="make.html" title="Make" /><link rel="next" href="using_headers.html" title="Headers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><th width="60%" align="center">Part I.
680
-</th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.flags"></a>Command Options</h2></div></div></div><p>
681
+</th><td width="20%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.using"></a>Chapter 3. Using</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.flags"></a>Command Options</h2></div></div></div><p>
682
The set of features available in the GNU C++ library is shaped
684
several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Invoking-GCC.html" target="_top">GCC
686
enumerated and detailed in the table below.
688
By default, <span class="command"><strong>g++</strong></span> is equivalent to <span class="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect.
689
- </p><div class="table"><a id="idp13051936"></a><p class="title"><strong>Table 3.1. C++ Command Options</strong></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++11</code></td><td align="left">Use the 2011 ISO C++ standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++11</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++11 <thread>, <future>,
690
+ </p><div class="table"><a id="idm270002481088"></a><p class="title"><strong>Table 3.1. C++ Command Options</strong></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++11</code></td><td align="left">Use the 2011 ISO C++ standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++11</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++11 <thread>, <future>,
691
<mutex>, or <condition_variable>.</td></tr><tr><td align="left"><code class="literal">-fopenmp</code></td><td align="left">For <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel</a> mode.</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
692
\ No newline at end of file
693
Index: libstdc++-v3/doc/html/manual/profile_mode_impl.html
694
===================================================================
695
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_impl.html (.../tags/gcc_4_8_2_release)
696
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_impl.html (.../branches/gcc-4_8-branch)
698
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
699
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_cost_model.html" title="Empirical Cost Model" /><link rel="next" href="profile_mode_devel.html" title="Developer Information" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_cost_model.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_devel.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.implementation"></a>Implementation Issues</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"></a>Stack Traces</h3></div></div></div><p>
700
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_cost_model.html" title="Empirical Cost Model" /><link rel="next" href="profile_mode_devel.html" title="Developer Information" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_cost_model.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_devel.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.implementation"></a>Implementation Issues</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"></a>Stack Traces</h3></div></div></div><p>
701
Accurate stack traces are needed during profiling since we group events by
702
call context and dynamic instance. Without accurate traces, diagnostics
703
may be hard to interpret. For instance, when giving advice to the user
704
Index: libstdc++-v3/doc/html/manual/ext_containers.html
705
===================================================================
706
--- a/src/libstdc++-v3/doc/html/manual/ext_containers.html (.../tags/gcc_4_8_2_release)
707
+++ b/src/libstdc++-v3/doc/html/manual/ext_containers.html (.../branches/gcc-4_8-branch)
709
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
710
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. HP/SGI Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="policy_data_structures_ack.html" title="Acknowledgments" /><link rel="next" href="ext_sgi.html" title="Deprecated" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. HP/SGI Extensions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_ack.html">Prev</a> </td><th width="60%" align="center">Part III.
711
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. HP/SGI Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="policy_data_structures_ack.html" title="Acknowledgments" /><link rel="next" href="ext_sgi.html" title="Deprecated" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. HP/SGI Extensions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_ack.html">Prev</a> </td><th width="60%" align="center">Part III.
714
-</th><td width="20%" align="right"> <a accesskey="n" href="ext_sgi.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 23. HP/SGI Extensions</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.sgi">Backwards Compatibility</a></span></dt><dt><span class="section"><a href="ext_sgi.html">Deprecated</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>Backwards Compatibility</h2></div></div></div><p>A few extensions and nods to backwards-compatibility have
715
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_sgi.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 23. HP/SGI Extensions</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.sgi">Backwards Compatibility</a></span></dt><dt><span class="section"><a href="ext_sgi.html">Deprecated</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>Backwards Compatibility</h2></div></div></div><p>A few extensions and nods to backwards-compatibility have
716
been made with containers. Those dealing with older SGI-style
717
allocators are dealt with elsewhere. The remaining ones all deal
719
Index: libstdc++-v3/doc/html/manual/ext_concurrency_use.html
720
===================================================================
721
--- a/src/libstdc++-v3/doc/html/manual/ext_concurrency_use.html (.../tags/gcc_4_8_2_release)
722
+++ b/src/libstdc++-v3/doc/html/manual/ext_concurrency_use.html (.../branches/gcc-4_8-branch)
724
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
725
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="prev" href="ext_concurrency_impl.html" title="Implementation" /><link rel="next" href="appendix.html" title="Part IV. Appendices" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="appendix.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows:
726
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="prev" href="ext_concurrency_impl.html" title="Implementation" /><link rel="next" href="appendix.html" title="Part IV. Appendices" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency_impl.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="appendix.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows:
727
</p><pre class="programlisting">
728
#include <ext/concurrence.h>
730
Index: libstdc++-v3/doc/html/manual/ext_io.html
731
===================================================================
732
--- a/src/libstdc++-v3/doc/html/manual/ext_io.html (.../tags/gcc_4_8_2_release)
733
+++ b/src/libstdc++-v3/doc/html/manual/ext_io.html (.../branches/gcc-4_8-branch)
735
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
736
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_iterators.html" title="Chapter 27. Iterators" /><link rel="next" href="ext_demangling.html" title="Chapter 29. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part III.
737
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_iterators.html" title="Chapter 27. Iterators" /><link rel="next" href="ext_demangling.html" title="Chapter 29. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part III.
740
-</th><td width="20%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 28. Input and Output</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p>
741
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 28. Input and Output</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p>
742
Extensions allowing <code class="code">filebuf</code>s to be constructed from
743
"C" types like FILE*s and file descriptors.
744
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.io.filebuf_derived"></a>Derived filebufs</h2></div></div></div><p>The v2 library included non-standard extensions to construct
745
Index: libstdc++-v3/doc/html/manual/termination.html
746
===================================================================
747
--- a/src/libstdc++-v3/doc/html/manual/termination.html (.../tags/gcc_4_8_2_release)
748
+++ b/src/libstdc++-v3/doc/html/manual/termination.html (.../branches/gcc-4_8-branch)
750
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
751
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Termination</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="dynamic_memory.html" title="Dynamic Memory" /><link rel="next" href="diagnostics.html" title="Chapter 5. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Chapter 4.
752
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Termination</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="dynamic_memory.html" title="Dynamic Memory" /><link rel="next" href="diagnostics.html" title="Chapter 5. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Chapter 4.
755
</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.support.termination"></a>Termination</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="support.termination.handlers"></a>Termination Handlers</h3></div></div></div><p>
756
Index: libstdc++-v3/doc/html/manual/using_macros.html
757
===================================================================
758
--- a/src/libstdc++-v3/doc/html/manual/using_macros.html (.../tags/gcc_4_8_2_release)
759
+++ b/src/libstdc++-v3/doc/html/manual/using_macros.html (.../branches/gcc-4_8-branch)
761
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
762
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_headers.html" title="Headers" /><link rel="next" href="using_namespaces.html" title="Namespaces" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>
763
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Macros</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_headers.html" title="Headers" /><link rel="next" href="using_namespaces.html" title="Namespaces" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>
764
All library macros begin with <code class="code">_GLIBCXX_</code>.
766
Furthermore, all pre-processor macros, switches, and
767
Index: libstdc++-v3/doc/html/manual/concurrency.html
768
===================================================================
769
--- a/src/libstdc++-v3/doc/html/manual/concurrency.html (.../tags/gcc_4_8_2_release)
770
+++ b/src/libstdc++-v3/doc/html/manual/concurrency.html (.../branches/gcc-4_8-branch)
772
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
773
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library, mutex, thread, future, condition_variable" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="atomics.html" title="Chapter 14. Atomics" /><link rel="next" href="extensions.html" title="Part III. Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15.
774
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library, mutex, thread, future, condition_variable" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="atomics.html" title="Chapter 14. Atomics" /><link rel="next" href="extensions.html" title="Part III. Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15.
777
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="atomics.html">Prev</a> </td><th width="60%" align="center">Part II.
779
</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"></a>Chapter 15.
781
- <a id="idp16404464" class="indexterm"></a>
782
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
783
+ <a id="idm269999126816" class="indexterm"></a>
784
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
785
Facilities for concurrent operation, and control thereof.
786
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.concurrency.api"></a>API Reference</h2></div></div></div><p>
787
All items are declared in one of four standard header files.
788
Index: libstdc++-v3/doc/html/manual/ext_utilities.html
789
===================================================================
790
--- a/src/libstdc++-v3/doc/html/manual/ext_utilities.html (.../tags/gcc_4_8_2_release)
791
+++ b/src/libstdc++-v3/doc/html/manual/ext_utilities.html (.../branches/gcc-4_8-branch)
793
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
794
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_sgi.html" title="Deprecated" /><link rel="next" href="ext_algorithms.html" title="Chapter 25. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_sgi.html">Prev</a> </td><th width="60%" align="center">Part III.
795
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_sgi.html" title="Deprecated" /><link rel="next" href="ext_algorithms.html" title="Chapter 25. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_sgi.html">Prev</a> </td><th width="60%" align="center">Part III.
798
</th><td width="20%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 24. Utilities</h2></div></div></div><p>
799
Index: libstdc++-v3/doc/html/manual/policy_data_structures.html
800
===================================================================
801
--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures.html (.../tags/gcc_4_8_2_release)
802
+++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures.html (.../branches/gcc-4_8-branch)
804
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
805
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Policy-Based Data Structures</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bitmap_allocator_impl.html" title="Implementation" /><link rel="next" href="policy_data_structures_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Policy-Based Data Structures</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator_impl.html">Prev</a> </td><th width="60%" align="center">Part III.
806
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Policy-Based Data Structures</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bitmap_allocator_impl.html" title="Implementation" /><link rel="next" href="policy_data_structures_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Policy-Based Data Structures</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator_impl.html">Prev</a> </td><th width="60%" align="center">Part III.
809
-</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_using.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.pbds"></a>Chapter 22. Policy-Based Data Structures</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring">
810
+</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_using.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers.pbds"></a>Chapter 22. Policy-Based Data Structures</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring">
811
Configuring via Template Parameters
812
</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.traits">
813
Querying Container Attributes
815
these invariants, one must supply some policy that is aware
816
of these changes. Without this, it would be better to use a
817
linked list (in itself very efficient for these purposes).
818
- </p></li></ol></div><div class="figure"><a id="idp17613296"></a><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_node_invariants.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
819
+ </p></li></ol></div><div class="figure"><a id="idm269997917584"></a><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_node_invariants.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
820
The standard C++ library contains associative containers based on
821
red-black trees and collision-chaining hash tables. These are
822
very useful, but they are not ideal for all types of
825
The figure below shows the different underlying data structures
826
currently supported in this library.
827
- </p><div class="figure"><a id="idp17619952"></a><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_1.png" align="middle" alt="Underlying Associative Data Structures" /></div></div></div><br class="figure-break" /><p>
828
+ </p><div class="figure"><a id="idm269997910864"></a><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_1.png" align="middle" alt="Underlying Associative Data Structures" /></div></div></div><br class="figure-break" /><p>
829
A shows a collision-chaining hash-table, B shows a probing
830
hash-table, C shows a red-black tree, D shows a splay tree, E shows
831
a tree based on an ordered vector(implicit in the order of the
833
no guarantee that the elements traversed will coincide with the
834
<span class="emphasis"><em>logical</em></span> elements between 1 and 5, as in
836
- </p><div class="figure"><a id="idp17651648"></a><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_1.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /><p>
837
+ </p><div class="figure"><a id="idm269997879168"></a><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_1.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /><p>
838
In our opinion, this problem is not caused just because
839
red-black trees are order preserving while
840
collision-chaining hash tables are (generally) not - it
842
list, as in the graphic below, label B. Here the iterators are as
843
light as can be, but the hash-table's operations are more
845
- </p><div class="figure"><a id="idp17666528"></a><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_2.png" align="middle" alt="Point Iteration in Hash Data Structures" /></div></div></div><br class="figure-break" /><p>
846
+ </p><div class="figure"><a id="idm269997864256"></a><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_2.png" align="middle" alt="Point Iteration in Hash Data Structures" /></div></div></div><br class="figure-break" /><p>
847
It should be noted that containers based on collision-chaining
848
hash-tables are not the only ones with this type of behavior;
849
many other self-organizing data structures display it as well.
851
container. The graphic below shows three cases: A1 and A2 show
852
a red-black tree; B1 and B2 show a probing hash-table; C1 and C2
853
show a collision-chaining hash table.
854
- </p><div class="figure"><a id="idp17675840"></a><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_guarantee_erase.png" align="middle" alt="Effect of erase in different underlying data structures" /></div></div></div><br class="figure-break" /><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
855
+ </p><div class="figure"><a id="idm269997855056"></a><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_guarantee_erase.png" align="middle" alt="Effect of erase in different underlying data structures" /></div></div></div><br class="figure-break" /><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
856
Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can
857
be de-referenced and incremented. The sequence of iterators
858
changed, but in a way that is well-defined by the interface.
860
typically less structured than an associative container's tree;
861
the third simply uses an associative container. These are
862
shown in the figure below with labels A1 and A2, B, and C.
863
- </p><div class="figure"><a id="idp17743424"></a><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_2.png" align="middle" alt="Underlying Priority Queue Data Structures" /></div></div></div><br class="figure-break" /><p>
864
+ </p><div class="figure"><a id="idm269997787392"></a><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_2.png" align="middle" alt="Underlying Priority Queue Data Structures" /></div></div></div><br class="figure-break" /><p>
865
No single implementation can completely replace any of the
866
others. Some have better <code class="function">push</code>
867
and <code class="function">pop</code> amortized performance, some have
868
@@ -1098,7 +1098,7 @@
869
</span>. </span><span class="publisher"><span class="publishername">
870
Proceedings of International Conference on Very Large Data Bases
871
. </span></span></p></div><div class="biblioentry"><a id="biblio.maverik_lowerbounds"></a><p>[biblio.maverik_lowerbounds] <span class="title"><em>
872
- <a class="link" href="http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps" target="_top">
873
+ <a class="link" href="http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps/" target="_top">
874
Deamortization - Part 2: Binomial Heaps
876
</em>. </span><span class="date">
877
@@ -1190,7 +1190,7 @@
878
</span>. </span><span class="publisher"><span class="publishername">
879
Addison-Wesley Publishing Company
880
. </span></span></p></div><div class="biblioentry"><a id="biblio.nelson96stlpq"></a><p>[biblio.nelson96stlpq] <span class="title"><em>
881
- <a class="link" href="http://www.dogma.net/markn/articles/pq_stl/priority.htm" target="_top">Priority Queues and the STL
882
+ <a class="link" href="http://marknelson.us/1996/01/01/priority-queues/" target="_top">Priority Queues and the STL
884
</em>. </span><span class="date">
886
Index: libstdc++-v3/doc/html/manual/ext_iterators.html
887
===================================================================
888
--- a/src/libstdc++-v3/doc/html/manual/ext_iterators.html (.../tags/gcc_4_8_2_release)
889
+++ b/src/libstdc++-v3/doc/html/manual/ext_iterators.html (.../branches/gcc-4_8-branch)
891
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
892
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_numerics.html" title="Chapter 26. Numerics" /><link rel="next" href="ext_io.html" title="Chapter 28. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part III.
893
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. Iterators</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_numerics.html" title="Chapter 26. Numerics" /><link rel="next" href="ext_io.html" title="Chapter 28. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part III.
896
</th><td width="20%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 27. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the
897
Index: libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
898
===================================================================
899
--- a/src/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html (.../tags/gcc_4_8_2_release)
900
+++ b/src/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html (.../branches/gcc-4_8-branch)
902
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
903
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /><link rel="prev" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /><link rel="next" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Chapter 21. The bitmap_allocator</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.bitmap.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="bitmap.impl.free_list_store"></a>Free List Store</h3></div></div></div><p>
904
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /><link rel="prev" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /><link rel="next" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Chapter 21. The bitmap_allocator</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.bitmap.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="bitmap.impl.free_list_store"></a>Free List Store</h3></div></div></div><p>
905
The Free List Store (referred to as FLS for the remaining part of this
906
document) is the Global memory pool that is shared by all instances of
907
the bitmapped allocator instantiated for any type. This maintains a
910
Consider a block of size 64 ints. In memory, it would look like this:
911
(assume a 32-bit system where, size_t is a 32-bit entity).
912
- </p><div class="table"><a id="idp17500848"></a><p class="title"><strong>Table 21.1. Bitmap Allocator Memory Map</strong></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
913
+ </p><div class="table"><a id="idm269998030352"></a><p class="title"><strong>Table 21.1. Bitmap Allocator Memory Map</strong></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
914
The first Column(268) represents the size of the Block in bytes as
915
seen by the Bitmap Allocator. Internally, a global free list is
916
used to keep track of the free blocks used and given back by the
917
Index: libstdc++-v3/doc/html/manual/appendix_contributing.html
918
===================================================================
919
--- a/src/libstdc++-v3/doc/html/manual/appendix_contributing.html (.../tags/gcc_4_8_2_release)
920
+++ b/src/libstdc++-v3/doc/html/manual/appendix_contributing.html (.../branches/gcc-4_8-branch)
922
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
923
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix.html" title="Part IV. Appendices" /><link rel="next" href="source_organization.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A.
924
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix.html" title="Part IV. Appendices" /><link rel="next" href="source_organization.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A.
927
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix.html">Prev</a> </td><th width="60%" align="center">Part IV.
929
</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.contrib"></a>
931
- <a id="idp21875168" class="indexterm"></a>
932
-</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p>
933
+ <a id="idm269993657472" class="indexterm"></a>
934
+</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p>
935
The GNU C++ Library follows an open development model. Active
936
contributors are assigned maintainer-ship responsibility, and given
937
write access to the source repository. First time contributors
939
for this group is quite useful.
940
</p></li><li class="listitem"><p>
942
- the <a class="link" href="http://www.gnu.org/prep/standards" target="_top">GNU
943
+ the <a class="link" href="http://www.gnu.org/prep/standards/" target="_top">GNU
944
Coding Standards</a>, and chuckle when you hit the part
945
about <span class="quote">“<span class="quote">Using Languages Other Than C</span>”</span>.
946
</p></li><li class="listitem"><p>
947
Index: libstdc++-v3/doc/html/manual/parallel_mode_test.html
948
===================================================================
949
--- a/src/libstdc++-v3/doc/html/manual/parallel_mode_test.html (.../tags/gcc_4_8_2_release)
950
+++ b/src/libstdc++-v3/doc/html/manual/parallel_mode_test.html (.../branches/gcc-4_8-branch)
952
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
953
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_design.html" title="Design" /><link rel="next" href="profile_mode.html" title="Chapter 19. Profile Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_design.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p>
954
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_design.html" title="Design" /><link rel="next" href="profile_mode.html" title="Chapter 19. Profile Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_design.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p>
955
Both the normal conformance and regression tests and the
956
supplemental performance tests work.
958
Index: libstdc++-v3/doc/html/manual/profile_mode.html
959
===================================================================
960
--- a/src/libstdc++-v3/doc/html/manual/profile_mode.html (.../tags/gcc_4_8_2_release)
961
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode.html (.../branches/gcc-4_8-branch)
963
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
964
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Profile Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="parallel_mode_test.html" title="Testing" /><link rel="next" href="profile_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_test.html">Prev</a> </td><th width="60%" align="center">Part III.
965
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Profile Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="parallel_mode_test.html" title="Testing" /><link rel="next" href="profile_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_test.html">Prev</a> </td><th width="60%" align="center">Part III.
968
-</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_design.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 19. Profile Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_api.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="profile_mode_cost_model.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_devel.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p>
969
+</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_design.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 19. Profile Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_api.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="profile_mode_cost_model.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_devel.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p>
970
<span class="emphasis"><em>Goal: </em></span>Give performance improvement advice based on
971
recognition of suboptimal usage patterns of the standard library.
975
(Environment variable not supported.)
976
</p></li></ul></div><p>
977
- </p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idp17395456"></a><p><span class="citetitle"><em class="citetitle">
978
+ </p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idm269998135936"></a><p><span class="citetitle"><em class="citetitle">
979
Perflint: A Context Sensitive Performance Advisor for C++ Programs
980
</em>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername">
981
Proceedings of the 2009 International Symposium on Code Generation
982
Index: libstdc++-v3/doc/html/manual/stringstreams.html
983
===================================================================
984
--- a/src/libstdc++-v3/doc/html/manual/stringstreams.html (.../tags/gcc_4_8_2_release)
985
+++ b/src/libstdc++-v3/doc/html/manual/stringstreams.html (.../branches/gcc-4_8-branch)
987
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
988
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="streambufs.html" title="Stream Buffers" /><link rel="next" href="fstreams.html" title="File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
989
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="streambufs.html" title="Stream Buffers" /><link rel="next" href="fstreams.html" title="File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
992
</th><td width="20%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.memstreams"></a>Memory Based Streams</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.memstreams.compat"></a>Compatibility With strstream</h3></div></div></div><p>
993
Index: libstdc++-v3/doc/html/manual/traits.html
994
===================================================================
995
--- a/src/libstdc++-v3/doc/html/manual/traits.html (.../tags/gcc_4_8_2_release)
996
+++ b/src/libstdc++-v3/doc/html/manual/traits.html (.../branches/gcc-4_8-branch)
998
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
999
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Traits</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="memory.html" title="Memory" /><link rel="next" href="strings.html" title="Chapter 7. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
1000
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Traits</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="memory.html" title="Memory" /><link rel="next" href="strings.html" title="Chapter 7. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
1003
</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.traits"></a>Traits</h2></div></div></div><p>
1004
Index: libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
1005
===================================================================
1006
--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html (.../tags/gcc_4_8_2_release)
1007
+++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html (.../branches/gcc-4_8-branch)
1009
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1010
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Acknowledgments</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_based_data_structures_test.html" title="Testing" /><link rel="next" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Acknowledgments</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_based_data_structures_test.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="pbds.ack"></a>Acknowledgments</h2></div></div></div><p>
1011
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Acknowledgments</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_based_data_structures_test.html" title="Testing" /><link rel="next" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Acknowledgments</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_based_data_structures_test.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="pbds.ack"></a>Acknowledgments</h2></div></div></div><p>
1012
Written by Ami Tavory and Vladimir Dreizin (IBM Haifa Research
1013
Laboratories), and Benjamin Kosnik (Red Hat).
1015
- This library was partially written at
1016
- <a class="link" href="http://www.haifa.il.ibm.com/" target="_top">IBM's Haifa Research Labs</a>.
1017
+ This library was partially written at IBM's Haifa Research Labs.
1018
It is based heavily on policy-based design and uses many useful
1019
techniques from Modern C++ Design: Generic Programming and Design
1020
Patterns Applied by Andrei Alexandrescu.
1021
Index: libstdc++-v3/doc/html/manual/associative.html
1022
===================================================================
1023
--- a/src/libstdc++-v3/doc/html/manual/associative.html (.../tags/gcc_4_8_2_release)
1024
+++ b/src/libstdc++-v3/doc/html/manual/associative.html (.../branches/gcc-4_8-branch)
1026
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1027
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="containers.html" title="Chapter 9. Containers" /><link rel="next" href="unordered_associative.html" title="Unordered Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
1028
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Associative</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="containers.html" title="Chapter 9. Containers" /><link rel="next" href="unordered_associative.html" title="Unordered Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
1031
</th><td width="20%" align="right"> <a accesskey="n" href="unordered_associative.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.associative"></a>Associative</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.associative.insert_hints"></a>Insertion Hints</h3></div></div></div><p>
1032
Index: libstdc++-v3/doc/html/manual/ext_concurrency.html
1033
===================================================================
1034
--- a/src/libstdc++-v3/doc/html/manual/ext_concurrency.html (.../tags/gcc_4_8_2_release)
1035
+++ b/src/libstdc++-v3/doc/html/manual/ext_concurrency.html (.../branches/gcc-4_8-branch)
1037
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1038
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 30. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_demangling.html" title="Chapter 29. Demangling" /><link rel="next" href="ext_concurrency_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 30. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part III.
1039
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 30. Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_demangling.html" title="Chapter 29. Demangling" /><link rel="next" href="ext_concurrency_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 30. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part III.
1042
-</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency_impl.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 30. Concurrency</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="ext_concurrency_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency_impl.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="ext_concurrency_impl.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="ext_concurrency_use.html">Use</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file <code class="filename"><ext/concurrence.h></code>
1043
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency_impl.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 30. Concurrency</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="section"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="section"><a href="ext_concurrency_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="ext_concurrency_impl.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="section"><a href="ext_concurrency_impl.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="ext_concurrency_use.html">Use</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file <code class="filename"><ext/concurrence.h></code>
1044
contains all the higher-level
1045
constructs for playing with threads. In contrast to the atomics layer,
1046
the concurrence layer consists largely of types. All types are defined within <code class="code">namespace __gnu_cxx</code>.
1047
Index: libstdc++-v3/doc/html/manual/support.html
1048
===================================================================
1049
--- a/src/libstdc++-v3/doc/html/manual/support.html (.../tags/gcc_4_8_2_release)
1050
+++ b/src/libstdc++-v3/doc/html/manual/support.html (.../branches/gcc-4_8-branch)
1052
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1053
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="std_contents.html" title="Part II. Standard Contents" /><link rel="next" href="dynamic_memory.html" title="Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4.
1054
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="std_contents.html" title="Part II. Standard Contents" /><link rel="next" href="dynamic_memory.html" title="Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4.
1057
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="std_contents.html">Prev</a> </td><th width="60%" align="center">Part II.
1059
</th><td width="20%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.support"></a>Chapter 4.
1061
- <a id="idp13745936" class="indexterm"></a>
1062
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p>
1063
+ <a id="idm270001786944" class="indexterm"></a>
1064
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p>
1065
This part deals with the functions called and objects created
1066
automatically during the course of a program's existence.
1068
Index: libstdc++-v3/doc/html/manual/bitmap_allocator.html
1069
===================================================================
1070
--- a/src/libstdc++-v3/doc/html/manual/bitmap_allocator.html (.../tags/gcc_4_8_2_release)
1071
+++ b/src/libstdc++-v3/doc/html/manual/bitmap_allocator.html (.../branches/gcc-4_8-branch)
1073
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1074
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. The bitmap_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="mt_allocator_ex_multi.html" title="Multiple Thread Example" /><link rel="next" href="bitmap_allocator_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. The bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_ex_multi.html">Prev</a> </td><th width="60%" align="center">Part III.
1075
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. The bitmap_allocator</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="mt_allocator_ex_multi.html" title="Multiple Thread Example" /><link rel="next" href="bitmap_allocator_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. The bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_ex_multi.html">Prev</a> </td><th width="60%" align="center">Part III.
1078
-</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator_impl.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.bitmap"></a>Chapter 21. The bitmap_allocator</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></div><p>
1079
+</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator_impl.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator.bitmap"></a>Chapter 21. The bitmap_allocator</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></div><p>
1080
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.bitmap.design"></a>Design</h2></div></div></div><p>
1081
As this name suggests, this allocator uses a bit-map to keep track
1082
of the used and unused memory locations for its book-keeping
1083
Index: libstdc++-v3/doc/html/manual/license.html
1084
===================================================================
1085
--- a/src/libstdc++-v3/doc/html/manual/license.html (.../tags/gcc_4_8_2_release)
1086
+++ b/src/libstdc++-v3/doc/html/manual/license.html (.../branches/gcc-4_8-branch)
1088
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1089
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="status.html" title="Chapter 1. Status" /><link rel="next" href="bugs.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p>
1090
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="status.html" title="Chapter 1. Status" /><link rel="next" href="bugs.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p>
1091
There are two licenses affecting GNU libstdc++: one for the code,
1092
and one for the documentation.
1094
Index: libstdc++-v3/doc/html/manual/numerics.html
1095
===================================================================
1096
--- a/src/libstdc++-v3/doc/html/manual/numerics.html (.../tags/gcc_4_8_2_release)
1097
+++ b/src/libstdc++-v3/doc/html/manual/numerics.html (.../branches/gcc-4_8-branch)
1099
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1100
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="algorithms.html" title="Chapter 11. Algorithms" /><link rel="next" href="generalized_numeric_operations.html" title="Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12.
1101
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="algorithms.html" title="Chapter 11. Algorithms" /><link rel="next" href="generalized_numeric_operations.html" title="Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12.
1104
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part II.
1106
</th><td width="20%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics"></a>Chapter 12.
1108
- <a id="idp16214640" class="indexterm"></a>
1109
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="section"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="section"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="section"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="section"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.complex"></a>Complex</h2></div></div></div><p>
1110
+ <a id="idm269999316576" class="indexterm"></a>
1111
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="section"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="section"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="section"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="section"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.complex"></a>Complex</h2></div></div></div><p>
1112
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.complex.processing"></a>complex Processing</h3></div></div></div><p>
1113
</p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry,
1114
<span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible
1115
Index: libstdc++-v3/doc/html/manual/using_exceptions.html
1116
===================================================================
1117
--- a/src/libstdc++-v3/doc/html/manual/using_exceptions.html (.../tags/gcc_4_8_2_release)
1118
+++ b/src/libstdc++-v3/doc/html/manual/using_exceptions.html (.../branches/gcc-4_8-branch)
1120
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1121
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, exception, error, exception neutrality, exception safety, exception propagation, -fno-exceptions" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_concurrency.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exceptions"></a>Exceptions</h2></div></div></div><p>
1122
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Exceptions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, exception, error, exception neutrality, exception safety, exception propagation, -fno-exceptions" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_concurrency.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exceptions"></a>Exceptions</h2></div></div></div><p>
1123
The C++ language provides language support for stack unwinding
1124
with <code class="literal">try</code> and <code class="literal">catch</code> blocks and
1125
the <code class="literal">throw</code> keyword.
1129
{ this->_M_setstate(ios_base::badbit); }
1130
-</pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idp13644000"></a><p><span class="title"><em>
1131
+</pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idm270001889024"></a><p><span class="title"><em>
1132
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
1133
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
1135
@@ -274,39 +274,39 @@
1136
. </span><span class="copyright">Copyright © 2008
1137
The Open Group/The Institute of Electrical and Electronics
1139
- . </span></p></div><div class="biblioentry"><a id="idp13647696"></a><p><span class="title"><em>
1140
+ . </span></p></div><div class="biblioentry"><a id="idm270001885328"></a><p><span class="title"><em>
1141
<a class="link" href="http://www.boost.org/community/error_handling.html" target="_top">
1142
Error and Exception Handling
1144
</em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
1146
- . </span></span></p></div><div class="biblioentry"><a id="idp13651392"></a><p><span class="title"><em>
1147
+ . </span></span></p></div><div class="biblioentry"><a id="idm270001881632"></a><p><span class="title"><em>
1148
<a class="link" href="http://www.boost.org/community/exception_safety.html" target="_top">
1149
Exception-Safety in Generic Components
1151
</em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
1153
- . </span></span></p></div><div class="biblioentry"><a id="idp13655104"></a><p><span class="title"><em>
1154
+ . </span></span></p></div><div class="biblioentry"><a id="idm270001877920"></a><p><span class="title"><em>
1155
<a class="link" href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" target="_top">
1156
Standard Library Exception Policy
1158
</em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
1160
- . </span></span></p></div><div class="biblioentry"><a id="idp13658816"></a><p><span class="title"><em>
1161
+ . </span></span></p></div><div class="biblioentry"><a id="idm270001874208"></a><p><span class="title"><em>
1162
<a class="link" href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" target="_top">
1163
ia64 c++ abi exception handling
1165
</em>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername">
1167
- . </span></span></p></div><div class="biblioentry"><a id="idp13662512"></a><p><span class="title"><em>
1168
+ . </span></span></p></div><div class="biblioentry"><a id="idm270001870512"></a><p><span class="title"><em>
1169
<a class="link" href="http://www.research.att.com/~bs/3rd_safe.pdf" target="_top">
1170
Appendix E: Standard-Library Exception Safety
1172
- </em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="idp13665328"></a><p><span class="citetitle"><em class="citetitle">
1173
+ </em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="idm270001867696"></a><p><span class="citetitle"><em class="citetitle">
1175
</em>. </span><span class="pagenums">
1176
Exception-Safety Issues and Techniques
1177
- . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="idp13667712"></a><p><span class="title"><em>
1178
+ . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="idm270001865312"></a><p><span class="title"><em>
1179
<a class="link" href="http://gcc.gnu.org/PR25191" target="_top">
1180
GCC Bug 25191: exception_defines.h #defines try/catch
1182
Index: libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
1183
===================================================================
1184
--- a/src/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html (.../tags/gcc_4_8_2_release)
1185
+++ b/src/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html (.../branches/gcc-4_8-branch)
1187
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1188
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures_design.html" title="Design" /><link rel="next" href="policy_data_structures_ack.html" title="Acknowledgments" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_design.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_ack.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="pbds.test"></a>Testing</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.test.regression"></a>Regression</h3></div></div></div><p>The library contains a single comprehensive regression test.
1189
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures_design.html" title="Design" /><link rel="next" href="policy_data_structures_ack.html" title="Acknowledgments" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_design.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_ack.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="pbds.test"></a>Testing</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.test.regression"></a>Regression</h3></div></div></div><p>The library contains a single comprehensive regression test.
1190
For a given container type in this library, the test creates
1191
an object of the container type and an object of the
1192
corresponding standard type (e.g., <code class="classname">std::set</code>). It
1193
Index: libstdc++-v3/doc/html/manual/parallel_mode_design.html
1194
===================================================================
1195
--- a/src/libstdc++-v3/doc/html/manual/parallel_mode_design.html (.../tags/gcc_4_8_2_release)
1196
+++ b/src/libstdc++-v3/doc/html/manual/parallel_mode_design.html (.../branches/gcc-4_8-branch)
1198
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1199
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_using.html" title="Using" /><link rel="next" href="parallel_mode_test.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_using.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_test.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.design"></a>Design</h2></div></div></div><p>
1200
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_using.html" title="Using" /><link rel="next" href="parallel_mode_test.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_using.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_test.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.design"></a>Design</h2></div></div></div><p>
1201
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.design.intro"></a>Interface Basics</h3></div></div></div><p>
1202
All parallel algorithms are intended to have signatures that are
1203
equivalent to the ISO C++ algorithms replaced. For instance, the
1204
Index: libstdc++-v3/doc/html/manual/abi.html
1205
===================================================================
1206
--- a/src/libstdc++-v3/doc/html/manual/abi.html (.../tags/gcc_4_8_2_release)
1207
+++ b/src/libstdc++-v3/doc/html/manual/abi.html (.../branches/gcc-4_8-branch)
1209
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1210
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, ABI, version, dynamic, shared, compatibility" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1211
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>ABI Policy and Guidelines</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, ABI, version, dynamic, shared, compatibility" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="test.html" title="Test" /><link rel="next" href="api.html" title="API Evolution and Deprecation History" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ABI Policy and Guidelines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1212
Porting and Maintenance
1214
</th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.abi"></a>ABI Policy and Guidelines</h2></div></div></div><p>
1215
@@ -493,39 +493,39 @@
1216
<a class="link" href="http://www.codesourcery.com/cxx-abi/" target="_top">
1219
- </em>. </span></p></div><div class="biblioentry"><a id="idp22945936"></a><p><span class="title"><em>
1220
+ </em>. </span></p></div><div class="biblioentry"><a id="idm269992586624"></a><p><span class="title"><em>
1221
<a class="link" href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" target="_top">
1222
Intel Compilers for Linux Compatibility with the GNU Compilers
1224
- </em>. </span></p></div><div class="biblioentry"><a id="idp22947792"></a><p><span class="title"><em>
1225
+ </em>. </span></p></div><div class="biblioentry"><a id="idm269992584768"></a><p><span class="title"><em>
1226
<a class="link" href="http://download.oracle.com/docs/cd/E19963-01/html/819-0690/index.html" target="_top">
1227
Linker and Libraries Guide (document 819-0690)
1229
- </em>. </span></p></div><div class="biblioentry"><a id="idp22949632"></a><p><span class="title"><em>
1230
+ </em>. </span></p></div><div class="biblioentry"><a id="idm269992582928"></a><p><span class="title"><em>
1231
<a class="link" href="http://download.oracle.com/docs/cd/E19422-01/819-3689/index.html" target="_top">
1232
Sun Studio 11: C++ Migration Guide (document 819-3689)
1234
- </em>. </span></p></div><div class="biblioentry"><a id="idp22951488"></a><p><span class="title"><em>
1235
+ </em>. </span></p></div><div class="biblioentry"><a id="idm269992581072"></a><p><span class="title"><em>
1236
<a class="link" href="http://www.akkadia.org/drepper/dsohowto.pdf" target="_top">
1237
How to Write Shared Libraries
1239
- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="idp22954928"></a><p><span class="title"><em>
1240
+ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="idm269992577632"></a><p><span class="title"><em>
1241
<a class="link" href="http://www.arm.com/miscPDFs/8033.pdf" target="_top">
1242
C++ ABI for the ARM Architecture
1244
- </em>. </span></p></div><div class="biblioentry"><a id="idp22956736"></a><p><span class="title"><em>
1245
+ </em>. </span></p></div><div class="biblioentry"><a id="idm269992575824"></a><p><span class="title"><em>
1246
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" target="_top">
1247
Dynamic Shared Objects: Survey and Issues
1249
</em>. </span><span class="subtitle">
1251
- . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idp22960032"></a><p><span class="title"><em>
1252
+ . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idm269992572528"></a><p><span class="title"><em>
1253
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" target="_top">
1254
Versioning With Namespaces
1256
</em>. </span><span class="subtitle">
1258
- . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idp22963312"></a><p><span class="title"><em>
1259
+ . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idm269992569248"></a><p><span class="title"><em>
1260
<a class="link" href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" target="_top">
1261
Binary Compatibility of Shared Libraries Implemented in C++
1262
on GNU/Linux Systems
1263
Index: libstdc++-v3/doc/html/manual/intro.html
1264
===================================================================
1265
--- a/src/libstdc++-v3/doc/html/manual/intro.html (.../tags/gcc_4_8_2_release)
1266
+++ b/src/libstdc++-v3/doc/html/manual/intro.html (.../branches/gcc-4_8-branch)
1268
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1269
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part I. Introduction</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="index.html" title="The GNU C++ Library Manual" /><link rel="next" href="status.html" title="Chapter 1. Status" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I.
1270
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part I. Introduction</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="index.html" title="The GNU C++ Library Manual" /><link rel="next" href="status.html" title="Chapter 1. Status" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I.
1273
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I.
1275
- <a id="idp9040416" class="indexterm"></a>
1276
-</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
1277
\ No newline at end of file
1278
+ <a id="idm270013458800" class="indexterm"></a>
1279
+</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
1280
\ No newline at end of file
1281
Index: libstdc++-v3/doc/html/manual/profile_mode_api.html
1282
===================================================================
1283
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_api.html (.../tags/gcc_4_8_2_release)
1284
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_api.html (.../branches/gcc-4_8-branch)
1286
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1287
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_design.html" title="Design" /><link rel="next" href="profile_mode_cost_model.html" title="Empirical Cost Model" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_design.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_cost_model.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.api"></a>Extensions for Custom Containers</h2></div></div></div><p>
1288
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_design.html" title="Design" /><link rel="next" href="profile_mode_cost_model.html" title="Empirical Cost Model" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_design.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_cost_model.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.api"></a>Extensions for Custom Containers</h2></div></div></div><p>
1289
Many large projects use their own data structures instead of the ones in the
1290
standard library. If these data structures are similar in functionality
1291
to the standard library, they can be instrumented with the same hooks
1292
Index: libstdc++-v3/doc/html/manual/atomics.html
1293
===================================================================
1294
--- a/src/libstdc++-v3/doc/html/manual/atomics.html (.../tags/gcc_4_8_2_release)
1295
+++ b/src/libstdc++-v3/doc/html/manual/atomics.html (.../branches/gcc-4_8-branch)
1297
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1298
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Atomics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library, atomic" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="io_and_c.html" title="Interacting with C" /><link rel="next" href="concurrency.html" title="Chapter 15. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14.
1299
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Atomics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library, atomic" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="io_and_c.html" title="Interacting with C" /><link rel="next" href="concurrency.html" title="Chapter 15. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14.
1302
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">Part II.
1304
</th><td width="20%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics"></a>Chapter 14.
1306
- <a id="idp16390640" class="indexterm"></a>
1307
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p>
1308
+ <a id="idm269999140704" class="indexterm"></a>
1309
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p>
1310
Facilities for atomic operations.
1311
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.atomics.api"></a>API Reference</h2></div></div></div><p>
1312
All items are declared in the standard header
1313
Index: libstdc++-v3/doc/html/manual/internals.html
1314
===================================================================
1315
--- a/src/libstdc++-v3/doc/html/manual/internals.html (.../tags/gcc_4_8_2_release)
1316
+++ b/src/libstdc++-v3/doc/html/manual/internals.html (.../branches/gcc-4_8-branch)
1318
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1319
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, internals" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="documentation_hacking.html" title="Writing and Generating Documentation" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="documentation_hacking.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1320
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Porting to New Hardware or Operating Systems</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, internals" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="documentation_hacking.html" title="Writing and Generating Documentation" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Porting to New Hardware or Operating Systems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="documentation_hacking.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1321
Porting and Maintenance
1323
</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.internals"></a>Porting to New Hardware or Operating Systems</h2></div></div></div><p>
1324
Index: libstdc++-v3/doc/html/manual/policy_data_structures_using.html
1325
===================================================================
1326
--- a/src/libstdc++-v3/doc/html/manual/policy_data_structures_using.html (.../tags/gcc_4_8_2_release)
1327
+++ b/src/libstdc++-v3/doc/html/manual/policy_data_structures_using.html (.../branches/gcc-4_8-branch)
1329
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1330
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="next" href="policy_data_structures_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.pbds.using"></a>Using</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.prereq"></a>Prerequisites</h3></div></div></div><p>The library contains only header files, and does not require any
1331
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, policy, container, data, structure, associated, tree, trie, hash, metaprogramming" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="prev" href="policy_data_structures.html" title="Chapter 22. Policy-Based Data Structures" /><link rel="next" href="policy_data_structures_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures.html">Prev</a> </td><th width="60%" align="center">Chapter 22. Policy-Based Data Structures</th><td width="20%" align="right"> <a accesskey="n" href="policy_data_structures_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.pbds.using"></a>Using</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.prereq"></a>Prerequisites</h3></div></div></div><p>The library contains only header files, and does not require any
1332
other libraries except the standard C++ library . All classes are
1333
defined in namespace <code class="code">__gnu_pbds</code>. The library internally
1334
uses macros beginning with <code class="code">PB_DS</code>, but
1336
In addition, there are the following diagnostics classes,
1337
used to report errors specific to this library's data
1339
- </p><div class="figure"><a id="idp17806128"></a><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_exception_hierarchy.png" align="middle" alt="Exception Hierarchy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"></a>Tutorial</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"></a>Basic Use</h4></div></div></div><p>
1340
+ </p><div class="figure"><a id="idm269997724688"></a><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_exception_hierarchy.png" align="middle" alt="Exception Hierarchy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"></a>Tutorial</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"></a>Basic Use</h4></div></div></div><p>
1341
For the most part, the policy-based containers containers in
1342
namespace <code class="literal">__gnu_pbds</code> have the same interface as
1343
the equivalent containers in the standard C++ library, except for
1344
Index: libstdc++-v3/doc/html/manual/bugs.html
1345
===================================================================
1346
--- a/src/libstdc++-v3/doc/html/manual/bugs.html (.../tags/gcc_4_8_2_release)
1347
+++ b/src/libstdc++-v3/doc/html/manual/bugs.html (.../branches/gcc-4_8-branch)
1349
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1350
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Bugs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="license.html" title="License" /><link rel="next" href="setup.html" title="Chapter 2. Setup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bugs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.bugs"></a>Bugs</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"></a>Implementation Bugs</h3></div></div></div><p>
1351
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Bugs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="license.html" title="License" /><link rel="next" href="setup.html" title="Chapter 2. Setup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bugs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.bugs"></a>Bugs</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"></a>Implementation Bugs</h3></div></div></div><p>
1352
Information on known bugs, details on efforts to fix them, and
1353
fixed bugs are all available as part of the <a class="link" href="http://gcc.gnu.org/bugs/" target="_top">GCC bug tracking system</a>,
1354
with the category set to <code class="literal">libstdc++</code>.
1355
Index: libstdc++-v3/doc/html/manual/parallel_mode_using.html
1356
===================================================================
1357
--- a/src/libstdc++-v3/doc/html/manual/parallel_mode_using.html (.../tags/gcc_4_8_2_release)
1358
+++ b/src/libstdc++-v3/doc/html/manual/parallel_mode_using.html (.../branches/gcc-4_8-branch)
1360
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1361
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_semantics.html" title="Semantics" /><link rel="next" href="parallel_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_semantics.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.using"></a>Using</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"></a>Prerequisite Compiler Flags</h3></div></div></div><p>
1362
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode_semantics.html" title="Semantics" /><link rel="next" href="parallel_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode_semantics.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.using"></a>Using</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"></a>Prerequisite Compiler Flags</h3></div></div></div><p>
1363
Any use of parallel functionality requires additional compiler
1364
and runtime support, in particular support for OpenMP. Adding this support is
1365
not difficult: just compile your application with the compiler
1367
flags for atomic operations.)
1368
</p><p> The following table provides the names and headers of all the
1369
parallel algorithms that can be used in a similar manner:
1370
-</p><div class="table"><a id="idp16725920"></a><p class="title"><strong>Table 18.1. Parallel Algorithms</strong></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="parallel_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
1371
\ No newline at end of file
1372
+</p><div class="table"><a id="idm269998805216"></a><p class="title"><strong>Table 18.1. Parallel Algorithms</strong></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="parallel_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
1373
\ No newline at end of file
1374
Index: libstdc++-v3/doc/html/manual/ext_numerics.html
1375
===================================================================
1376
--- a/src/libstdc++-v3/doc/html/manual/ext_numerics.html (.../tags/gcc_4_8_2_release)
1377
+++ b/src/libstdc++-v3/doc/html/manual/ext_numerics.html (.../branches/gcc-4_8-branch)
1379
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1380
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_algorithms.html" title="Chapter 25. Algorithms" /><link rel="next" href="ext_iterators.html" title="Chapter 27. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part III.
1381
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Numerics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_algorithms.html" title="Chapter 25. Algorithms" /><link rel="next" href="ext_iterators.html" title="Chapter 27. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part III.
1384
</th><td width="20%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 26. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as <code class="code">accumulate</code>,
1385
Index: libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
1386
===================================================================
1387
--- a/src/libstdc++-v3/doc/html/manual/parallel_mode_semantics.html (.../tags/gcc_4_8_2_release)
1388
+++ b/src/libstdc++-v3/doc/html/manual/parallel_mode_semantics.html (.../branches/gcc-4_8-branch)
1390
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1391
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="next" href="parallel_mode_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.semantics"></a>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe,
1392
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="next" href="parallel_mode_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.semantics"></a>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe,
1393
i.e. user-defined functors must not throw exceptions.
1394
Also, the order of execution is not guaranteed for some functions, of course.
1395
Therefore, user-defined functors should not have any concurrent side effects.
1396
Index: libstdc++-v3/doc/html/manual/std_contents.html
1397
===================================================================
1398
--- a/src/libstdc++-v3/doc/html/manual/std_contents.html (.../tags/gcc_4_8_2_release)
1399
+++ b/src/libstdc++-v3/doc/html/manual/std_contents.html (.../branches/gcc-4_8-branch)
1401
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1402
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II. Standard Contents</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="support.html" title="Chapter 4. Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II.
1403
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II. Standard Contents</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="support.html" title="Chapter 4. Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II.
1405
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.std"></a>Part II.
1407
- </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="chapter"><a href="support.html">4.
1408
+ </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="support.html">4.
1411
</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="diagnostics.html">5.
1413
</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="utilities.html">6.
1416
-</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp13920976">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idp13924528">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp13937824">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15512272">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idp15534784">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idp15542080">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp15556704">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15573056">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idp15576640">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
1417
+</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270001611968">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idm270001608416">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm270001595120">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270000019344">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999996832">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idm269999989536">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999974912">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269999958496">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idm269999954912">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
1420
</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="localization.html">8.
1423
-</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idp15778336">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
1424
+</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idm269999753024">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
1427
</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="iterators.html">10.
1428
Index: libstdc++-v3/doc/html/manual/appendix.html
1429
===================================================================
1430
--- a/src/libstdc++-v3/doc/html/manual/appendix.html (.../tags/gcc_4_8_2_release)
1431
+++ b/src/libstdc++-v3/doc/html/manual/appendix.html (.../branches/gcc-4_8-branch)
1433
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1434
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV. Appendices</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="ext_concurrency_use.html" title="Use" /><link rel="next" href="appendix_contributing.html" title="Appendix A. Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV.
1435
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV. Appendices</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="ext_concurrency_use.html" title="Use" /><link rel="next" href="appendix_contributing.html" title="Appendix A. Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV.
1437
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency_use.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="appendix"></a>Part IV.
1439
-</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="appendix"><a href="appendix_contributing.html">A.
1440
+</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="appendix"><a href="appendix_contributing.html">A.
1443
</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B.
1444
Index: libstdc++-v3/doc/html/manual/memory.html
1445
===================================================================
1446
--- a/src/libstdc++-v3/doc/html/manual/memory.html (.../tags/gcc_4_8_2_release)
1447
+++ b/src/libstdc++-v3/doc/html/manual/memory.html (.../branches/gcc-4_8-branch)
1449
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1450
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="pairs.html" title="Pairs" /><link rel="next" href="traits.html" title="Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
1451
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="pairs.html" title="Pairs" /><link rel="next" href="traits.html" title="Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
1454
</th><td width="20%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.memory"></a>Memory</h2></div></div></div><p>
1456
or loading and unloading shared objects in memory. As such, using
1457
caching allocators on systems that do not support
1458
<code class="function">abi::__cxa_atexit</code> is not recommended.
1459
- </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp13920976"></a>Interface Design</h5></div></div></div><p>
1460
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm270001611968"></a>Interface Design</h5></div></div></div><p>
1461
The only allocator interface that
1462
is supported is the standard C++ interface. As such, all STL
1463
containers have been adjusted, and all external allocators have
1466
The base class that <code class="classname">allocator</code> is derived from
1467
may not be user-configurable.
1468
-</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp13924528"></a>Selecting Default Allocation Policy</h5></div></div></div><p>
1469
+</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm270001608416"></a>Selecting Default Allocation Policy</h5></div></div></div><p>
1470
It's difficult to pick an allocation strategy that will provide
1471
maximum utility, without excessively penalizing some behavior. In
1472
fact, it's difficult just deciding which typical actions to measure
1474
The current default choice for
1475
<code class="classname">allocator</code> is
1476
<code class="classname">__gnu_cxx::new_allocator</code>.
1477
- </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp13937824"></a>Disabling Memory Caching</h5></div></div></div><p>
1478
+ </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm270001595120"></a>Disabling Memory Caching</h5></div></div></div><p>
1479
In use, <code class="classname">allocator</code> may allocate and
1480
deallocate using implementation-specific strategies and
1481
heuristics. Because of this, a given call to an allocator object's
1482
@@ -309,33 +309,33 @@
1483
of the used and unused memory locations. It has its own
1484
<a class="link" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator">chapter</a>
1485
in the documentation.
1486
- </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp13992848"></a><p><span class="citetitle"><em class="citetitle">
1487
+ </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm270000084224"></a><p><span class="citetitle"><em class="citetitle">
1488
ISO/IEC 14882:1998 Programming languages - C++
1491
- <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="idp13994688"></a><p><span class="title"><em>
1492
- <a class="link" href="http://www.drdobbs.com/cpp/184403759" target="_top">
1493
+ <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="idm270000082384"></a><p><span class="title"><em>
1494
+ <a class="link" href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
1495
The Standard Librarian: What Are Allocators Good For?
1497
</em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
1499
- . </span></span></p></div><div class="biblioentry"><a id="idp13998416"></a><p><span class="title"><em>
1500
+ . </span></span></p></div><div class="biblioentry"><a id="idm270000078608"></a><p><span class="title"><em>
1501
<a class="link" href="http://www.hoard.org/" target="_top">
1502
The Hoard Memory Allocator
1504
- </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="idp14001184"></a><p><span class="title"><em>
1505
+ </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="idm270000075840"></a><p><span class="title"><em>
1506
<a class="link" href="http://people.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top">
1507
Reconsidering Custom Memory Allocation
1509
- </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span></p></div><div class="biblioentry"><a id="idp14007344"></a><p><span class="title"><em>
1510
+ </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span></p></div><div class="biblioentry"><a id="idm270000069680"></a><p><span class="title"><em>
1511
<a class="link" href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" target="_top">
1514
</em>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername">
1516
- . </span></span></p></div><div class="biblioentry"><a id="idp14012080"></a><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
1517
+ . </span></span></p></div><div class="biblioentry"><a id="idm270000064944"></a><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
1519
- . </span></span></p></div><div class="biblioentry"><a id="idp14016512"></a><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
1520
+ . </span></span></p></div><div class="biblioentry"><a id="idm270000060512"></a><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
1521
happen with misuse of the <code class="classname">auto_ptr</code> class
1522
template (called <acronym class="acronym">AP</acronym> here) would take some
1523
time. Suffice it to say that the use of <acronym class="acronym">AP</acronym>
1525
Derived classes override those functions to destroy resources in a context
1526
where the correct dynamic type is known. This is an application of the
1527
technique known as type erasure.
1528
- </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15512272"></a>Class Hierarchy</h5></div></div></div><p>
1529
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm270000019344"></a>Class Hierarchy</h5></div></div></div><p>
1530
A <code class="classname">shared_ptr<T></code> contains a pointer of
1531
type <span class="type">T*</span> and an object of type
1532
<code class="classname">__shared_count</code>. The shared_count contains a
1534
aliasing constructor, make_shared & allocate_shared. Additionally,
1535
the constructors taking <code class="classname">auto_ptr</code> parameters are
1536
deprecated in C++11 mode.
1537
- </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15534784"></a>Thread Safety</h5></div></div></div><p>
1538
+ </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999996832"></a>Thread Safety</h5></div></div></div><p>
1540
-<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="_top">Thread
1541
+<a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="_top">Thread
1542
Safety</a> section of the Boost shared_ptr documentation says "shared_ptr
1543
objects offer the same level of thread safety as built-in types."
1544
The implementation must ensure that concurrent updates to separate shared_ptr
1546
shared_ptr in libstdc++ the compiler and library are fixed, which
1547
makes things much simpler: we have an atomic CAS or we don't, see Lock
1548
Policy below for details.
1549
-</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15542080"></a>Selecting Lock Policy</h5></div></div></div><p>
1550
+</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999989536"></a>Selecting Lock Policy</h5></div></div></div><p>
1552
There is a single <code class="classname">_Sp_counted_base</code> class,
1553
which is a template parameterized on the enum
1555
<code class="filename">ext/atomicity.h</code>, which detect if the program
1556
is multi-threaded. If only one thread of execution exists in
1557
the program then less expensive non-atomic operations are used.
1558
- </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15556704"></a>Related functions and classes</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
1559
+ </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999974912"></a>Related functions and classes</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
1560
<code class="code">const_pointer_cast</code></span></dt><dd><p>
1561
As noted in N2351, these functions can be implemented non-intrusively using
1562
the alias constructor. However the aliasing constructor is only available
1563
@@ -611,13 +611,13 @@
1564
As well as the extra constructors, this implementation also needs some
1565
members of _Sp_counted_deleter to be protected where they could otherwise
1567
- </p></dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"></a>Use</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15573056"></a>Examples</h5></div></div></div><p>
1568
+ </p></dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"></a>Use</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999958496"></a>Examples</h5></div></div></div><p>
1569
Examples of use can be found in the testsuite, under
1570
<code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>,
1571
<code class="filename">testsuite/20_util/shared_ptr</code>
1573
<code class="filename">testsuite/20_util/weak_ptr</code>.
1574
- </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15576640"></a>Unresolved Issues</h5></div></div></div><p>
1575
+ </p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999954912"></a>Unresolved Issues</h5></div></div></div><p>
1576
The <span class="emphasis"><em><code class="classname">shared_ptr</code> atomic access</em></span>
1577
clause in the C++11 standard is not implemented in GCC.
1579
@@ -658,25 +658,25 @@
1580
code to work with, Peter Dimov in particular for his help and
1581
invaluable advice on thread safety. Phillip Jordan and Paolo
1582
Carlini for the lock policy implementation.
1583
- </p></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp15587936"></a><p><span class="title"><em>
1584
+ </p></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269999943680"></a><p><span class="title"><em>
1585
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">
1586
Improving shared_ptr for C++0x, Revision 2
1588
</em>. </span><span class="subtitle">
1590
- . </span></p></div><div class="biblioentry"><a id="idp15590224"></a><p><span class="title"><em>
1591
+ . </span></p></div><div class="biblioentry"><a id="idm269999941392"></a><p><span class="title"><em>
1592
<a class="link" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top">
1593
C++ Standard Library Active Issues List
1595
</em>. </span><span class="subtitle">
1597
- . </span></p></div><div class="biblioentry"><a id="idp15592512"></a><p><span class="title"><em>
1598
+ . </span></p></div><div class="biblioentry"><a id="idm269999939104"></a><p><span class="title"><em>
1599
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top">
1600
Working Draft, Standard for Programming Language C++
1602
</em>. </span><span class="subtitle">
1604
- . </span></p></div><div class="biblioentry"><a id="idp15594816"></a><p><span class="title"><em>
1605
+ . </span></p></div><div class="biblioentry"><a id="idm269999936800"></a><p><span class="title"><em>
1606
<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">
1607
Boost C++ Libraries documentation, shared_ptr
1609
Index: libstdc++-v3/doc/html/manual/api.html
1610
===================================================================
1611
--- a/src/libstdc++-v3/doc/html/manual/api.html (.../tags/gcc_4_8_2_release)
1612
+++ b/src/libstdc++-v3/doc/html/manual/api.html (.../branches/gcc-4_8-branch)
1614
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1615
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, api, evolution, deprecation, history" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="abi.html" title="ABI Policy and Guidelines" /><link rel="next" href="backwards.html" title="Backwards Compatibility" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Evolution and Deprecation History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1616
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Evolution and Deprecation History</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, api, evolution, deprecation, history" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="abi.html" title="ABI Policy and Guidelines" /><link rel="next" href="backwards.html" title="Backwards Compatibility" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Evolution and Deprecation History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1617
Porting and Maintenance
1619
</th><td width="20%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.api"></a>API Evolution and Deprecation History</h2></div></div></div><p>
1621
<span class="type">__alloc</span> to select an underlying allocator that
1622
satisfied memory allocation requests. The selection of this
1623
underlying allocator was not user-configurable.
1624
- </p><div class="table"><a id="idp23030528"></a><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
1625
+ </p><div class="table"><a id="idm269992502096"></a><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
1626
of available allocators. All of these new allocators are
1627
standard-style. The following table includes details, along with
1628
the first released version of GCC that included the extension allocator.
1629
- </p><div class="table"><a id="idp23058160"></a><p class="title"><strong>Table B.7. Extension Allocators Continued</strong></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
1630
+ </p><div class="table"><a id="idm269992474464"></a><p class="title"><strong>Table B.7. Extension Allocators Continued</strong></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
1631
Debug mode first appears.
1633
Precompiled header support <acronym class="acronym">PCH</acronym> support.
1634
Index: libstdc++-v3/doc/html/manual/source_organization.html
1635
===================================================================
1636
--- a/src/libstdc++-v3/doc/html/manual/source_organization.html (.../tags/gcc_4_8_2_release)
1637
+++ b/src/libstdc++-v3/doc/html/manual/source_organization.html (.../branches/gcc-4_8-branch)
1639
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1640
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="next" href="source_code_style.html" title="Coding Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Directory Layout and Source Conventions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A.
1641
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="next" href="source_code_style.html" title="Coding Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Directory Layout and Source Conventions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A.
1644
</th><td width="20%" align="right"> <a accesskey="n" href="source_code_style.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p>
1645
Index: libstdc++-v3/doc/html/manual/fstreams.html
1646
===================================================================
1647
--- a/src/libstdc++-v3/doc/html/manual/fstreams.html (.../tags/gcc_4_8_2_release)
1648
+++ b/src/libstdc++-v3/doc/html/manual/fstreams.html (.../branches/gcc-4_8-branch)
1650
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1651
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>File Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="stringstreams.html" title="Memory Based Streams" /><link rel="next" href="io_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
1652
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>File Based Streams</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="stringstreams.html" title="Memory Based Streams" /><link rel="next" href="io_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
1655
</th><td width="20%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.filestreams"></a>File Based Streams</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.filestreams.copying_a_file"></a>Copying a File</h3></div></div></div><p>
1656
Index: libstdc++-v3/doc/html/manual/ext_demangling.html
1657
===================================================================
1658
--- a/src/libstdc++-v3/doc/html/manual/ext_demangling.html (.../tags/gcc_4_8_2_release)
1659
+++ b/src/libstdc++-v3/doc/html/manual/ext_demangling.html (.../branches/gcc-4_8-branch)
1661
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1662
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 29. Demangling</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_io.html" title="Chapter 28. Input and Output" /><link rel="next" href="ext_concurrency.html" title="Chapter 30. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part III.
1663
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 29. Demangling</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_io.html" title="Chapter 28. Input and Output" /><link rel="next" href="ext_concurrency.html" title="Chapter 30. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part III.
1666
</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 29. Demangling</h2></div></div></div><p>
1667
Index: libstdc++-v3/doc/html/manual/ext_preface.html
1668
===================================================================
1669
--- a/src/libstdc++-v3/doc/html/manual/ext_preface.html (.../tags/gcc_4_8_2_release)
1670
+++ b/src/libstdc++-v3/doc/html/manual/ext_preface.html (.../branches/gcc-4_8-branch)
1672
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1673
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="extensions.html" title="Part III. Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.
1674
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="extensions.html" title="Part III. Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.
1677
-</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="idp16425920"></a></h1></div></div></div><p>
1678
+</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="idm269999105296"></a></h1></div></div></div><p>
1679
Here we will make an attempt at describing the non-Standard
1680
extensions to the library. Some of these are from older versions of
1681
standard library components, namely SGI's STL, and some of these are
1682
Index: libstdc++-v3/doc/html/manual/concept_checking.html
1683
===================================================================
1684
--- a/src/libstdc++-v3/doc/html/manual/concept_checking.html (.../tags/gcc_4_8_2_release)
1685
+++ b/src/libstdc++-v3/doc/html/manual/concept_checking.html (.../branches/gcc-4_8-branch)
1687
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1688
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concept Checking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="next" href="utilities.html" title="Chapter 6. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Chapter 5.
1689
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concept Checking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="next" href="utilities.html" title="Chapter 6. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Chapter 5.
1692
</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.concept_checking"></a>Concept Checking</h2></div></div></div><p>
1693
Index: libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
1694
===================================================================
1695
--- a/src/libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html (.../tags/gcc_4_8_2_release)
1696
+++ b/src/libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html (.../branches/gcc-4_8-branch)
1698
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1699
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Multiple Thread Example</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_ex_single.html" title="Single Thread Example" /><link rel="next" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Multiple Thread Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_ex_single.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.example_multi"></a>Multiple Thread Example</h2></div></div></div><p>
1700
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Multiple Thread Example</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_ex_single.html" title="Single Thread Example" /><link rel="next" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Multiple Thread Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_ex_single.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.example_multi"></a>Multiple Thread Example</h2></div></div></div><p>
1701
In the ST example we never used the thread_id variable present in each block.
1702
Let's start by explaining the purpose of this in a MT application.
1704
Index: libstdc++-v3/doc/html/manual/ext_compile_checks.html
1705
===================================================================
1706
--- a/src/libstdc++-v3/doc/html/manual/ext_compile_checks.html (.../tags/gcc_4_8_2_release)
1707
+++ b/src/libstdc++-v3/doc/html/manual/ext_compile_checks.html (.../branches/gcc-4_8-branch)
1709
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1710
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Compile Time Checks</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_preface.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 17. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_preface.html">Prev</a> </td><th width="60%" align="center">Part III.
1711
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Compile Time Checks</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_preface.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 17. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_preface.html">Prev</a> </td><th width="60%" align="center">Part III.
1714
</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 16. Compile Time Checks</h2></div></div></div><p>
1715
Index: libstdc++-v3/doc/html/manual/strings.html
1716
===================================================================
1717
--- a/src/libstdc++-v3/doc/html/manual/strings.html (.../tags/gcc_4_8_2_release)
1718
+++ b/src/libstdc++-v3/doc/html/manual/strings.html (.../branches/gcc-4_8-branch)
1720
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1721
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Strings</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="traits.html" title="Traits" /><link rel="next" href="localization.html" title="Chapter 8. Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7.
1722
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Strings</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="traits.html" title="Traits" /><link rel="next" href="localization.html" title="Chapter 8. Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7.
1725
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="traits.html">Prev</a> </td><th width="60%" align="center">Part II.
1727
</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings"></a>Chapter 7.
1729
- <a id="idp15603440" class="indexterm"></a>
1730
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.strings.string"></a>String Classes</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p>
1731
+ <a id="idm269999928112" class="indexterm"></a>
1732
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.strings.string"></a>String Classes</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p>
1733
Here are Standard, simple, and portable ways to perform common
1734
transformations on a <code class="code">string</code> instance, such as
1735
"convert to all upper case." The word transformations
1736
Index: libstdc++-v3/doc/html/manual/containers_and_c.html
1737
===================================================================
1738
--- a/src/libstdc++-v3/doc/html/manual/containers_and_c.html (.../tags/gcc_4_8_2_release)
1739
+++ b/src/libstdc++-v3/doc/html/manual/containers_and_c.html (.../branches/gcc-4_8-branch)
1741
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1742
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="unordered_associative.html" title="Unordered Associative" /><link rel="next" href="iterators.html" title="Chapter 10. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="unordered_associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
1743
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="unordered_associative.html" title="Unordered Associative" /><link rel="next" href="iterators.html" title="Chapter 10. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="unordered_associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9.
1746
</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.c"></a>Interacting with C</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h3></div></div></div><p>
1747
Index: libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
1748
===================================================================
1749
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html (.../tags/gcc_4_8_2_release)
1750
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html (.../branches/gcc-4_8-branch)
1752
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1753
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_devel.html" title="Developer Information" /><link rel="next" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_devel.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.diagnostics"></a>Diagnostics</h2></div></div></div><p>
1754
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_devel.html" title="Developer Information" /><link rel="next" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_devel.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.diagnostics"></a>Diagnostics</h2></div></div></div><p>
1755
The table below presents all the diagnostics we intend to implement.
1756
Each diagnostic has a corresponding compile time switch
1757
<code class="code">-D_GLIBCXX_PROFILE_<diagnostic></code>.
1759
A high accuracy means that the diagnostic is unlikely to be wrong.
1760
These grades are not perfect. They are just meant to guide users with
1761
specific needs or time budgets.
1762
- </p><div class="table"><a id="idp17088912"></a><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /><col align="left" class="c6" /><col align="left" class="c7" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers" title="Containers">
1763
+ </p><div class="table"><a id="idm269998442544"></a><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /><col align="left" class="c6" /><col align="left" class="c7" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers" title="Containers">
1764
CONTAINERS</a></td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small" title="Hashtable Too Small">
1765
HASHTABLE_TOO_SMALL</a></td><td align="left">10</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large" title="Hashtable Too Large">
1766
HASHTABLE_TOO_LARGE</a></td><td align="left">5</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash" title="Inefficient Hash">
1768
Quick Sort for a particular call context.
1769
</p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span>
1771
- <a class="link" href="http://portal.acm.org/citation.cfm?doid=1065944.1065981" target="_top">
1772
+ <a class="link" href="https://dl.acm.org/citation.cfm?doid=1065944.1065981" target="_top">
1773
A framework for adaptive algorithm selection in STAPL</a> and
1774
<a class="link" href="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227" target="_top">
1775
Optimizing Sorting with Machine Learning Algorithms</a>.
1777
Keep a shadow for each container. Record iterator dereferences and
1778
container member accesses. Issue advice for elements referenced by
1780
- See paper: <a class="link" href="http://portal.acm.org/citation.cfm?id=207110.207148" target="_top">
1781
+ See paper: <a class="link" href="https://dl.acm.org/citation.cfm?id=207110.207148" target="_top">
1782
The LRPD test: speculative run-time parallelization of loops with
1783
privatization and reduction parallelization</a>.
1784
</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span>
1785
Index: libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
1786
===================================================================
1787
--- a/src/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html (.../tags/gcc_4_8_2_release)
1788
+++ b/src/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html (.../branches/gcc-4_8-branch)
1790
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1791
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="prev" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="next" href="ext_concurrency_use.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency_use.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either
1792
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="prev" href="ext_concurrency.html" title="Chapter 30. Concurrency" /><link rel="next" href="ext_concurrency_use.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency_use.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either
1793
implemented via compiler intrinsics (if the underlying host is
1794
capable) or by library fallbacks.</p><p>Compiler intrinsics (builtins) are always preferred. However, as
1795
the compiler builtins for atomics are not universally implemented,
1796
Index: libstdc++-v3/doc/html/manual/io_and_c.html
1797
===================================================================
1798
--- a/src/libstdc++-v3/doc/html/manual/io_and_c.html (.../tags/gcc_4_8_2_release)
1799
+++ b/src/libstdc++-v3/doc/html/manual/io_and_c.html (.../branches/gcc-4_8-branch)
1801
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1802
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="fstreams.html" title="File Based Streams" /><link rel="next" href="atomics.html" title="Chapter 14. Atomics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
1803
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="fstreams.html" title="File Based Streams" /><link rel="next" href="atomics.html" title="Chapter 14. Atomics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
1806
</th><td width="20%" align="right"> <a accesskey="n" href="atomics.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.c"></a>Interacting with C</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.c.FILE"></a>Using FILE* and file descriptors</h3></div></div></div><p>
1807
Index: libstdc++-v3/doc/html/manual/documentation_hacking.html
1808
===================================================================
1809
--- a/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../tags/gcc_4_8_2_release)
1810
+++ b/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../branches/gcc-4_8-branch)
1812
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1813
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Writing and Generating Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, documentation, style, docbook, doxygen" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Writing and Generating Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1814
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Writing and Generating Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, documentation, style, docbook, doxygen" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Writing and Generating Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_porting.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1815
Porting and Maintenance
1817
</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.doc"></a>Writing and Generating Documentation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.intro"></a>Introduction</h3></div></div></div><p>
1819
supported, and are always aliased to dummy rules. These
1820
unsupported formats are: <span class="emphasis"><em>info</em></span>,
1821
<span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>.
1822
- </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"></a>Doxygen</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idp22162432"></a><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">coreutils</td><td align="center">8.5</td><td align="center">all</td></tr><tr><td align="center">bash</td><td align="center">4.1</td><td align="center">all</td></tr><tr><td align="center">doxygen</td><td align="center">1.7.6.1</td><td align="center">all</td></tr><tr><td align="center">graphviz</td><td align="center">2.26</td><td align="center">graphical hierarchies</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr></tbody></table></div></div><br class="table-break" /><p>
1823
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"></a>Doxygen</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idm269993370272"></a><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">coreutils</td><td align="center">8.5</td><td align="center">all</td></tr><tr><td align="center">bash</td><td align="center">4.1</td><td align="center">all</td></tr><tr><td align="center">doxygen</td><td align="center">1.7.6.1</td><td align="center">all</td></tr><tr><td align="center">graphviz</td><td align="center">2.26</td><td align="center">graphical hierarchies</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr></tbody></table></div></div><br class="table-break" /><p>
1824
Prerequisite tools are Bash 2.0 or later,
1825
<a class="link" href="http://www.doxygen.org/" target="_top">Doxygen</a>, and
1826
the <a class="link" href="http://www.gnu.org/software/coreutils/" target="_top">GNU
1830
Some commentary to accompany
1831
- the first list in the <a class="link" href="http://www.stack.nl/~dimitri/doxygen/docblocks.html" target="_top">Special
1832
- Documentation Blocks</a> section of
1833
- the Doxygen manual:
1834
+ the first list in the <a class="link" href="http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html" target="_top">Special
1835
+ Documentation Blocks</a> section of the Doxygen manual:
1836
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>For longer comments, use the Javadoc style...</p></li><li class="listitem"><p>
1837
...not the Qt style. The intermediate *'s are preferred.
1838
</p></li><li class="listitem"><p>
1840
writing Doxygen comments. Single and double quotes, and
1841
separators in filenames are two common trouble spots. When in
1842
doubt, consult the following table.
1843
- </p><div class="table"><a id="idp22238096"></a><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"></a>Docbook</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idp22257536"></a><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">docbook5-style-xsl</td><td align="center">1.76.1</td><td align="center">all</td></tr><tr><td align="center">xsltproc</td><td align="center">1.1.26</td><td align="center">all</td></tr><tr><td align="center">xmllint</td><td align="center">2.7.7</td><td align="center">validation</td></tr><tr><td align="center">dblatex</td><td align="center">0.3</td><td align="center">pdf output</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr><tr><td align="center">docbook2X</td><td align="center">0.8.8</td><td align="center">info output</td></tr><tr><td align="center">epub3 stylesheets</td><td align="center">b3</td><td align="center">epub output</td></tr></tbody></table></div></div><br class="table-break" /><p>
1844
+ </p><div class="table"><a id="idm269993294592"></a><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"></a>Docbook</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idm269993275152"></a><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">docbook5-style-xsl</td><td align="center">1.76.1</td><td align="center">all</td></tr><tr><td align="center">xsltproc</td><td align="center">1.1.26</td><td align="center">all</td></tr><tr><td align="center">xmllint</td><td align="center">2.7.7</td><td align="center">validation</td></tr><tr><td align="center">dblatex</td><td align="center">0.3</td><td align="center">pdf output</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr><tr><td align="center">docbook2X</td><td align="center">0.8.8</td><td align="center">info output</td></tr><tr><td align="center">epub3 stylesheets</td><td align="center">b3</td><td align="center">epub output</td></tr></tbody></table></div></div><br class="table-break" /><p>
1845
Editing the DocBook sources requires an XML editor. Many
1846
exist: some notable options
1847
include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>,
1848
@@ -520,11 +519,11 @@
1849
<a class="link" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>.
1850
An incomplete reference for HTML to Docbook conversion is
1851
detailed in the table below.
1852
- </p><div class="table"><a id="idp22335040"></a><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>,
1853
+ </p><div class="table"><a id="idm269993197520"></a><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>,
1854
<literallayout></td></tr><tr><td align="left"><ul></td><td align="left"><itemizedlist></td></tr><tr><td align="left"><ol></td><td align="left"><orderedlist></td></tr><tr><td align="left"><il></td><td align="left"><listitem></td></tr><tr><td align="left"><dl></td><td align="left"><variablelist></td></tr><tr><td align="left"><dt></td><td align="left"><term></td></tr><tr><td align="left"><dd></td><td align="left"><listitem></td></tr><tr><td align="left"><a href=""></td><td align="left"><ulink url=""></td></tr><tr><td align="left"><code></td><td align="left"><literal>, <programlisting></td></tr><tr><td align="left"><strong></td><td align="left"><emphasis></td></tr><tr><td align="left"><em></td><td align="left"><emphasis></td></tr><tr><td align="left">"</td><td align="left"><quote></td></tr></tbody></table></div></div><br class="table-break" /><p>
1855
And examples of detailed markup for which there are no real HTML
1856
equivalents are listed in the table below.
1857
-</p><div class="table"><a id="idp22359184"></a><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left">
1858
+</p><div class="table"><a id="idm269993173376"></a><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left">
1859
<p><function>clear()</function></p>
1860
<p><function>fs.clear()</function></p>
1861
</td></tr><tr><td align="left"><type></td><td align="left"><type>long long</type></td></tr><tr><td align="left"><varname></td><td align="left"><varname>fs</varname></td></tr><tr><td align="left"><literal></td><td align="left">
1862
Index: libstdc++-v3/doc/html/manual/extensions.html
1863
===================================================================
1864
--- a/src/libstdc++-v3/doc/html/manual/extensions.html (.../tags/gcc_4_8_2_release)
1865
+++ b/src/libstdc++-v3/doc/html/manual/extensions.html (.../branches/gcc-4_8-branch)
1867
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1868
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="io_and_c.html" title="Interacting with C" /><link rel="next" href="ext_preface.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III.
1869
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Extensions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="index.html" title="The GNU C++ Library Manual" /><link rel="prev" href="io_and_c.html" title="Interacting with C" /><link rel="next" href="ext_preface.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III.
1872
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="ext_preface.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part III.
1874
- <a id="idp16423680" class="indexterm"></a>
1875
-</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="preface"><a href="ext_preface.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="debug_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
1876
+ <a id="idm269999107536" class="indexterm"></a>
1877
+</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="preface"><a href="ext_preface.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="debug_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
1878
debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="parallel_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_test.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="section"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="section"><a href="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_api.html">Extensions for Custom Containers</a></span></dt><dt><span class="section"><a href="profile_mode_cost_model.html">Empirical Cost Model</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="section"><a href="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_devel.html">Developer Information</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="section"><a href="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient Hash</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector Too Large</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector to Hashtable</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector to List</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List to Vector</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List to Forward List (Slist)</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered to Unordered Associative Container</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software Prefetch</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dd><dl><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data Dependence Violations at Container Level</a></span></dt><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False Sharing</a></span></dt></dl></dd><dt><span class="section"><a href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="mt_allocator.html">20. The mt_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="section"><a href="mt_allocator_design.html">Design Issues</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_design.html#allocator.mt.overview">Overview</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.tune">Tunable Parameters</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.init">Initialization</a></span></dt><dt><span class="section"><a href="mt_allocator_impl.html#allocator.mt.deallocation">Deallocation Notes</a></span></dt></dl></dd><dt><span class="section"><a href="mt_allocator_ex_single.html">Single Thread Example</a></span></dt><dt><span class="section"><a href="mt_allocator_ex_multi.html">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="chapter"><a href="bitmap_allocator.html">21. The bitmap_allocator</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.free_list_store">Free List Store</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block">Super Block</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.super_block_data">Super Block Data Layout</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.max_wasted">Maximum Wasted Percentage</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.allocate"><code class="function">allocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.deallocate"><code class="function">deallocate</code></a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.questions">Questions</a></span></dt><dd><dl><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.1">1</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.2">2</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.question.3">3</a></span></dt></dl></dd><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.locality">Locality</a></span></dt><dt><span class="section"><a href="bitmap_allocator_impl.html#bitmap.impl.grow_policy">Overhead and Grow Policy</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="policy_data_structures.html">22. Policy-Based Data Structures</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro">Intro</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues">Performance Issues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.associative">Associative</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.issues.priority_queue">Priority Que</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation">Goals</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.associative">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.iterators">Iterators</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.associative.functions">Functional</a></span></dt></dl></dd><dt><span class="section"><a href="policy_data_structures.html#pbds.intro.motivation.priority_queue">Priority Queues</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.policy">Policy Choices</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.underlying">Underlying Data Structures</a></span></dt><dt><span class="section"><a href="policy_data_structures.html#motivation.priority_queue.binary_heap">Binary Heaps</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="policy_data_structures_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.organization">Organization</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.basic">Basic Use</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.configuring">
1879
Configuring via Template Parameters
1880
</a></span></dt><dt><span class="section"><a href="policy_data_structures_using.html#pbds.using.tutorial.traits">
1881
Index: libstdc++-v3/doc/html/manual/debug_mode_using.html
1882
===================================================================
1883
--- a/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../tags/gcc_4_8_2_release)
1884
+++ b/src/libstdc++-v3/doc/html/manual/debug_mode_using.html (.../branches/gcc-4_8-branch)
1886
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1887
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode_semantics.html" title="Semantics" /><link rel="next" href="debug_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.using"></a>Using</h2></div></div></div><p>
1888
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode_semantics.html" title="Semantics" /><link rel="next" href="debug_mode_design.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.using"></a>Using</h2></div></div></div><p>
1889
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.mode"></a>Using the Debug Mode</h3></div></div></div><p>To use the libstdc++ debug mode, compile your application with the
1890
compiler flag <code class="code">-D_GLIBCXX_DEBUG</code>. Note that this flag
1891
changes the sizes and behavior of standard class templates such
1893
mode or with debug mode. The
1894
following table provides the names and headers of the debugging
1896
-</p><div class="table"><a id="idp16490400"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename"><debug/bitset></code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename"><debug/deque></code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename"><debug/list></code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename"><debug/vector></code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
1897
+</p><div class="table"><a id="idm269999040896"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename"><debug/bitset></code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename"><debug/deque></code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename"><debug/list></code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename"><debug/vector></code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
1898
containers have additional debug capability.
1899
-</p><div class="table"><a id="idp16535296"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table summary="Debugging Containers C++11" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
1900
\ No newline at end of file
1901
+</p><div class="table"><a id="idm269998996000"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table summary="Debugging Containers C++11" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
1902
\ No newline at end of file
1903
Index: libstdc++-v3/doc/html/manual/parallel_mode.html
1904
===================================================================
1905
--- a/src/libstdc++-v3/doc/html/manual/parallel_mode.html (.../tags/gcc_4_8_2_release)
1906
+++ b/src/libstdc++-v3/doc/html/manual/parallel_mode.html (.../branches/gcc-4_8-branch)
1908
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1909
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Parallel Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="debug_mode_design.html" title="Design" /><link rel="next" href="parallel_mode_semantics.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_design.html">Prev</a> </td><th width="60%" align="center">Part III.
1910
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Parallel Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, parallel" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="debug_mode_design.html" title="Design" /><link rel="next" href="parallel_mode_semantics.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode_design.html">Prev</a> </td><th width="60%" align="center">Part III.
1913
-</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_semantics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 18. Parallel Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="parallel_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_test.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel
1914
+</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode_semantics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 18. Parallel Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="parallel_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="section"><a href="parallel_mode_using.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dd><dl><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.omp">Setting up the OpenMP Environment</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.compile">Compile Time Switches</a></span></dt><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.tuning.settings">Run Time Settings and Defaults</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_design.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="section"><a href="parallel_mode_test.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel
1915
implementation of many algorithms the C++ Standard Library.
1917
Several of the standard algorithms, for instance
1919
specific compiler flag.
1920
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
1921
<code class="filename">numeric</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::accumulate</code></p></li><li class="listitem"><p><code class="function">std::adjacent_difference</code></p></li><li class="listitem"><p><code class="function">std::inner_product</code></p></li><li class="listitem"><p><code class="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
1922
-<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idp16926864"></a><p><span class="citetitle"><em class="citetitle">
1923
+<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idm269998604464"></a><p><span class="citetitle"><em class="citetitle">
1924
Parallelization of Bulk Operations for STL Dictionaries
1925
</em>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Leonor</span> <span class="surname">Frias</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
1926
Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS)
1927
- . </span></span></p></div><div class="biblioentry"><a id="idp16931936"></a><p><span class="citetitle"><em class="citetitle">
1928
+ . </span></span></p></div><div class="biblioentry"><a id="idm269998599392"></a><p><span class="citetitle"><em class="citetitle">
1929
The Multi-Core Standard Template Library
1930
</em>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Peter</span> <span class="surname">Sanders</span>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Putze</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
1931
Euro-Par 2007: Parallel Processing. (LNCS 4641)
1932
Index: libstdc++-v3/doc/html/manual/debug_mode_semantics.html
1933
===================================================================
1934
--- a/src/libstdc++-v3/doc/html/manual/debug_mode_semantics.html (.../tags/gcc_4_8_2_release)
1935
+++ b/src/libstdc++-v3/doc/html/manual/debug_mode_semantics.html (.../branches/gcc-4_8-branch)
1937
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1938
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="next" href="debug_mode_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.semantics"></a>Semantics</h2></div></div></div><p>
1939
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="next" href="debug_mode_using.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.semantics"></a>Semantics</h2></div></div></div><p>
1940
</p><p>A program that uses the C++ standard library correctly
1941
will maintain the same semantics under debug mode as it had with
1942
the normal (release) library. All functional and exception-handling
1943
Index: libstdc++-v3/doc/html/manual/setup.html
1944
===================================================================
1945
--- a/src/libstdc++-v3/doc/html/manual/setup.html (.../tags/gcc_4_8_2_release)
1946
+++ b/src/libstdc++-v3/doc/html/manual/setup.html (.../branches/gcc-4_8-branch)
1948
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1949
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="bugs.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I.
1950
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="bugs.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bugs.html">Prev</a> </td><th width="60%" align="center">Part I.
1953
-</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></div><p>To transform libstdc++ sources into installed include files
1954
+</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></div><p>To transform libstdc++ sources into installed include files
1955
and properly built binaries useful for linking to other software is
1956
a multi-step process. Steps include getting the sources,
1957
configuring and building the sources, testing, and installation.
1958
Index: libstdc++-v3/doc/html/manual/backwards.html
1959
===================================================================
1960
--- a/src/libstdc++-v3/doc/html/manual/backwards.html (.../tags/gcc_4_8_2_release)
1961
+++ b/src/libstdc++-v3/doc/html/manual/backwards.html (.../branches/gcc-4_8-branch)
1963
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1964
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, backwards" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="api.html" title="API Evolution and Deprecation History" /><link rel="next" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Backwards Compatibility</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1965
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Backwards Compatibility</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, backwards" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="api.html" title="API Evolution and Deprecation History" /><link rel="next" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Backwards Compatibility</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center">Appendix B.
1966
Porting and Maintenance
1968
</th><td width="20%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.appendix.porting.backwards"></a>Backwards Compatibility</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.first"></a>First</h3></div></div></div><p>The first generation GNU C++ library was called libg++. It was a
1969
@@ -940,15 +940,15 @@
1970
This is a change in behavior from older versions. Now, most
1971
<span class="type">iterator_type</span> typedefs in container classes are POD
1972
objects, not <span class="type">value_type</span> pointers.
1973
-</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idp23415104"></a><p><span class="title"><em>
1974
+</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idm269992117648"></a><p><span class="title"><em>
1975
<a class="link" href="http://www.kegel.com/gcc/gcc4.html" target="_top">
1976
Migrating to GCC 4.1
1978
- </em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="idp23417888"></a><p><span class="title"><em>
1979
+ </em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="idm269992114864"></a><p><span class="title"><em>
1980
<a class="link" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" target="_top">
1981
Building the Whole Debian Archive with GCC 4.1: A Summary
1983
- </em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="idp23420736"></a><p><span class="title"><em>
1984
+ </em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="idm269992112016"></a><p><span class="title"><em>
1985
<a class="link" href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" target="_top">
1986
Migration guide for GCC-3.2
1988
Index: libstdc++-v3/doc/html/manual/source_design_notes.html
1989
===================================================================
1990
--- a/src/libstdc++-v3/doc/html/manual/source_design_notes.html (.../tags/gcc_4_8_2_release)
1991
+++ b/src/libstdc++-v3/doc/html/manual/source_design_notes.html (.../branches/gcc-4_8-branch)
1993
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1994
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Notes</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="source_code_style.html" title="Coding Style" /><link rel="next" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><th width="60%" align="center">Appendix A.
1995
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Notes</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="source_code_style.html" title="Coding Style" /><link rel="next" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><th width="60%" align="center">Appendix A.
1998
</th><td width="20%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.design_notes"></a>Design Notes</h2></div></div></div><p>
1999
Index: libstdc++-v3/doc/html/manual/ext_sgi.html
2000
===================================================================
2001
--- a/src/libstdc++-v3/doc/html/manual/ext_sgi.html (.../tags/gcc_4_8_2_release)
2002
+++ b/src/libstdc++-v3/doc/html/manual/ext_sgi.html (.../branches/gcc-4_8-branch)
2004
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2005
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="prev" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="next" href="ext_utilities.html" title="Chapter 24. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 23. HP/SGI Extensions</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated</h2></div></div></div><p>
2006
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="prev" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="next" href="ext_utilities.html" title="Chapter 24. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 23. HP/SGI Extensions</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated</h2></div></div></div><p>
2007
The SGI hashing classes <code class="classname">hash_set</code> and
2008
<code class="classname">hash_set</code> have been deprecated by the
2009
unordered_set, unordered_multiset, unordered_map,
2010
Index: libstdc++-v3/doc/html/manual/facets.html
2011
===================================================================
2012
--- a/src/libstdc++-v3/doc/html/manual/facets.html (.../tags/gcc_4_8_2_release)
2013
+++ b/src/libstdc++-v3/doc/html/manual/facets.html (.../branches/gcc-4_8-branch)
2015
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2016
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="localization.html" title="Chapter 8. Localization" /><link rel="prev" href="localization.html" title="Chapter 8. Localization" /><link rel="next" href="containers.html" title="Chapter 9. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8.
2017
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="localization.html" title="Chapter 8. Localization" /><link rel="prev" href="localization.html" title="Chapter 8. Localization" /><link rel="next" href="containers.html" title="Chapter 9. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8.
2020
-</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.facet"></a>Facets</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"></a>ctype</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idp15778336"></a>Specializations</h5></div></div></div><p>
2021
+</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.facet"></a>Facets</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"></a>ctype</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269999753024"></a>Specializations</h5></div></div></div><p>
2022
For the required specialization codecvt<wchar_t, char, mbstate_t> ,
2023
conversions are made between the internal character set (always UCS4
2024
on GNU/Linux) and whatever the currently selected locale for the
2026
</p></li><li class="listitem"><p>
2027
Rename abstract base class. See if just smash-overriding is a
2028
better approach. Clarify, add sanity to naming.
2029
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp15793392"></a><p><span class="citetitle"><em class="citetitle">
2030
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269999738032"></a><p><span class="citetitle"><em class="citetitle">
2032
- </em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="idp15798144"></a><p><span class="citetitle"><em class="citetitle">
2033
+ </em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="idm269999733280"></a><p><span class="citetitle"><em class="citetitle">
2035
- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idp15801232"></a><p><span class="citetitle"><em class="citetitle">
2036
+ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269999730192"></a><p><span class="citetitle"><em class="citetitle">
2037
ISO/IEC 14882:1998 Programming languages - C++
2038
- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idp15803520"></a><p><span class="citetitle"><em class="citetitle">
2039
+ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269999727904"></a><p><span class="citetitle"><em class="citetitle">
2040
ISO/IEC 9899:1999 Programming languages - C
2041
- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idp15805792"></a><p><span class="title"><em>
2042
+ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269999725632"></a><p><span class="title"><em>
2043
<a class="link" href="http://www.unix.org/version3/ieee_std.html" target="_top">
2044
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
2046
</em>. </span><span class="copyright">Copyright © 1999
2047
- The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="idp15809040"></a><p><span class="citetitle"><em class="citetitle">
2048
+ The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="idm269999722384"></a><p><span class="citetitle"><em class="citetitle">
2049
The C++ Programming Language, Special Edition
2050
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
2052
- . </span></span></p></div><div class="biblioentry"><a id="idp15813664"></a><p><span class="citetitle"><em class="citetitle">
2053
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999717760"></a><p><span class="citetitle"><em class="citetitle">
2054
Standard C++ IOStreams and Locales
2055
</em>. </span><span class="subtitle">
2056
Advanced Programmer's Guide and Reference
2057
@@ -409,42 +409,42 @@
2058
</p></li><li class="listitem"><p>
2059
wchar_t/char internal buffers and conversions between
2060
internal/external buffers?
2061
- </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp15891136"></a><p><span class="citetitle"><em class="citetitle">
2062
+ </p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269999640080"></a><p><span class="citetitle"><em class="citetitle">
2064
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">
2065
Chapters 6 Character Set Handling and 7 Locales and Internationalization
2066
- . </span></p></div><div class="biblioentry"><a id="idp15895888"></a><p><span class="citetitle"><em class="citetitle">
2067
+ . </span></p></div><div class="biblioentry"><a id="idm269999635328"></a><p><span class="citetitle"><em class="citetitle">
2069
- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idp15898976"></a><p><span class="citetitle"><em class="citetitle">
2070
+ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269999632240"></a><p><span class="citetitle"><em class="citetitle">
2071
ISO/IEC 14882:1998 Programming languages - C++
2072
- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idp15901264"></a><p><span class="citetitle"><em class="citetitle">
2073
+ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269999629952"></a><p><span class="citetitle"><em class="citetitle">
2074
ISO/IEC 9899:1999 Programming languages - C
2075
- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idp15903536"></a><p><span class="title"><em>
2076
+ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269999627680"></a><p><span class="title"><em>
2077
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
2078
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
2080
</em>. </span><span class="copyright">Copyright © 2008
2081
The Open Group/The Institute of Electrical and Electronics
2083
- . </span></p></div><div class="biblioentry"><a id="idp15906768"></a><p><span class="citetitle"><em class="citetitle">
2084
+ . </span></p></div><div class="biblioentry"><a id="idm269999624448"></a><p><span class="citetitle"><em class="citetitle">
2085
The C++ Programming Language, Special Edition
2086
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
2088
- . </span></span></p></div><div class="biblioentry"><a id="idp15911392"></a><p><span class="citetitle"><em class="citetitle">
2089
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999619824"></a><p><span class="citetitle"><em class="citetitle">
2090
Standard C++ IOStreams and Locales
2091
</em>. </span><span class="subtitle">
2092
Advanced Programmer's Guide and Reference
2093
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
2094
Addison Wesley Longman
2095
- . </span></span></p></div><div class="biblioentry"><a id="idp15917056"></a><p><span class="title"><em>
2096
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999614160"></a><p><span class="title"><em>
2097
<a class="link" href="http://www.lysator.liu.se/c/na1.html" target="_top">
2098
A brief description of Normative Addendum 1
2100
- </em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="idp15920304"></a><p><span class="title"><em>
2101
+ </em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="idm269999610912"></a><p><span class="title"><em>
2102
<a class="link" href="http://tldp.org/HOWTO/Unicode-HOWTO.html" target="_top">
2105
- </em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="idp15923088"></a><p><span class="title"><em>
2106
+ </em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="idm269999608128"></a><p><span class="title"><em>
2107
<a class="link" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top">
2108
UTF-8 and Unicode FAQ for Unix/Linux
2110
@@ -690,39 +690,39 @@
2111
model. As of this writing, it is unknown how to query to see
2112
if a specified message catalog exists using the gettext
2114
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp16003632"></a><p><span class="citetitle"><em class="citetitle">
2115
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269999527584"></a><p><span class="citetitle"><em class="citetitle">
2117
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization
2118
- . </span></p></div><div class="biblioentry"><a id="idp16008384"></a><p><span class="citetitle"><em class="citetitle">
2119
+ . </span></p></div><div class="biblioentry"><a id="idm269999522832"></a><p><span class="citetitle"><em class="citetitle">
2121
- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idp16011472"></a><p><span class="citetitle"><em class="citetitle">
2122
+ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269999519744"></a><p><span class="citetitle"><em class="citetitle">
2123
ISO/IEC 14882:1998 Programming languages - C++
2124
- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idp16013760"></a><p><span class="citetitle"><em class="citetitle">
2125
+ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269999517456"></a><p><span class="citetitle"><em class="citetitle">
2126
ISO/IEC 9899:1999 Programming languages - C
2127
- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idp16016032"></a><p><span class="title"><em>
2128
+ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269999515184"></a><p><span class="title"><em>
2129
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
2130
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
2132
</em>. </span><span class="copyright">Copyright © 2008
2133
The Open Group/The Institute of Electrical and Electronics
2135
- . </span></p></div><div class="biblioentry"><a id="idp16019264"></a><p><span class="citetitle"><em class="citetitle">
2136
+ . </span></p></div><div class="biblioentry"><a id="idm269999511952"></a><p><span class="citetitle"><em class="citetitle">
2137
The C++ Programming Language, Special Edition
2138
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
2140
- . </span></span></p></div><div class="biblioentry"><a id="idp16023888"></a><p><span class="citetitle"><em class="citetitle">
2141
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999507328"></a><p><span class="citetitle"><em class="citetitle">
2142
Standard C++ IOStreams and Locales
2143
</em>. </span><span class="subtitle">
2144
Advanced Programmer's Guide and Reference
2145
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
2146
Addison Wesley Longman
2147
- . </span></span></p></div><div class="biblioentry"><a id="idp16029552"></a><p><span class="title"><em>
2148
- <a class="link" href="http://java.sun.com/reference/api/index.html" target="_top">
2149
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999501664"></a><p><span class="title"><em>
2150
+ <a class="link" href="http://www.oracle.com/technetwork/java/api/index.html" target="_top">
2151
API Specifications, Java Platform
2153
</em>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat,
2154
java.util.Locale, java.util.ResourceBundle
2155
- . </span></p></div><div class="biblioentry"><a id="idp16031888"></a><p><span class="title"><em>
2156
+ . </span></p></div><div class="biblioentry"><a id="idm269999499328"></a><p><span class="title"><em>
2157
<a class="link" href="https://www.gnu.org/software/gettext/" target="_top">
2158
GNU gettext tools, version 0.10.38, Native Language Support
2160
Index: libstdc++-v3/doc/html/manual/diagnostics.html
2161
===================================================================
2162
--- a/src/libstdc++-v3/doc/html/manual/diagnostics.html (.../tags/gcc_4_8_2_release)
2163
+++ b/src/libstdc++-v3/doc/html/manual/diagnostics.html (.../branches/gcc-4_8-branch)
2165
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2166
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="termination.html" title="Termination" /><link rel="next" href="concept_checking.html" title="Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5.
2167
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Diagnostics</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="termination.html" title="Termination" /><link rel="next" href="concept_checking.html" title="Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5.
2170
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><th width="60%" align="center">Part II.
2172
</th><td width="20%" align="right"> <a accesskey="n" href="concept_checking.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"></a>Chapter 5.
2174
- <a id="idp13835248" class="indexterm"></a>
2175
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p>
2176
+ <a id="idm270001697504" class="indexterm"></a>
2177
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p>
2178
All exception objects are defined in one of the standard header
2179
files: <code class="filename">exception</code>,
2180
<code class="filename">stdexcept</code>, <code class="filename">new</code>, and
2181
Index: libstdc++-v3/doc/html/manual/mt_allocator_design.html
2182
===================================================================
2183
--- a/src/libstdc++-v3/doc/html/manual/mt_allocator_design.html (.../tags/gcc_4_8_2_release)
2184
+++ b/src/libstdc++-v3/doc/html/manual/mt_allocator_design.html (.../branches/gcc-4_8-branch)
2186
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2187
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="next" href="mt_allocator_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_impl.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.design_issues"></a>Design Issues</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.overview"></a>Overview</h3></div></div></div><p> There are three general components to the allocator: a datum
2188
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Issues</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="next" href="mt_allocator_impl.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_impl.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.design_issues"></a>Design Issues</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.overview"></a>Overview</h3></div></div></div><p> There are three general components to the allocator: a datum
2189
describing the characteristics of the memory pool, a policy class
2190
containing this pool that links instantiation types to common or
2191
individual pools, and a class inheriting from the policy class that is
2192
Index: libstdc++-v3/doc/html/manual/appendix_free.html
2193
===================================================================
2194
--- a/src/libstdc++-v3/doc/html/manual/appendix_free.html (.../tags/gcc_4_8_2_release)
2195
+++ b/src/libstdc++-v3/doc/html/manual/appendix_free.html (.../branches/gcc-4_8-branch)
2197
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2198
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C.
2199
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C.
2200
Free Software Needs Free Documentation
2202
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">Part IV.
2204
</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.free"></a>
2205
Free Software Needs Free Documentation
2206
- <a id="idp23426192" class="indexterm"></a>
2207
+ <a id="idm269992106560" class="indexterm"></a>
2208
</h1></div></div></div><p>
2209
The biggest deficiency in free operating systems is not in the
2210
software--it is the lack of good free manuals that we can include in
2211
Index: libstdc++-v3/doc/html/manual/algorithms.html
2212
===================================================================
2213
--- a/src/libstdc++-v3/doc/html/manual/algorithms.html (.../tags/gcc_4_8_2_release)
2214
+++ b/src/libstdc++-v3/doc/html/manual/algorithms.html (.../branches/gcc-4_8-branch)
2216
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2217
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library, algorithm" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="iterators.html" title="Chapter 10. Iterators" /><link rel="next" href="numerics.html" title="Chapter 12. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11.
2218
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library, algorithm" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="iterators.html" title="Chapter 10. Iterators" /><link rel="next" href="numerics.html" title="Chapter 12. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11.
2221
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part II.
2223
</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.algorithms"></a>Chapter 11.
2225
- <a id="idp16191968" class="indexterm"></a>
2226
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div><p>
2227
+ <a id="idm269999339120" class="indexterm"></a>
2228
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div><p>
2229
The neatest accomplishment of the algorithms section is that all the
2230
work is done via iterators, not containers directly. This means two
2232
Index: libstdc++-v3/doc/html/manual/appendix_porting.html
2233
===================================================================
2234
--- a/src/libstdc++-v3/doc/html/manual/appendix_porting.html (.../tags/gcc_4_8_2_release)
2235
+++ b/src/libstdc++-v3/doc/html/manual/appendix_porting.html (.../branches/gcc-4_8-branch)
2237
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2238
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="source_design_notes.html" title="Design Notes" /><link rel="next" href="documentation_hacking.html" title="Writing and Generating Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B.
2239
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="source_design_notes.html" title="Design Notes" /><link rel="next" href="documentation_hacking.html" title="Writing and Generating Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B.
2240
Porting and Maintenance
2242
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">Part IV.
2244
</th><td width="20%" align="right"> <a accesskey="n" href="documentation_hacking.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.porting"></a>
2245
Porting and Maintenance
2246
- <a id="idp22008864" class="indexterm"></a>
2247
-</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview">Overview</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview.basic">General Process</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview.map">What Comes from Where</a></span></dt></dl></dd><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure">Configure</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="section"><a href="appendix_porting.html#build_hacking.make">Make</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doxygen.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.rules">Generating the Doxygen Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.debug">Debugging Generation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.markup">Markup</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html#doc.docbook">Docbook</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#docbook.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.rules">Generating the DocBook Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.debug">Debugging Generation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.validation">Editing and Validation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.examples">File Organization and Basics</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.markup">Markup By Example</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="section"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="section"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="section"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="section"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="section"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization.layout">Directory Layout</a></span></dt><dt><span class="section"><a href="test.html#test.organization.naming">Naming Conventions</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.run.basic">Basic</a></span></dt><dt><span class="section"><a href="test.html#test.run.variations">Variations</a></span></dt><dt><span class="section"><a href="test.html#test.run.permutations">Permutations</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="section"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.harness.dejagnu">Dejagnu Harness Details</a></span></dt><dt><span class="section"><a href="test.html#test.harness.utils">Utilities</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.special">Special Topics</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety">
2248
+ <a id="idm269993523968" class="indexterm"></a>
2249
+</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview">Overview</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview.basic">General Process</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.overview.map">What Comes from Where</a></span></dt></dl></dd><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure">Configure</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.configure.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="section"><a href="appendix_porting.html#build_hacking.make">Make</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doxygen.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.rules">Generating the Doxygen Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.debug">Debugging Generation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.markup">Markup</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html#doc.docbook">Docbook</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#docbook.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.rules">Generating the DocBook Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.debug">Debugging Generation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.validation">Editing and Validation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.examples">File Organization and Basics</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.markup">Markup By Example</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="section"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="section"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="section"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="section"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="section"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization.layout">Directory Layout</a></span></dt><dt><span class="section"><a href="test.html#test.organization.naming">Naming Conventions</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.run.basic">Basic</a></span></dt><dt><span class="section"><a href="test.html#test.run.variations">Variations</a></span></dt><dt><span class="section"><a href="test.html#test.run.permutations">Permutations</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="section"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.harness.dejagnu">Dejagnu Harness Details</a></span></dt><dt><span class="section"><a href="test.html#test.harness.utils">Utilities</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.special">Special Topics</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety">
2250
Qualifying Exception Safety Guarantees
2252
</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety.overview">Overview</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.status">
2254
in the build directory starts the build process. The <code class="literal">all</code> target comes from the <code class="filename">Makefile</code> file, which is generated via <span class="command"><strong>configure</strong></span> from the <code class="filename">Makefile.in</code> file, which is in turn generated (via
2255
<span class="command"><strong>automake</strong></span>) from the file
2256
<code class="filename">Makefile.am</code>.
2257
-</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="build_hacking.overview.map"></a>What Comes from Where</h4></div></div></div><div class="figure"><a id="idp22035648"></a><p class="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/confdeps.png" align="middle" alt="Dependency Graph for Configure and Build Files" /></div></div></div><br class="figure-break" /><p>
2258
+</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="build_hacking.overview.map"></a>What Comes from Where</h4></div></div></div><div class="figure"><a id="idm269993497120"></a><p class="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/confdeps.png" align="middle" alt="Dependency Graph for Configure and Build Files" /></div></div></div><br class="figure-break" /><p>
2259
Regenerate all generated files by using the command
2260
<code class="code">autoreconf</code> at the top level of the libstdc++ source
2262
Index: libstdc++-v3/doc/html/manual/profile_mode_cost_model.html
2263
===================================================================
2264
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_cost_model.html (.../tags/gcc_4_8_2_release)
2265
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_cost_model.html (.../branches/gcc-4_8-branch)
2267
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2268
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_api.html" title="Extensions for Custom Containers" /><link rel="next" href="profile_mode_impl.html" title="Implementation Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_api.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_impl.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.cost_model"></a>Empirical Cost Model</h2></div></div></div><p>
2269
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode_api.html" title="Extensions for Custom Containers" /><link rel="next" href="profile_mode_impl.html" title="Implementation Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode_api.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_impl.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.cost_model"></a>Empirical Cost Model</h2></div></div></div><p>
2270
Currently, the cost model uses formulas with predefined relative weights
2271
for alternative containers or container implementations. For instance,
2272
iterating through a vector is X times faster than iterating through a list.
2273
Index: libstdc++-v3/doc/html/manual/make.html
2274
===================================================================
2275
--- a/src/libstdc++-v3/doc/html/manual/make.html (.../tags/gcc_4_8_2_release)
2276
+++ b/src/libstdc++-v3/doc/html/manual/make.html (.../branches/gcc-4_8-branch)
2278
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2279
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
2280
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Make</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="setup.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="using.html" title="Chapter 3. Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
2281
<a class="link" href="http://gcc.gnu.org/install/" target="_top">GCC Installation
2282
Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>.
2283
<span class="emphasis"><em>Twice.</em></span>
2284
Index: libstdc++-v3/doc/html/manual/pairs.html
2285
===================================================================
2286
--- a/src/libstdc++-v3/doc/html/manual/pairs.html (.../tags/gcc_4_8_2_release)
2287
+++ b/src/libstdc++-v3/doc/html/manual/pairs.html (.../branches/gcc-4_8-branch)
2289
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2290
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Pairs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="utilities.html" title="Chapter 6. Utilities" /><link rel="next" href="memory.html" title="Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
2291
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Pairs</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="utilities.html" title="Chapter 6. Utilities" /><link rel="next" href="memory.html" title="Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Chapter 6.
2294
</th><td width="20%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.pairs"></a>Pairs</h2></div></div></div><p>The <code class="code">pair<T1,T2></code> is a simple and handy way to
2295
Index: libstdc++-v3/doc/html/manual/test.html
2296
===================================================================
2297
--- a/src/libstdc++-v3/doc/html/manual/test.html (.../tags/gcc_4_8_2_release)
2298
+++ b/src/libstdc++-v3/doc/html/manual/test.html (.../branches/gcc-4_8-branch)
2300
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2301
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, test, testsuite, performance, conformance, ABI, exception safety" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B.
2302
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Test</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, test, testsuite, performance, conformance, ABI, exception safety" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /><link rel="prev" href="internals.html" title="Porting to New Hardware or Operating Systems" /><link rel="next" href="abi.html" title="ABI Policy and Guidelines" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Test</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Appendix B.
2303
Porting and Maintenance
2305
</th><td width="20%" align="right"> <a accesskey="n" href="abi.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.test"></a>Test</h2></div></div></div><p>
2307
reporting functions including:
2308
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>time_counter</p></li><li class="listitem"><p>resource_counter</p></li><li class="listitem"><p>report_performance</p></li></ul></div></li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="test.special"></a>Special Topics</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="test.exception.safety"></a>
2309
Qualifying Exception Safety Guarantees
2310
- <a id="idp22628992" class="indexterm"></a>
2311
+ <a id="idm269992903504" class="indexterm"></a>
2312
</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.overview"></a>Overview</h5></div></div></div><p>
2313
Testing is composed of running a particular test sequence,
2314
and looking at what happens to the surrounding code when
2315
Index: libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
2316
===================================================================
2317
--- a/src/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html (.../tags/gcc_4_8_2_release)
2318
+++ b/src/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html (.../branches/gcc-4_8-branch)
2320
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2321
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Linking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_namespaces.html" title="Namespaces" /><link rel="next" href="using_concurrency.html" title="Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Linking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.linkage"></a>Linking</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.freestanding"></a>Almost Nothing</h3></div></div></div><p>
2322
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Linking</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_namespaces.html" title="Namespaces" /><link rel="next" href="using_concurrency.html" title="Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Linking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_namespaces.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_concurrency.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.linkage"></a>Linking</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.freestanding"></a>Almost Nothing</h3></div></div></div><p>
2323
Or as close as it gets: freestanding. This is a minimal
2324
configuration, with only partial support for the standard
2325
library. Assume only the following header files can be used:
2326
Index: libstdc++-v3/doc/html/manual/using_headers.html
2327
===================================================================
2328
--- a/src/libstdc++-v3/doc/html/manual/using_headers.html (.../tags/gcc_4_8_2_release)
2329
+++ b/src/libstdc++-v3/doc/html/manual/using_headers.html (.../branches/gcc-4_8-branch)
2331
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2332
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Headers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using.html" title="Chapter 3. Using" /><link rel="next" href="using_macros.html" title="Macros" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.headers"></a>Headers</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"></a>Header Files</h3></div></div></div><p>
2333
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Headers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using.html" title="Chapter 3. Using" /><link rel="next" href="using_macros.html" title="Macros" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_macros.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.headers"></a>Headers</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"></a>Header Files</h3></div></div></div><p>
2334
The C++ standard specifies the entire set of header files that
2335
must be available to all hosted implementations. Actually, the
2336
word "files" is a misnomer, since the contents of the
2338
the 1998 standard as updated for 2003, and the current 2011 standard.
2340
C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
2341
- </p><div class="table"><a id="idp13079360"></a><p class="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13115840"></a><p class="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
2342
+ </p><div class="table"><a id="idm270002453792"></a><p class="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002417312"></a><p class="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
2343
C++11 include files. These are only available in C++11 compilation
2344
mode, i.e. <code class="literal">-std=c++11</code> or <code class="literal">-std=gnu++11</code>.
2345
-</p><p></p><div class="table"><a id="idp13140576"></a><p class="title"><strong>Table 3.4. C++ 2011 Library Headers</strong></p><div class="table-contents"><table summary="C++ 2011 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13192016"></a><p class="title"><strong>Table 3.5. C++ 2011 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 2011 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2346
+</p><p></p><div class="table"><a id="idm270002392576"></a><p class="title"><strong>Table 3.4. C++ 2011 Library Headers</strong></p><div class="table-contents"><table summary="C++ 2011 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002341136"></a><p class="title"><strong>Table 3.5. C++ 2011 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ 2011 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2347
In addition, TR1 includes as:
2348
-</p><div class="table"><a id="idp13221904"></a><p class="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13238832"></a><p class="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
2349
+</p><div class="table"><a id="idm270002311248"></a><p class="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002294320"></a><p class="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
2350
compiler supports scalar decimal floating-point types defined via
2351
<code class="code">__attribute__((mode(SD|DD|LD)))</code>.
2352
-</p><div class="table"><a id="idp13259904"></a><p class="title"><strong>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</strong></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2353
+</p><div class="table"><a id="idm270002273248"></a><p class="title"><strong>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</strong></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2354
Also included are files for the C++ ABI interface:
2355
-</p><div class="table"><a id="idp13265424"></a><p class="title"><strong>Table 3.9. C++ ABI Headers</strong></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2356
+</p><div class="table"><a id="idm270002267728"></a><p class="title"><strong>Table 3.9. C++ ABI Headers</strong></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
2357
And a large variety of extensions.
2358
-</p><div class="table"><a id="idp13271824"></a><p class="title"><strong>Table 3.10. Extension Headers</strong></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13307552"></a><p class="title"><strong>Table 3.11. Extension Debug Headers</strong></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13322320"></a><p class="title"><strong>Table 3.12. Extension Profile Headers</strong></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idp13335696"></a><p class="title"><strong>Table 3.13. Extension Parallel Headers</strong></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
2359
+</p><div class="table"><a id="idm270002261328"></a><p class="title"><strong>Table 3.10. Extension Headers</strong></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002225600"></a><p class="title"><strong>Table 3.11. Extension Debug Headers</strong></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002210832"></a><p class="title"><strong>Table 3.12. Extension Profile Headers</strong></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm270002197456"></a><p class="title"><strong>Table 3.13. Extension Parallel Headers</strong></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
2360
</p><p>First, mixing different dialects of the standard headers is not
2361
possible. It's an all-or-nothing affair. Thus, code like
2362
</p><pre class="programlisting">
2363
Index: libstdc++-v3/doc/html/manual/using_namespaces.html
2364
===================================================================
2365
--- a/src/libstdc++-v3/doc/html/manual/using_namespaces.html (.../tags/gcc_4_8_2_release)
2366
+++ b/src/libstdc++-v3/doc/html/manual/using_namespaces.html (.../branches/gcc-4_8-branch)
2368
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2369
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_macros.html" title="Macros" /><link rel="next" href="using_dynamic_or_shared.html" title="Linking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
2370
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Namespaces</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_macros.html" title="Macros" /><link rel="next" href="using_dynamic_or_shared.html" title="Linking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_macros.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_dynamic_or_shared.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
2371
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>std</p><p>The ISO C++ standards specify that "all library entities are defined
2372
within namespace std." This includes namespaces nested
2373
within <code class="code">namespace std</code>, such as <code class="code">namespace
2374
Index: libstdc++-v3/doc/html/manual/debug.html
2375
===================================================================
2376
--- a/src/libstdc++-v3/doc/html/manual/debug.html (.../tags/gcc_4_8_2_release)
2377
+++ b/src/libstdc++-v3/doc/html/manual/debug.html (.../branches/gcc-4_8-branch)
2379
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2380
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_exceptions.html" title="Exceptions" /><link rel="next" href="std_contents.html" title="Part II. Standard Contents" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="std_contents.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p>
2381
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_exceptions.html" title="Exceptions" /><link rel="next" href="std_contents.html" title="Part II. Standard Contents" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="std_contents.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p>
2382
There are numerous things that can be done to improve the ease with
2383
which C++ binaries are debugged when using the GNU tool chain. Here
2387
<a class="link" href="http://valgrind.org/docs/manual/hg-manual.html" target="_top">
2389
- <a class="link" href="http://code.google.com/p/data-race-test" target="_top">
2390
+ <a class="link" href="http://code.google.com/p/data-race-test/" target="_top">
2391
ThreadSanitizer</a>.
2393
With DRD, Helgrind and ThreadSanitizer you will need to define
2394
Index: libstdc++-v3/doc/html/manual/localization.html
2395
===================================================================
2396
--- a/src/libstdc++-v3/doc/html/manual/localization.html (.../tags/gcc_4_8_2_release)
2397
+++ b/src/libstdc++-v3/doc/html/manual/localization.html (.../branches/gcc-4_8-branch)
2399
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2400
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Localization</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="strings.html" title="Chapter 7. Strings" /><link rel="next" href="facets.html" title="Facets" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8.
2401
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Localization</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="strings.html" title="Chapter 7. Strings" /><link rel="next" href="facets.html" title="Facets" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8.
2404
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part II.
2406
</th><td width="20%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization"></a>Chapter 8.
2408
- <a id="idp15701088" class="indexterm"></a>
2409
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idp15778336">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.locales"></a>Locales</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
2410
+ <a id="idm269999830208" class="indexterm"></a>
2411
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idm269999753024">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.locales"></a>Locales</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
2412
Describes the basic locale object, including nested
2413
classes id, facet, and the reference-counted implementation object,
2415
@@ -402,29 +402,29 @@
2416
What should non-required facet instantiations do? If the
2417
generic implementation is provided, then how to end-users
2418
provide specializations?
2419
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idp15744064"></a><p><span class="citetitle"><em class="citetitle">
2420
+ </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269999787232"></a><p><span class="citetitle"><em class="citetitle">
2422
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">
2423
Chapters 6 Character Set Handling and 7 Locales and
2424
Internationalization
2425
- . </span></p></div><div class="biblioentry"><a id="idp15748832"></a><p><span class="citetitle"><em class="citetitle">
2426
+ . </span></p></div><div class="biblioentry"><a id="idm269999782464"></a><p><span class="citetitle"><em class="citetitle">
2428
- </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idp15751920"></a><p><span class="citetitle"><em class="citetitle">
2429
+ </em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269999779376"></a><p><span class="citetitle"><em class="citetitle">
2430
ISO/IEC 14882:1998 Programming languages - C++
2431
- </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idp15754208"></a><p><span class="citetitle"><em class="citetitle">
2432
+ </em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269999777088"></a><p><span class="citetitle"><em class="citetitle">
2433
ISO/IEC 9899:1999 Programming languages - C
2434
- </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idp15756480"></a><p><span class="title"><em>
2435
+ </em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269999774816"></a><p><span class="title"><em>
2436
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
2437
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
2439
</em>. </span><span class="copyright">Copyright © 2008
2440
The Open Group/The Institute of Electrical and Electronics
2442
- . </span></p></div><div class="biblioentry"><a id="idp15759712"></a><p><span class="citetitle"><em class="citetitle">
2443
+ . </span></p></div><div class="biblioentry"><a id="idm269999771584"></a><p><span class="citetitle"><em class="citetitle">
2444
The C++ Programming Language, Special Edition
2445
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
2447
- . </span></span></p></div><div class="biblioentry"><a id="idp15764336"></a><p><span class="citetitle"><em class="citetitle">
2448
+ . </span></span></p></div><div class="biblioentry"><a id="idm269999766960"></a><p><span class="citetitle"><em class="citetitle">
2449
Standard C++ IOStreams and Locales
2450
</em>. </span><span class="subtitle">
2451
Advanced Programmer's Guide and Reference
2452
Index: libstdc++-v3/doc/html/manual/ext_algorithms.html
2453
===================================================================
2454
--- a/src/libstdc++-v3/doc/html/manual/ext_algorithms.html (.../tags/gcc_4_8_2_release)
2455
+++ b/src/libstdc++-v3/doc/html/manual/ext_algorithms.html (.../branches/gcc-4_8-branch)
2457
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2458
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_utilities.html" title="Chapter 24. Utilities" /><link rel="next" href="ext_numerics.html" title="Chapter 26. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part III.
2459
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Algorithms</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_utilities.html" title="Chapter 24. Utilities" /><link rel="next" href="ext_numerics.html" title="Chapter 26. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part III.
2462
</th><td width="20%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 25. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count
2463
Index: libstdc++-v3/doc/html/manual/debug_mode.html
2464
===================================================================
2465
--- a/src/libstdc++-v3/doc/html/manual/debug_mode.html (.../tags/gcc_4_8_2_release)
2466
+++ b/src/libstdc++-v3/doc/html/manual/debug_mode.html (.../branches/gcc-4_8-branch)
2468
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2469
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Debug Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /><link rel="next" href="debug_mode_semantics.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part III.
2470
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Debug Mode</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, debug" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /><link rel="next" href="debug_mode_semantics.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part III.
2473
-</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_semantics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 17. Debug Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="debug_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
2474
+</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode_semantics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 17. Debug Mode</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="section"><a href="debug_mode_semantics.html">Semantics</a></span></dt><dt><span class="section"><a href="debug_mode_using.html">Using</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="section"><a href="debug_mode_using.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html">Design</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods">Methods</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.wrappers">The Wrapper Model</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_iter">Safe Iterators</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.safe_seq">Safe Sequences (Containers)</a></span></dt></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.precond">Precondition Checking</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.methods.coexistence">Release- and debug-mode coexistence</a></span></dt><dd><dl><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.compile">Compile-time coexistence of release- and debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.link">Link- and run-time coexistence of release- and
2475
debug-mode components</a></span></dt><dt><span class="section"><a href="debug_mode_design.html#methods.coexistence.alt">Alternatives for Coexistence</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug_mode_design.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.intro"></a>Intro</h2></div></div></div><p>
2476
By default, libstdc++ is built with efficiency in mind, and
2477
therefore performs little or no error checking that is not
2478
Index: libstdc++-v3/doc/html/manual/profile_mode_design.html
2479
===================================================================
2480
--- a/src/libstdc++-v3/doc/html/manual/profile_mode_design.html (.../tags/gcc_4_8_2_release)
2481
+++ b/src/libstdc++-v3/doc/html/manual/profile_mode_design.html (.../branches/gcc-4_8-branch)
2483
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2484
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="next" href="profile_mode_api.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_api.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p>
2485
-</p><div class="table"><a id="idp16981200"></a><p class="title"><strong>Table 19.1. Profile Code Location</strong></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
2486
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="next" href="profile_mode_api.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_api.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p>
2487
+</p><div class="table"><a id="idm269998550064"></a><p class="title"><strong>Table 19.1. Profile Code Location</strong></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
2488
only included from <code class="code">impl/profiler.h</code>, which is the only
2489
file included from the public headers.</td></tr></tbody></table></div></div><br class="table-break" /><p>
2490
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"></a>Wrapper Model</h3></div></div></div><p>
2491
Index: libstdc++-v3/doc/html/manual/using_concurrency.html
2492
===================================================================
2493
--- a/src/libstdc++-v3/doc/html/manual/using_concurrency.html (.../tags/gcc_4_8_2_release)
2494
+++ b/src/libstdc++-v3/doc/html/manual/using_concurrency.html (.../branches/gcc-4_8-branch)
2496
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2497
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_dynamic_or_shared.html" title="Linking" /><link rel="next" href="using_exceptions.html" title="Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_dynamic_or_shared.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.concurrency"></a>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation
2498
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concurrency</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_dynamic_or_shared.html" title="Linking" /><link rel="next" href="using_exceptions.html" title="Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_dynamic_or_shared.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.concurrency"></a>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation
2499
of multithreaded applications which use the Standard C++
2500
library. This information is GCC-specific since the C++
2501
standard does not address matters of multithreaded applications.
2502
Index: libstdc++-v3/doc/html/manual/mt_allocator_impl.html
2503
===================================================================
2504
--- a/src/libstdc++-v3/doc/html/manual/mt_allocator_impl.html (.../tags/gcc_4_8_2_release)
2505
+++ b/src/libstdc++-v3/doc/html/manual/mt_allocator_impl.html (.../branches/gcc-4_8-branch)
2507
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2508
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_design.html" title="Design Issues" /><link rel="next" href="mt_allocator_ex_single.html" title="Single Thread Example" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_design.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_ex_single.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.tune"></a>Tunable Parameters</h3></div></div></div><p>Certain allocation parameters can be modified, or tuned. There
2509
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, allocator" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="mt_allocator.html" title="Chapter 20. The mt_allocator" /><link rel="prev" href="mt_allocator_design.html" title="Design Issues" /><link rel="next" href="mt_allocator_ex_single.html" title="Single Thread Example" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="mt_allocator_design.html">Prev</a> </td><th width="60%" align="center">Chapter 20. The mt_allocator</th><td width="20%" align="right"> <a accesskey="n" href="mt_allocator_ex_single.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="allocator.mt.impl"></a>Implementation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.tune"></a>Tunable Parameters</h3></div></div></div><p>Certain allocation parameters can be modified, or tuned. There
2510
exists a nested <code class="code">struct __pool_base::_Tune</code> that contains all
2511
these parameters, which include settings for
2512
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Alignment</p></li><li class="listitem"><p>Maximum bytes before calling <code class="code">::operator new</code> directly</p></li><li class="listitem"><p>Minimum bytes</p></li><li class="listitem"><p>Size of underlying global allocations</p></li><li class="listitem"><p>Maximum number of supported threads</p></li><li class="listitem"><p>Migration of deallocations to the global free list</p></li><li class="listitem"><p>Shunt for global <code class="code">new</code> and <code class="code">delete</code></p></li></ul></div><p>Adjusting parameters for a given instance of an allocator can only
2513
Index: libstdc++-v3/doc/html/manual/appendix_gfdl.html
2514
===================================================================
2515
--- a/src/libstdc++-v3/doc/html/manual/appendix_gfdl.html (.../tags/gcc_4_8_2_release)
2516
+++ b/src/libstdc++-v3/doc/html/manual/appendix_gfdl.html (.../branches/gcc-4_8-branch)
2518
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2519
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">Part IV.
2520
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">Part IV.
2522
</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.gfdl-1.3"></a>GNU Free Documentation License</h1></div></div></div><p>Version 1.3, 3 November 2008</p><p>
2523
Copyright © 2000, 2001, 2002, 2007, 2008
2524
Index: libstdc++-v3/doc/html/manual/containers.html
2525
===================================================================
2526
--- a/src/libstdc++-v3/doc/html/manual/containers.html (.../tags/gcc_4_8_2_release)
2527
+++ b/src/libstdc++-v3/doc/html/manual/containers.html (.../branches/gcc-4_8-branch)
2529
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2530
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="facets.html" title="Facets" /><link rel="next" href="associative.html" title="Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9.
2531
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Containers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="facets.html" title="Facets" /><link rel="next" href="associative.html" title="Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9.
2534
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">Part II.
2536
</th><td width="20%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"></a>Chapter 9.
2538
- <a id="idp16037808" class="indexterm"></a>
2539
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.sequences"></a>Sequences</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"></a>list</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
2540
+ <a id="idm269999493408" class="indexterm"></a>
2541
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.sequences"></a>Sequences</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"></a>list</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
2542
Yes it is, and that's okay. This is a decision that we preserved
2543
when we imported SGI's STL implementation. The following is
2544
quoted from <a class="link" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>:
2545
Index: libstdc++-v3/doc/html/manual/io.html
2546
===================================================================
2547
--- a/src/libstdc++-v3/doc/html/manual/io.html (.../tags/gcc_4_8_2_release)
2548
+++ b/src/libstdc++-v3/doc/html/manual/io.html (.../branches/gcc-4_8-branch)
2550
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2551
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="numerics_and_c.html" title="Interacting with C" /><link rel="next" href="streambufs.html" title="Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13.
2552
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. Input and Output</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="numerics_and_c.html" title="Interacting with C" /><link rel="next" href="streambufs.html" title="Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13.
2555
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><th width="60%" align="center">Part II.
2557
</th><td width="20%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.io"></a>Chapter 13.
2559
- <a id="idp16257600" class="indexterm"></a>
2560
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="section"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="section"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="section"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="section"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="section"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="section"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="section"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="section"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
2561
+ <a id="idm269999273616" class="indexterm"></a>
2562
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="section"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="section"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="section"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="section"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="section"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="section"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="section"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="section"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
2563
only include the headers you really need. Many people simply include
2564
<iostream> when they don't need to -- and that can <span class="emphasis"><em>penalize
2565
your runtime as well.</em></span> Here are some tips on which header to use
2566
Index: libstdc++-v3/doc/html/manual/index.html
2567
===================================================================
2568
--- a/src/libstdc++-v3/doc/html/manual/index.html (.../tags/gcc_4_8_2_release)
2569
+++ b/src/libstdc++-v3/doc/html/manual/index.html (.../branches/gcc-4_8-branch)
2571
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2572
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
2573
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
2574
<a class="link" href="http://www.fsf.org" target="_top">FSF</a>
2575
- </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="part"><a href="intro.html">I.
2576
+ </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I.
2579
</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="section"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="std_contents.html">II.
2581
</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="utilities.html">6.
2584
-</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp13920976">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idp13924528">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp13937824">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15512272">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idp15534784">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idp15542080">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp15556704">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15573056">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idp15576640">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
2585
+</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270001611968">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idm270001608416">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm270001595120">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270000019344">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999996832">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idm269999989536">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999974912">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269999958496">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idm269999954912">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
2588
</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="localization.html">8.
2591
-</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idp15778336">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
2592
+</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idm269999753024">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
2595
</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="iterators.html">10.
2596
@@ -143,19 +143,19 @@
2598
</a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D.
2599
<acronym class="acronym">GNU</acronym> General Public License version 3
2600
- </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>22.1. <a href="policy_data_structures.html#idp17613296">Node Invariants</a></dt><dt>22.2. <a href="policy_data_structures.html#idp17619952">Underlying Associative Data Structures</a></dt><dt>22.3. <a href="policy_data_structures.html#idp17651648">Range Iteration in Different Data Structures</a></dt><dt>22.4. <a href="policy_data_structures.html#idp17666528">Point Iteration in Hash Data Structures</a></dt><dt>22.5. <a href="policy_data_structures.html#idp17675840">Effect of erase in different underlying data structures</a></dt><dt>22.6. <a href="policy_data_structures.html#idp17743424">Underlying Priority Queue Data Structures</a></dt><dt>22.7. <a href="policy_data_structures_using.html#idp17806128">Exception Hierarchy</a></dt><dt>22.8. <a href="policy_data_structures_design.html#idp18000448">Non-unique Mapping Standard Containers</a></dt><dt>22.9. <a href="policy_data_structures_design.html#fig.pbds_embedded_lists_2">
2601
+ </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>22.1. <a href="policy_data_structures.html#idm269997917584">Node Invariants</a></dt><dt>22.2. <a href="policy_data_structures.html#idm269997910864">Underlying Associative Data Structures</a></dt><dt>22.3. <a href="policy_data_structures.html#idm269997879168">Range Iteration in Different Data Structures</a></dt><dt>22.4. <a href="policy_data_structures.html#idm269997864256">Point Iteration in Hash Data Structures</a></dt><dt>22.5. <a href="policy_data_structures.html#idm269997855056">Effect of erase in different underlying data structures</a></dt><dt>22.6. <a href="policy_data_structures.html#idm269997787392">Underlying Priority Queue Data Structures</a></dt><dt>22.7. <a href="policy_data_structures_using.html#idm269997724688">Exception Hierarchy</a></dt><dt>22.8. <a href="policy_data_structures_design.html#idm269997530416">Non-unique Mapping Standard Containers</a></dt><dt>22.9. <a href="policy_data_structures_design.html#fig.pbds_embedded_lists_2">
2602
Effect of embedded lists in
2603
<code class="classname">std::multimap</code>
2604
- </a></dt><dt>22.10. <a href="policy_data_structures_design.html#idp18023952">Non-unique Mapping Containers</a></dt><dt>22.11. <a href="policy_data_structures_design.html#idp18043824">Point Iterator Hierarchy</a></dt><dt>22.12. <a href="policy_data_structures_design.html#idp18057168">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <a href="policy_data_structures_design.html#idp18087392">Container Tag Hierarchy</a></dt><dt>22.14. <a href="policy_data_structures_design.html#idp18127536">Hash functions, ranged-hash functions, and
2605
- range-hashing functions</a></dt><dt>22.15. <a href="policy_data_structures_design.html#idp18191968">Insert hash sequence diagram</a></dt><dt>22.16. <a href="policy_data_structures_design.html#idp18199024">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <a href="policy_data_structures_design.html#idp18215840">Hash policy class diagram</a></dt><dt>22.18. <a href="policy_data_structures_design.html#idp18234944">Balls and bins</a></dt><dt>22.19. <a href="policy_data_structures_design.html#idp18265728">Insert resize sequence diagram</a></dt><dt>22.20. <a href="policy_data_structures_design.html#idp18273504">Standard resize policy trigger sequence
2606
- diagram</a></dt><dt>22.21. <a href="policy_data_structures_design.html#idp18277664">Standard resize policy size sequence
2607
- diagram</a></dt><dt>22.22. <a href="policy_data_structures_design.html#idp18355696">Tree node invariants</a></dt><dt>22.23. <a href="policy_data_structures_design.html#idp18365136">Tree node invalidation</a></dt><dt>22.24. <a href="policy_data_structures_design.html#idp18378304">A tree and its update policy</a></dt><dt>22.25. <a href="policy_data_structures_design.html#idp18389968">Restoring node invariants</a></dt><dt>22.26. <a href="policy_data_structures_design.html#idp18398144">Insert update sequence</a></dt><dt>22.27. <a href="policy_data_structures_design.html#idp18420400">Useless update path</a></dt><dt>22.28. <a href="policy_data_structures_design.html#idp18465088">A PATRICIA trie</a></dt><dt>22.29. <a href="policy_data_structures_design.html#idp18475584">A trie and its update policy</a></dt><dt>22.30. <a href="policy_data_structures_design.html#idp18506160">A simple list</a></dt><dt>22.31. <a href="policy_data_structures_design.html#idp18511744">The counter algorithm</a></dt><dt>22.32. <a href="policy_data_structures_design.html#idp18575568">Underlying Priority-Queue Data-Structures.</a></dt><dt>22.33. <a href="policy_data_structures_design.html#idp18610544">Priority-Queue Data-Structure Tags.</a></dt><dt>B.1. <a href="appendix_porting.html#idp22035648">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="status.html#idp452240">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#idp8670848">C++ 2011 Implementation Status</a></dt><dt>1.3. <a href="status.html#idp7483200">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#idp12559072">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#idp13051936">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#idp13079360">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#idp13115840">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#idp13140576">C++ 2011 Library Headers</a></dt><dt>3.5. <a href="using_headers.html#idp13192016">C++ 2011 Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#idp13221904">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#idp13238832">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#idp13259904">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#idp13265424">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#idp13271824">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#idp13307552">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#idp13322320">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#idp13335696">Extension Parallel Headers</a></dt><dt>17.1. <a href="debug_mode_using.html#idp16490400">Debugging Containers</a></dt><dt>17.2. <a href="debug_mode_using.html#idp16535296">Debugging Containers C++11</a></dt><dt>18.1. <a href="parallel_mode_using.html#idp16725920">Parallel Algorithms</a></dt><dt>19.1. <a href="profile_mode_design.html#idp16981200">Profile Code Location</a></dt><dt>19.2. <a href="profile_mode_diagnostics.html#idp17088912">Profile Diagnostics</a></dt><dt>21.1. <a href="bitmap_allocator_impl.html#idp17500848">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#idp22162432">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#idp22238096">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#idp22257536">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#idp22335040">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#idp22359184">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#idp23030528">Extension Allocators</a></dt><dt>B.7. <a href="api.html#idp23058160">Extension Allocators Continued</a></dt></dl></div><div class="list-of-equations"><p><strong>List of Equations</strong></p><dl><dt>22.1. <a href="policy_data_structures_design.html#idp18141344">Ranged Hash Function</a></dt><dt>22.2. <a href="policy_data_structures_design.html#idp18147232">Range-Hashing, Division Method</a></dt><dt>22.3. <a href="policy_data_structures_design.html#idp18151744">Division via Prime Modulo</a></dt><dt>22.4. <a href="policy_data_structures_design.html#idp18153568">Division via Bit Mask</a></dt><dt>22.5. <a href="policy_data_structures_design.html#idp18163200">
2608
+ </a></dt><dt>22.10. <a href="policy_data_structures_design.html#idm269997506912">Non-unique Mapping Containers</a></dt><dt>22.11. <a href="policy_data_structures_design.html#idm269997487104">Point Iterator Hierarchy</a></dt><dt>22.12. <a href="policy_data_structures_design.html#idm269997473760">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <a href="policy_data_structures_design.html#idm269997443664">Container Tag Hierarchy</a></dt><dt>22.14. <a href="policy_data_structures_design.html#idm269997403584">Hash functions, ranged-hash functions, and
2609
+ range-hashing functions</a></dt><dt>22.15. <a href="policy_data_structures_design.html#idm269997339216">Insert hash sequence diagram</a></dt><dt>22.16. <a href="policy_data_structures_design.html#idm269997332160">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <a href="policy_data_structures_design.html#idm269997315408">Hash policy class diagram</a></dt><dt>22.18. <a href="policy_data_structures_design.html#idm269997296368">Balls and bins</a></dt><dt>22.19. <a href="policy_data_structures_design.html#idm269997265648">Insert resize sequence diagram</a></dt><dt>22.20. <a href="policy_data_structures_design.html#idm269997257872">Standard resize policy trigger sequence
2610
+ diagram</a></dt><dt>22.21. <a href="policy_data_structures_design.html#idm269997253712">Standard resize policy size sequence
2611
+ diagram</a></dt><dt>22.22. <a href="policy_data_structures_design.html#idm269997175616">Tree node invariants</a></dt><dt>22.23. <a href="policy_data_structures_design.html#idm269997166176">Tree node invalidation</a></dt><dt>22.24. <a href="policy_data_structures_design.html#idm269997153072">A tree and its update policy</a></dt><dt>22.25. <a href="policy_data_structures_design.html#idm269997141408">Restoring node invariants</a></dt><dt>22.26. <a href="policy_data_structures_design.html#idm269997133232">Insert update sequence</a></dt><dt>22.27. <a href="policy_data_structures_design.html#idm269997110976">Useless update path</a></dt><dt>22.28. <a href="policy_data_structures_design.html#idm269997066288">A PATRICIA trie</a></dt><dt>22.29. <a href="policy_data_structures_design.html#idm269997055856">A trie and its update policy</a></dt><dt>22.30. <a href="policy_data_structures_design.html#idm269997025344">A simple list</a></dt><dt>22.31. <a href="policy_data_structures_design.html#idm269997019760">The counter algorithm</a></dt><dt>22.32. <a href="policy_data_structures_design.html#idm269996955920">Underlying Priority-Queue Data-Structures.</a></dt><dt>22.33. <a href="policy_data_structures_design.html#idm269996920880">Priority-Queue Data-Structure Tags.</a></dt><dt>B.1. <a href="appendix_porting.html#idm269993497120">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="status.html#idm270008034928">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#idm270007982624">C++ 2011 Implementation Status</a></dt><dt>1.3. <a href="status.html#idm270006687472">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#idm270002960368">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#idm270002481088">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#idm270002453792">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#idm270002417312">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#idm270002392576">C++ 2011 Library Headers</a></dt><dt>3.5. <a href="using_headers.html#idm270002341136">C++ 2011 Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#idm270002311248">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#idm270002294320">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#idm270002273248">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#idm270002267728">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#idm270002261328">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#idm270002225600">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#idm270002210832">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#idm270002197456">Extension Parallel Headers</a></dt><dt>17.1. <a href="debug_mode_using.html#idm269999040896">Debugging Containers</a></dt><dt>17.2. <a href="debug_mode_using.html#idm269998996000">Debugging Containers C++11</a></dt><dt>18.1. <a href="parallel_mode_using.html#idm269998805216">Parallel Algorithms</a></dt><dt>19.1. <a href="profile_mode_design.html#idm269998550064">Profile Code Location</a></dt><dt>19.2. <a href="profile_mode_diagnostics.html#idm269998442544">Profile Diagnostics</a></dt><dt>21.1. <a href="bitmap_allocator_impl.html#idm269998030352">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#idm269993370272">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#idm269993294592">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#idm269993275152">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#idm269993197520">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#idm269993173376">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#idm269992502096">Extension Allocators</a></dt><dt>B.7. <a href="api.html#idm269992474464">Extension Allocators Continued</a></dt></dl></div><div class="list-of-equations"><p><strong>List of Equations</strong></p><dl><dt>22.1. <a href="policy_data_structures_design.html#idm269997389776">Ranged Hash Function</a></dt><dt>22.2. <a href="policy_data_structures_design.html#idm269997383888">Range-Hashing, Division Method</a></dt><dt>22.3. <a href="policy_data_structures_design.html#idm269997379376">Division via Prime Modulo</a></dt><dt>22.4. <a href="policy_data_structures_design.html#idm269997377552">Division via Bit Mask</a></dt><dt>22.5. <a href="policy_data_structures_design.html#idm269997367984">
2612
A Standard String Hash Function
2613
- </a></dt><dt>22.6. <a href="policy_data_structures_design.html#idp18169344">
2614
+ </a></dt><dt>22.6. <a href="policy_data_structures_design.html#idm269997361840">
2615
Only k String DNA Hash
2616
- </a></dt><dt>22.7. <a href="policy_data_structures_design.html#idp18240448">
2617
+ </a></dt><dt>22.7. <a href="policy_data_structures_design.html#idm269997290864">
2618
Probability of Probe Sequence of Length k
2619
- </a></dt><dt>22.8. <a href="policy_data_structures_design.html#idp18247216">
2620
+ </a></dt><dt>22.8. <a href="policy_data_structures_design.html#idm269997284096">
2621
Probability Probe Sequence in Some Bin
2622
</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Part I.
2624
Index: libstdc++-v3/doc/html/manual/numerics_and_c.html
2625
===================================================================
2626
--- a/src/libstdc++-v3/doc/html/manual/numerics_and_c.html (.../tags/gcc_4_8_2_release)
2627
+++ b/src/libstdc++-v3/doc/html/manual/numerics_and_c.html (.../branches/gcc-4_8-branch)
2629
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2630
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="generalized_numeric_operations.html" title="Generalized Operations" /><link rel="next" href="io.html" title="Chapter 13. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Chapter 12.
2631
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="generalized_numeric_operations.html" title="Generalized Operations" /><link rel="next" href="io.html" title="Chapter 13. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Chapter 12.
2634
</th><td width="20%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.c"></a>Interacting with C</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.c.array"></a>Numerics vs. Arrays</h3></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well
2635
Index: libstdc++-v3/doc/html/manual/appendix_gpl.html
2636
===================================================================
2637
--- a/src/libstdc++-v3/doc/html/manual/appendix_gpl.html (.../tags/gcc_4_8_2_release)
2638
+++ b/src/libstdc++-v3/doc/html/manual/appendix_gpl.html (.../branches/gcc-4_8-branch)
2640
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2641
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D.
2642
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D.
2643
<acronym class="acronym">GNU</acronym> General Public License version 3
2644
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">Part IV.
2648
The precise terms and conditions for copying, distribution and modification
2650
- </p><h2><a id="idp23466384"></a>
2651
+ </p><h2><a id="idm269992066368"></a>
2652
TERMS AND CONDITIONS
2653
</h2><h2><a id="gpl-3-definitions"></a>
2656
waiver of all civil liability in connection with the Program, unless a
2657
warranty or assumption of liability accompanies a copy of the Program in
2659
- </p><h2><a id="idp23565184"></a>
2660
+ </p><h2><a id="idm269991967568"></a>
2661
END OF TERMS AND CONDITIONS
2662
</h2><h2><a id="HowToApply"></a>
2663
How to Apply These Terms to Your New Programs
2664
Index: libstdc++-v3/doc/html/manual/source_code_style.html
2665
===================================================================
2666
--- a/src/libstdc++-v3/doc/html/manual/source_code_style.html (.../tags/gcc_4_8_2_release)
2667
+++ b/src/libstdc++-v3/doc/html/manual/source_code_style.html (.../branches/gcc-4_8-branch)
2669
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2670
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Coding Style</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="source_organization.html" title="Directory Layout and Source Conventions" /><link rel="next" href="source_design_notes.html" title="Design Notes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><th width="60%" align="center">Appendix A.
2671
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Coding Style</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="source_organization.html" title="Directory Layout and Source Conventions" /><link rel="next" href="source_design_notes.html" title="Design Notes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><th width="60%" align="center">Appendix A.
2674
</th><td width="20%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.coding_style"></a>Coding Style</h2></div></div></div><p>
2675
Index: libstdc++-v3/doc/html/manual/streambufs.html
2676
===================================================================
2677
--- a/src/libstdc++-v3/doc/html/manual/streambufs.html (.../tags/gcc_4_8_2_release)
2678
+++ b/src/libstdc++-v3/doc/html/manual/streambufs.html (.../branches/gcc-4_8-branch)
2680
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2681
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Stream Buffers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="io.html" title="Chapter 13. Input and Output" /><link rel="next" href="stringstreams.html" title="Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
2682
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Stream Buffers</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="io.html" title="Chapter 13. Input and Output" /><link rel="next" href="stringstreams.html" title="Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Chapter 13.
2685
</th><td width="20%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.streambufs"></a>Stream Buffers</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h3></div></div></div><p>
2686
Index: libstdc++-v3/doc/html/manual/utilities.html
2687
===================================================================
2688
--- a/src/libstdc++-v3/doc/html/manual/utilities.html (.../tags/gcc_4_8_2_release)
2689
+++ b/src/libstdc++-v3/doc/html/manual/utilities.html (.../branches/gcc-4_8-branch)
2691
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2692
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.77.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="concept_checking.html" title="Concept Checking" /><link rel="next" href="pairs.html" title="Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6.
2693
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Utilities</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="std_contents.html" title="Part II. Standard Contents" /><link rel="prev" href="concept_checking.html" title="Concept Checking" /><link rel="next" href="pairs.html" title="Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6.
2696
</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="concept_checking.html">Prev</a> </td><th width="60%" align="center">Part II.
2698
</th><td width="20%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.util"></a>Chapter 6.
2700
- <a id="idp13862416" class="indexterm"></a>
2701
-</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp13920976">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idp13924528">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp13937824">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15512272">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idp15534784">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idp15542080">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idp15556704">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idp15573056">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idp15576640">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
2702
+ <a id="idm270001670464" class="indexterm"></a>
2703
+</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270001611968">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idm270001608416">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm270001595120">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm270000019344">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999996832">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idm269999989536">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269999974912">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269999958496">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idm269999954912">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
2704
get slightly the wrong idea. In the interest of not reinventing
2705
the wheel, we will refer you to the introduction to the functor
2706
concept written by SGI as part of their STL, in
2707
Index: libstdc++-v3/include/debug/functions.h
2708
===================================================================
2709
--- a/src/libstdc++-v3/include/debug/functions.h (.../tags/gcc_4_8_2_release)
2710
+++ b/src/libstdc++-v3/include/debug/functions.h (.../branches/gcc-4_8-branch)
2711
@@ -345,11 +345,13 @@
2712
return __check_sorted_set_aux(__first, __last, __pred, _SameType());
2715
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
2716
+ // 270. Binary search requirements overly strict
2717
+ // Determine if a sequence is partitioned w.r.t. this element.
2718
template<typename _ForwardIterator, typename _Tp>
2720
- __check_partitioned_lower_aux(_ForwardIterator __first,
2721
- _ForwardIterator __last, const _Tp& __value,
2722
- std::forward_iterator_tag)
2723
+ __check_partitioned_lower(_ForwardIterator __first,
2724
+ _ForwardIterator __last, const _Tp& __value)
2726
while (__first != __last && *__first < __value)
2728
@@ -362,38 +364,11 @@
2729
return __first == __last;
2732
- // For performance reason, as the iterator range has been validated, check on
2733
- // random access safe iterators is done using the base iterator.
2734
- template<typename _Iterator, typename _Sequence, typename _Tp>
2736
- __check_partitioned_lower_aux(
2737
- const _Safe_iterator<_Iterator, _Sequence>& __first,
2738
- const _Safe_iterator<_Iterator, _Sequence>& __last,
2739
- const _Tp& __value,
2740
- std::random_access_iterator_tag __tag)
2742
- return __check_partitioned_lower_aux(__first.base(), __last.base(),
2746
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
2747
- // 270. Binary search requirements overly strict
2748
- // Determine if a sequence is partitioned w.r.t. this element.
2749
template<typename _ForwardIterator, typename _Tp>
2751
- __check_partitioned_lower(_ForwardIterator __first,
2752
+ __check_partitioned_upper(_ForwardIterator __first,
2753
_ForwardIterator __last, const _Tp& __value)
2755
- return __check_partitioned_lower_aux(__first, __last, __value,
2756
- std::__iterator_category(__first));
2759
- template<typename _ForwardIterator, typename _Tp>
2761
- __check_partitioned_upper_aux(_ForwardIterator __first,
2762
- _ForwardIterator __last, const _Tp& __value,
2763
- std::forward_iterator_tag)
2765
while (__first != __last && !(__value < *__first))
2767
if (__first != __last)
2768
@@ -405,35 +380,12 @@
2769
return __first == __last;
2772
- // For performance reason, as the iterator range has been validated, check on
2773
- // random access safe iterators is done using the base iterator.
2774
- template<typename _Iterator, typename _Sequence, typename _Tp>
2776
- __check_partitioned_upper_aux(
2777
- const _Safe_iterator<_Iterator, _Sequence>& __first,
2778
- const _Safe_iterator<_Iterator, _Sequence>& __last,
2779
- const _Tp& __value,
2780
- std::random_access_iterator_tag __tag)
2782
- return __check_partitioned_upper_aux(__first.base(), __last.base(),
2786
- template<typename _ForwardIterator, typename _Tp>
2788
- __check_partitioned_upper(_ForwardIterator __first,
2789
- _ForwardIterator __last, const _Tp& __value)
2791
- return __check_partitioned_upper_aux(__first, __last, __value,
2792
- std::__iterator_category(__first));
2795
+ // Determine if a sequence is partitioned w.r.t. this element.
2796
template<typename _ForwardIterator, typename _Tp, typename _Pred>
2798
- __check_partitioned_lower_aux(_ForwardIterator __first,
2799
- _ForwardIterator __last, const _Tp& __value,
2801
- std::forward_iterator_tag)
2802
+ __check_partitioned_lower(_ForwardIterator __first,
2803
+ _ForwardIterator __last, const _Tp& __value,
2806
while (__first != __last && bool(__pred(*__first, __value)))
2808
@@ -446,39 +398,12 @@
2809
return __first == __last;
2812
- // For performance reason, as the iterator range has been validated, check on
2813
- // random access safe iterators is done using the base iterator.
2814
- template<typename _Iterator, typename _Sequence,
2815
- typename _Tp, typename _Pred>
2817
- __check_partitioned_lower_aux(
2818
- const _Safe_iterator<_Iterator, _Sequence>& __first,
2819
- const _Safe_iterator<_Iterator, _Sequence>& __last,
2820
- const _Tp& __value, _Pred __pred,
2821
- std::random_access_iterator_tag __tag)
2823
- return __check_partitioned_lower_aux(__first.base(), __last.base(),
2824
- __value, __pred, __tag);
2827
- // Determine if a sequence is partitioned w.r.t. this element.
2828
template<typename _ForwardIterator, typename _Tp, typename _Pred>
2830
- __check_partitioned_lower(_ForwardIterator __first,
2831
+ __check_partitioned_upper(_ForwardIterator __first,
2832
_ForwardIterator __last, const _Tp& __value,
2835
- return __check_partitioned_lower_aux(__first, __last, __value, __pred,
2836
- std::__iterator_category(__first));
2839
- template<typename _ForwardIterator, typename _Tp, typename _Pred>
2841
- __check_partitioned_upper_aux(_ForwardIterator __first,
2842
- _ForwardIterator __last, const _Tp& __value,
2844
- std::forward_iterator_tag)
2846
while (__first != __last && !bool(__pred(__value, *__first)))
2848
if (__first != __last)
2849
@@ -490,31 +415,6 @@
2850
return __first == __last;
2853
- // For performance reason, as the iterator range has been validated, check on
2854
- // random access safe iterators is done using the base iterator.
2855
- template<typename _Iterator, typename _Sequence,
2856
- typename _Tp, typename _Pred>
2858
- __check_partitioned_upper_aux(
2859
- const _Safe_iterator<_Iterator, _Sequence>& __first,
2860
- const _Safe_iterator<_Iterator, _Sequence>& __last,
2861
- const _Tp& __value, _Pred __pred,
2862
- std::random_access_iterator_tag __tag)
2864
- return __check_partitioned_upper_aux(__first.base(), __last.base(),
2865
- __value, __pred, __tag);
2868
- template<typename _ForwardIterator, typename _Tp, typename _Pred>
2870
- __check_partitioned_upper(_ForwardIterator __first,
2871
- _ForwardIterator __last, const _Tp& __value,
2874
- return __check_partitioned_upper_aux(__first, __last, __value, __pred,
2875
- std::__iterator_category(__first));
2878
// Helper struct to detect random access safe iterators.
2879
template<typename _Iterator>
2880
struct __is_safe_random_iterator
2881
Index: libstdc++-v3/include/debug/macros.h
2882
===================================================================
2883
--- a/src/libstdc++-v3/include/debug/macros.h (.../tags/gcc_4_8_2_release)
2884
+++ b/src/libstdc++-v3/include/debug/macros.h (.../branches/gcc-4_8-branch)
2886
w.r.t. the value _Value. */
2887
#define __glibcxx_check_partitioned_lower(_First,_Last,_Value) \
2888
__glibcxx_check_valid_range(_First,_Last); \
2889
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
2891
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \
2892
+ __gnu_debug::__base(_First), \
2893
+ __gnu_debug::__base(_Last), _Value), \
2894
_M_message(__gnu_debug::__msg_unpartitioned) \
2895
._M_iterator(_First, #_First) \
2896
._M_iterator(_Last, #_Last) \
2899
#define __glibcxx_check_partitioned_upper(_First,_Last,_Value) \
2900
__glibcxx_check_valid_range(_First,_Last); \
2901
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
2903
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \
2904
+ __gnu_debug::__base(_First), \
2905
+ __gnu_debug::__base(_Last), _Value), \
2906
_M_message(__gnu_debug::__msg_unpartitioned) \
2907
._M_iterator(_First, #_First) \
2908
._M_iterator(_Last, #_Last) \
2910
w.r.t. the value _Value and predicate _Pred. */
2911
#define __glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) \
2912
__glibcxx_check_valid_range(_First,_Last); \
2913
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower(_First, _Last, \
2915
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_lower( \
2916
+ __gnu_debug::__base(_First), \
2917
+ __gnu_debug::__base(_Last), _Value, _Pred), \
2918
_M_message(__gnu_debug::__msg_unpartitioned_pred) \
2919
._M_iterator(_First, #_First) \
2920
._M_iterator(_Last, #_Last) \
2922
w.r.t. the value _Value and predicate _Pred. */
2923
#define __glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) \
2924
__glibcxx_check_valid_range(_First,_Last); \
2925
-_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper(_First, _Last, \
2927
+_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__check_partitioned_upper( \
2928
+ __gnu_debug::__base(_First), \
2929
+ __gnu_debug::__base(_Last), _Value, _Pred), \
2930
_M_message(__gnu_debug::__msg_unpartitioned_pred) \
2931
._M_iterator(_First, #_First) \
2932
._M_iterator(_Last, #_Last) \
2933
Index: libstdc++-v3/include/bits/stl_algo.h
2934
===================================================================
2935
--- a/src/libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_4_8_2_release)
2936
+++ b/src/libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-4_8-branch)
2937
@@ -2279,7 +2279,7 @@
2938
_RandomAccessIterator __last)
2940
_RandomAccessIterator __mid = __first + (__last - __first) / 2;
2941
- std::__move_median_to_first(__first, __first + 1, __mid, (__last - 2));
2942
+ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1);
2943
return std::__unguarded_partition(__first + 1, __last, *__first);
2946
@@ -2291,7 +2291,7 @@
2947
_RandomAccessIterator __last, _Compare __comp)
2949
_RandomAccessIterator __mid = __first + (__last - __first) / 2;
2950
- std::__move_median_to_first(__first, __first + 1, __mid, (__last - 2),
2951
+ std::__move_median_to_first(__first, __first + 1, __mid, __last - 1,
2953
return std::__unguarded_partition(__first + 1, __last, *__first, __comp);
2955
Index: libstdc++-v3/include/bits/shared_ptr_base.h
2956
===================================================================
2957
--- a/src/libstdc++-v3/include/bits/shared_ptr_base.h (.../tags/gcc_4_8_2_release)
2958
+++ b/src/libstdc++-v3/include/bits/shared_ptr_base.h (.../branches/gcc-4_8-branch)
2961
template<typename... _Args>
2962
_Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
2963
- : _M_impl(__a), _M_storage()
2966
_M_impl._M_ptr = static_cast<_Tp*>(static_cast<void*>(&_M_storage));
2967
// _GLIBCXX_RESOLVE_LIB_DEFECTS
2969
: _M_ptr(__r.get()), _M_refcount()
2971
__glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
2972
- auto __tmp = std::__addressof(*__r.get());
2973
+ auto __tmp = __r.get();
2974
_M_refcount = __shared_count<_Lp>(std::move(__r));
2975
__enable_shared_from_this_helper(_M_refcount, __tmp, __tmp);
2977
Index: libstdc++-v3/include/c_global/cstdio
2978
===================================================================
2979
--- a/src/libstdc++-v3/include/c_global/cstdio (.../tags/gcc_4_8_2_release)
2980
+++ b/src/libstdc++-v3/include/c_global/cstdio (.../branches/gcc-4_8-branch)
2989
Index: libstdc++-v3/ChangeLog
2990
===================================================================
2991
--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_8_2_release)
2992
+++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_8-branch)
2994
+2013-12-15 H.J. Lu <hongjiu.lu@intel.com>
2996
+ * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Update.
2998
+2013-11-22 Jonathan Wakely <jwakely.gcc@gmail.com>
3000
+ * acinclude.m4 (libtool_VERSION): Bump.
3001
+ * configure: Regenerate.
3002
+ * doc/xml/manual/abi.xml: Update version information.
3004
+2013-11-05 Jonathan Wakely <jwakely.gcc@gmail.com>
3006
+ * doc/xml/manual/status_cxx2011.xml: Document aligned_union as
3009
+ * doc/xml/manual/spine.xml: Update copyright years.
3010
+ * doc/html/*: Regenerate.
3012
+2013-11-01 Paolo Carlini <paolo.carlini@oracle.com>
3014
+ PR libstdc++/58952
3015
+ * include/c_global/cstdio: Undef getchar.
3017
+2013-10-31 Jonathan Wakely <jwakely.gcc@gmail.com>
3019
+ * testsuite/20_util/shared_ptr/cons/58839.cc: Do not use
3020
+ default_delete<void>.
3022
+2013-10-30 Chris Studholme <cvs@cs.utoronto.ca>
3024
+ PR libstdc++/58912
3025
+ * include/bits/shared_ptr_base.h (_Sp_counted_ptr_inplace): Remove
3026
+ unnecessary initialization of storage buffer.
3028
+2013-10-29 Jonathan Wakely <jwakely.gcc@gmail.com>
3030
+ PR libstdc++/58839
3031
+ * include/bits/shared_ptr_base.h
3032
+ (__shared_ptr<T>::__shared_ptr(unique_ptr<U,D>&&)): Do not dereference
3034
+ * testsuite/20_util/shared_ptr/cons/58839.cc: New.
3036
+2013-10-20 Chris Jefferson <chris@bubblescope.net>
3037
+ Paolo Carlini <paolo.carlini@oracle.com>
3039
+ PR libstdc++/58800
3040
+ * include/bits/stl_algo.h (__unguarded_partition_pivot): Change
3041
+ __last - 2 to __last - 1.
3042
+ * testsuite/25_algorithms/nth_element/58800.cc: New
3044
+2013-10-16 François Dumont <fdumont@gcc.gnu.org>
3046
+ PR libstdc++/58191
3047
+ * include/debug/macros.h (__glibcxx_check_partitioned_lower): Add
3048
+ __gnu_debug::__base calls on iterators passed to internal debug
3050
+ (__glibcxx_check_partitioned_lower_pred): Likewise.
3051
+ (__glibcxx_check_partitioned_upper): Likewise.
3052
+ (__glibcxx_check_partitioned_upper_pred): Likewise.
3053
+ * include/debug/functions.h (__check_partitioned_lower):
3054
+ Remove code to detect safe iterators.
3055
+ (__check_partitioned_upper): Likewise.
3057
2013-10-16 Release Manager
3059
* GCC 4.8.2 released.
3060
Index: libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
3061
===================================================================
3062
--- a/src/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (.../tags/gcc_4_8_2_release)
3063
+++ b/src/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc (.../branches/gcc-4_8-branch)
3065
+// Copyright (C) 2013 Free Software Foundation, Inc.
3067
+// This file is part of the GNU ISO C++ Library. This library is free
3068
+// software; you can redistribute it and/or modify it under the
3069
+// terms of the GNU General Public License as published by the
3070
+// Free Software Foundation; either version 3, or (at your option)
3071
+// any later version.
3073
+// This library is distributed in the hope that it will be useful,
3074
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
3075
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3076
+// GNU General Public License for more details.
3078
+// You should have received a copy of the GNU General Public License along
3079
+// with this library; see the file COPYING3. If not see
3080
+// <http://www.gnu.org/licenses/>.
3082
+// 25.3.2 [lib.alg.nth.element]
3084
+// { dg-options "-std=gnu++11" }
3086
+#include <algorithm>
3087
+#include <testsuite_hooks.h>
3088
+#include <testsuite_iterators.h>
3090
+using __gnu_test::test_container;
3091
+using __gnu_test::random_access_iterator_wrapper;
3093
+typedef test_container<int, random_access_iterator_wrapper> Container;
3097
+ std::vector<int> v = {
3107
+ Container con(v.data(), v.data() + 7);
3109
+ std::nth_element(con.begin(), con.begin() + 3, con.end());
3117
Index: libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
3118
===================================================================
3119
--- a/src/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc (.../tags/gcc_4_8_2_release)
3120
+++ b/src/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc (.../branches/gcc-4_8-branch)
3122
+// { dg-options "-std=gnu++11" }
3123
+// { dg-do compile }
3125
+// Copyright (C) 2013 Free Software Foundation, Inc.
3127
+// This file is part of the GNU ISO C++ Library. This library is free
3128
+// software; you can redistribute it and/or modify it under the
3129
+// terms of the GNU General Public License as published by the
3130
+// Free Software Foundation; either version 3, or (at your option)
3131
+// any later version.
3133
+// This library is distributed in the hope that it will be useful,
3134
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
3135
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3136
+// GNU General Public License for more details.
3138
+// You should have received a copy of the GNU General Public License along
3139
+// with this library; see the file COPYING3. If not see
3140
+// <http://www.gnu.org/licenses/>.
3147
+ void operator()(void*) const noexcept { }
3152
+ std::unique_ptr<void, D> y;
3153
+ std::shared_ptr<void> x = std::move(y);
3155
Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
3156
===================================================================
3157
--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt (.../tags/gcc_4_8_2_release)
3158
+++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt (.../branches/gcc-4_8-branch)
3160
FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
3161
FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
3162
FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
3163
+FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
3164
FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
3165
FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
3166
FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
3168
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
3169
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
3170
FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
3171
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@@GLIBCXX_3.4.18
3172
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@@GLIBCXX_3.4.18
3173
FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
3174
FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
3175
FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
3176
@@ -1207,6 +1210,7 @@
3177
FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
3178
FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
3179
FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
3180
+FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@@GLIBCXX_3.4.18
3181
FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
3182
FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
3183
FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
3184
@@ -1485,6 +1489,11 @@
3185
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
3186
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
3187
FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
3188
+FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18
3189
+FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18
3190
+FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18
3191
+FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
3192
+FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
3193
FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
3194
FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
3195
FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
3196
@@ -1929,6 +1938,8 @@
3197
FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
3198
FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
3199
FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
3200
+FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
3201
+FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
3202
FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
3203
FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4
3204
FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
3205
@@ -2467,6 +2478,7 @@
3206
FUNC:__cxa_guard_release@@CXXABI_1.3
3207
FUNC:__cxa_pure_virtual@@CXXABI_1.3
3208
FUNC:__cxa_rethrow@@CXXABI_1.3
3209
+FUNC:__cxa_thread_atexit@@CXXABI_1.3.7
3210
FUNC:__cxa_throw@@CXXABI_1.3
3211
FUNC:__cxa_tm_cleanup@@CXXABI_TM_1
3212
FUNC:__cxa_vec_cctor@@CXXABI_1.3
3213
@@ -2491,6 +2503,7 @@
3214
OBJECT:0:CXXABI_1.3.4
3215
OBJECT:0:CXXABI_1.3.5
3216
OBJECT:0:CXXABI_1.3.6
3217
+OBJECT:0:CXXABI_1.3.7
3218
OBJECT:0:CXXABI_TM_1
3219
OBJECT:0:GLIBCXX_3.4
3220
OBJECT:0:GLIBCXX_3.4.1
3221
@@ -2502,6 +2515,8 @@
3222
OBJECT:0:GLIBCXX_3.4.15
3223
OBJECT:0:GLIBCXX_3.4.16
3224
OBJECT:0:GLIBCXX_3.4.17
3225
+OBJECT:0:GLIBCXX_3.4.18
3226
+OBJECT:0:GLIBCXX_3.4.19
3227
OBJECT:0:GLIBCXX_3.4.2
3228
OBJECT:0:GLIBCXX_3.4.3
3229
OBJECT:0:GLIBCXX_3.4.4
3230
@@ -3033,6 +3048,8 @@
3231
OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
3232
OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
3233
OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
3234
+OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19
3235
+OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19
3236
OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
3237
OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
3238
OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
3239
Index: libstdc++-v3/acinclude.m4
3240
===================================================================
3241
--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_4_8_2_release)
3242
+++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-4_8-branch)
3243
@@ -3266,7 +3266,7 @@
3246
# For libtool versioning info, format is CURRENT:REVISION:AGE
3247
-libtool_VERSION=6:18:0
3248
+libtool_VERSION=6:19:0
3250
# Everything parsed; figure out what files and settings to use.
3251
case $enable_symvers in
3252
Index: boehm-gc/include/private/gcconfig.h
3253
===================================================================
3254
--- a/src/boehm-gc/include/private/gcconfig.h (.../tags/gcc_4_8_2_release)
3255
+++ b/src/boehm-gc/include/private/gcconfig.h (.../branches/gcc-4_8-branch)
3256
@@ -837,7 +837,15 @@
3257
# define NO_PTHREAD_TRYLOCK
3260
+# if defined(__powerpc64__)
3261
+# define ALIGNMENT 8
3262
+# define CPP_WORDSZ 64
3264
+# define HBLKSIZE 4096
3267
# define ALIGNMENT 4
3269
# define OS_TYPE "FREEBSD"
3270
# ifndef GC_FREEBSD_THREADS
3271
# define MPROTECT_VDB
3272
Index: boehm-gc/ChangeLog
3273
===================================================================
3274
--- a/src/boehm-gc/ChangeLog (.../tags/gcc_4_8_2_release)
3275
+++ b/src/boehm-gc/ChangeLog (.../branches/gcc-4_8-branch)
3277
+2013-12-29 Andreas Tobler <andreast@gcc.gnu.org>
3280
+ * include/private/gcconfig.h: Add FreeBSD powerpc64 defines.
3282
2013-10-16 Release Manager
3284
* GCC 4.8.2 released.
3285
Index: contrib/ChangeLog
3286
===================================================================
3287
--- a/src/contrib/ChangeLog (.../tags/gcc_4_8_2_release)
3288
+++ b/src/contrib/ChangeLog (.../branches/gcc-4_8-branch)
3290
+2013-10-21 Mike Stump <mikestump@comcast.net>
3292
+ * gcc_update (configure): Update to handle svn 1.8.1.
3294
2013-10-16 Release Manager
3296
* GCC 4.8.2 released.
3297
Index: contrib/gcc_update
3298
===================================================================
3299
--- a/src/contrib/gcc_update (.../tags/gcc_4_8_2_release)
3300
+++ b/src/contrib/gcc_update (.../branches/gcc-4_8-branch)
3304
revision=`$GCC_SVN info | awk '/Revision:/ { print $2 }'`
3305
- branch=`$GCC_SVN info | sed -ne "/URL:/ {
3306
+ branch=`$GCC_SVN info | sed -ne "/^URL:/ {
3310
Index: libbacktrace/dwarf.c
3311
===================================================================
3312
--- a/src/libbacktrace/dwarf.c (.../tags/gcc_4_8_2_release)
3313
+++ b/src/libbacktrace/dwarf.c (.../branches/gcc-4_8-branch)
3314
@@ -2507,19 +2507,23 @@
3315
if (pfvec->count == 0)
3318
- addrs = (struct function_addrs *) pfvec->vec.base;
3319
addrs_count = pfvec->count;
3323
if (!backtrace_vector_release (state, &lvec.vec, error_callback, data))
3325
+ addrs = (struct function_addrs *) pfvec->vec.base;
3329
/* Finish this list of addresses, but leave the remaining space in
3330
the vector available for the next function unit. */
3331
- backtrace_vector_finish (state, &fvec->vec);
3332
+ addrs = ((struct function_addrs *)
3333
+ backtrace_vector_finish (state, &fvec->vec,
3334
+ error_callback, data));
3335
+ if (addrs == NULL)
3340
Index: libbacktrace/ChangeLog
3341
===================================================================
3342
--- a/src/libbacktrace/ChangeLog (.../tags/gcc_4_8_2_release)
3343
+++ b/src/libbacktrace/ChangeLog (.../branches/gcc-4_8-branch)
3345
+2013-12-05 Ian Lance Taylor <iant@google.com>
3347
+ * alloc.c (backtrace_vector_finish): Add error_callback and data
3348
+ parameters. Call backtrace_vector_release. Return address base.
3349
+ * mmap.c (backtrace_vector_finish): Add error_callback and data
3350
+ parameters. Return address base.
3351
+ * dwarf.c (read_function_info): Get new address base from
3352
+ backtrace_vector_finish.
3353
+ * internal.h (backtrace_vector_finish): Update declaration.
3355
+2013-11-30 Ian Lance Taylor <iant@google.com>
3357
+ Backport from mainline:
3358
+ 2013-10-17 Ian Lance Taylor <iant@google.com>
3360
+ * elf.c (elf_add): Don't get the wrong offsets if a debug section
3363
2013-10-16 Release Manager
3365
* GCC 4.8.2 released.
3366
Index: libbacktrace/elf.c
3367
===================================================================
3368
--- a/src/libbacktrace/elf.c (.../tags/gcc_4_8_2_release)
3369
+++ b/src/libbacktrace/elf.c (.../branches/gcc-4_8-branch)
3374
+ if (sections[i].size == 0)
3376
if (min_offset == 0 || sections[i].offset < min_offset)
3377
min_offset = sections[i].offset;
3378
end = sections[i].offset + sections[i].size;
3379
@@ -751,8 +753,13 @@
3382
for (i = 0; i < (int) DEBUG_MAX; ++i)
3383
- sections[i].data = ((const unsigned char *) debug_view.data
3384
- + (sections[i].offset - min_offset));
3386
+ if (sections[i].size == 0)
3387
+ sections[i].data = NULL;
3389
+ sections[i].data = ((const unsigned char *) debug_view.data
3390
+ + (sections[i].offset - min_offset));
3393
if (!backtrace_dwarf_add (state, base_address,
3394
sections[DEBUG_INFO].data,
3395
Index: libbacktrace/internal.h
3396
===================================================================
3397
--- a/src/libbacktrace/internal.h (.../tags/gcc_4_8_2_release)
3398
+++ b/src/libbacktrace/internal.h (.../branches/gcc-4_8-branch)
3399
@@ -192,13 +192,17 @@
3400
struct backtrace_vector *vec);
3402
/* Finish the current allocation on VEC. Prepare to start a new
3403
- allocation. The finished allocation will never be freed. */
3404
+ allocation. The finished allocation will never be freed. Returns
3405
+ a pointer to the base of the finished entries, or NULL on
3408
-extern void backtrace_vector_finish (struct backtrace_state *state,
3409
- struct backtrace_vector *vec);
3410
+extern void* backtrace_vector_finish (struct backtrace_state *state,
3411
+ struct backtrace_vector *vec,
3412
+ backtrace_error_callback error_callback,
3415
-/* Release any extra space allocated for VEC. Returns 1 on success, 0
3417
+/* Release any extra space allocated for VEC. This may change
3418
+ VEC->base. Returns 1 on success, 0 on failure. */
3420
extern int backtrace_vector_release (struct backtrace_state *state,
3421
struct backtrace_vector *vec,
3422
Index: libbacktrace/alloc.c
3423
===================================================================
3424
--- a/src/libbacktrace/alloc.c (.../tags/gcc_4_8_2_release)
3425
+++ b/src/libbacktrace/alloc.c (.../branches/gcc-4_8-branch)
3426
@@ -113,12 +113,24 @@
3428
/* Finish the current allocation on VEC. */
3431
-backtrace_vector_finish (struct backtrace_state *state ATTRIBUTE_UNUSED,
3432
- struct backtrace_vector *vec)
3434
+backtrace_vector_finish (struct backtrace_state *state,
3435
+ struct backtrace_vector *vec,
3436
+ backtrace_error_callback error_callback,
3439
- vec->base = (char *) vec->base + vec->size;
3442
+ /* With this allocator we call realloc in backtrace_vector_grow,
3443
+ which means we can't easily reuse the memory here. So just
3445
+ if (!backtrace_vector_release (state, vec, error_callback, data))
3454
/* Release any extra space allocated for VEC. */
3455
Index: libbacktrace/mmap.c
3456
===================================================================
3457
--- a/src/libbacktrace/mmap.c (.../tags/gcc_4_8_2_release)
3458
+++ b/src/libbacktrace/mmap.c (.../branches/gcc-4_8-branch)
3459
@@ -230,12 +230,19 @@
3461
/* Finish the current allocation on VEC. */
3464
-backtrace_vector_finish (struct backtrace_state *state ATTRIBUTE_UNUSED,
3465
- struct backtrace_vector *vec)
3467
+backtrace_vector_finish (
3468
+ struct backtrace_state *state ATTRIBUTE_UNUSED,
3469
+ struct backtrace_vector *vec,
3470
+ backtrace_error_callback error_callback ATTRIBUTE_UNUSED,
3471
+ void *data ATTRIBUTE_UNUSED)
3476
vec->base = (char *) vec->base + vec->size;
3481
/* Release any extra space allocated for VEC. */
3482
Index: libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
3483
===================================================================
3484
--- a/src/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c (.../tags/gcc_4_8_2_release)
3485
+++ b/src/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c (.../branches/gcc-4_8-branch)
3487
#include <pango/pango.h>
3488
#include <pango/pangoft2.h>
3489
#include <pango/pangofc-font.h>
3490
-#include <freetype/ftglyph.h>
3491
-#include <freetype/ftoutln.h>
3492
-#include <freetype/fttypes.h>
3493
-#include <freetype/tttables.h>
3494
+#include <ft2build.h>
3495
+#include FT_GLYPH_H
3496
+#include FT_OUTLINE_H
3497
+#include FT_TYPES_H
3498
+#include FT_TRUETYPE_TABLES_H
3499
#include "gdkfont.h"
3500
#include "gtkpeer.h"
3501
#include "gnu_java_awt_peer_gtk_GdkFontPeer.h"
3502
Index: libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
3503
===================================================================
3504
--- a/src/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c (.../tags/gcc_4_8_2_release)
3505
+++ b/src/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c (.../branches/gcc-4_8-branch)
3507
#include <pango/pango.h>
3508
#include <pango/pangoft2.h>
3509
#include <pango/pangofc-font.h>
3510
-#include <freetype/ftglyph.h>
3511
-#include <freetype/ftoutln.h>
3512
+#include <ft2build.h>
3513
+#include FT_GLYPH_H
3514
+#include FT_OUTLINE_H
3516
#include "gdkfont.h"
3517
#include "gnu_java_awt_peer_gtk_FreetypeGlyphVector.h"
3518
Index: libjava/classpath/ChangeLog.gcj
3519
===================================================================
3520
--- a/src/libjava/classpath/ChangeLog.gcj (.../tags/gcc_4_8_2_release)
3521
+++ b/src/libjava/classpath/ChangeLog.gcj (.../branches/gcc-4_8-branch)
3523
+2013-11-29 Matthias Klose <doko@ubuntu.com>
3525
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
3526
+ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c:
3527
+ Fix freetype includes.
3529
2013-03-22 Jakub Jelinek <jakub@redhat.com>
3532
Index: libjava/classpath
3533
===================================================================
3534
--- a/src/libjava/classpath (.../tags/gcc_4_8_2_release)
3535
+++ b/src/libjava/classpath (.../branches/gcc-4_8-branch)
3537
Property changes on: libjava/classpath
3538
___________________________________________________________________
3539
Modified: svn:mergeinfo
3540
Merged /trunk/libjava/classpath:r206395
3541
Index: gnattools/configure
3542
===================================================================
3543
--- a/src/gnattools/configure (.../tags/gcc_4_8_2_release)
3544
+++ b/src/gnattools/configure (.../branches/gcc-4_8-branch)
3545
@@ -2029,66 +2029,59 @@
3546
# Per-target case statement
3547
# -------------------------
3549
- alpha*-dec-vx*) # Unlike all other Vxworks
3551
+ TOOLS_TARGET_PAIRS="\
3552
+ mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
3553
+ indepsw.adb<indepsw-aix.adb"
3556
- | powerpc*-wrs-vxworks \
3557
- | sparc*-wrs-vx* \
3558
- | *86-wrs-vxworks \
3560
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
3562
+ TOOLS_TARGET_PAIRS="\
3563
+ mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
3564
+ indepsw.adb<indepsw-darwin.adb"
3566
- sparc-sun-solaris*)
3567
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3569
+ TOOLS_TARGET_PAIRS="\
3570
+ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3571
+ indepsw.adb<indepsw-gnu.adb"
3573
- *86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
3574
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3577
- | powerpc*-*-linux* \
3578
- | *ia64-*-linux* \
3579
- | alpha*-*-linux* \
3580
- | sparc*-*-linux* \
3581
- | hppa*-*-linux* \
3582
- | *x86_64-*-linux*)
3584
TOOLS_TARGET_PAIRS="\
3585
mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3586
indepsw.adb<indepsw-gnu.adb"
3589
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
3591
+ TOOLS_TARGET_PAIRS="\
3592
+ mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
3593
+ indepsw.adb<indepsw-gnu.adb"
3597
+ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3600
TOOLS_TARGET_PAIRS="\
3601
- mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3602
+ mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
3603
indepsw.adb<indepsw-gnu.adb"
3605
- hppa*-hp-hpux10*) # Unlike hpux11
3609
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
3612
- TOOLS_TARGET_PAIRS="\
3613
- mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
3614
- indepsw.adb<indepsw-aix.adb"
3616
+ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb"
3618
- alpha*-dec-vms* | alpha*-dec-openvms* | alpha*-dec-vms* \
3619
- | alpha*-hp-vms* | alpha*-hp-openvms* | alpha*-hp-vms*)
3620
+ alpha*-*-vms* | alpha*-*-openvms*)
3621
TOOLS_TARGET_PAIRS="\
3622
mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
3623
symbols.adb<symbols-vms.adb \
3624
symbols-processing.adb<symbols-processing-vms-alpha.adb"
3626
EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
3628
- ia64*-dec-vms* | ia64*-dec-openvms* | ia64*-dec-vms* \
3629
- | ia64*-hp-vms* | ia64*-hp-openvms* | ia64*-hp-vms*)
3630
+ ia64-*-vms* | ia64-*-openvms*)
3631
TOOLS_TARGET_PAIRS="\
3632
mlib-tgt-specific.adb<mlib-tgt-specific-vms-ia64.adb \
3633
symbols.adb<symbols-vms.adb \
3634
symbols-processing.adb<symbols-processing-vms-ia64.adb"
3636
EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
3638
*-*-cygwin32* | *-*-mingw32* | *-*-pe)
3639
@@ -2097,14 +2090,6 @@
3640
indepsw.adb<indepsw-mingw.adb"
3641
EXTRA_GNATTOOLS='../../gnatdll$(exeext)'
3644
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
3647
- TOOLS_TARGET_PAIRS="\
3648
- mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
3649
- indepsw.adb<indepsw-gnu.adb"
3653
# From user or toplevel makefile.
3654
Index: gnattools/Makefile.in
3655
===================================================================
3656
--- a/src/gnattools/Makefile.in (.../tags/gcc_4_8_2_release)
3657
+++ b/src/gnattools/Makefile.in (.../branches/gcc-4_8-branch)
3663
+host_alias = @host_alias@
3666
INSTALL_DATA = @INSTALL_DATA@
3668
TOOLS_FLAGS_TO_PASS_RE= \
3669
"CC=../../xgcc -B../../" \
3670
"CFLAGS=$(CFLAGS)" \
3671
+ "LDFLAGS=$(LDFLAGS)" \
3672
"ADAFLAGS=$(ADAFLAGS)" \
3673
"ADA_CFLAGS=$(ADA_CFLAGS)" \
3674
"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
3678
# Variables for gnattools, cross
3679
+ifeq ($(build), $(host))
3680
+ GNATMAKE_FOR_HOST=gnatmake
3681
+ GNATLINK_FOR_HOST=gnatlink
3682
+ GNATBIND_FOR_HOST=gnatbind
3683
+ GNATLS_FOR_HOST=gnatls
3685
+ GNATMAKE_FOR_HOST=$(host_alias)-gnatmake
3686
+ GNATLINK_FOR_HOST=$(host_alias)-gnatlink
3687
+ GNATBIND_FOR_HOST=$(host_alias)-gnatbind
3688
+ GNATLS_FOR_HOST=$(host_alias)-gnatls
3691
+# Put the host RTS dir first in the PATH to hide the default runtime
3692
+# files that are among the sources
3693
+RTS_DIR:=$(strip $(subst \,/,$(shell $(GNATLS_FOR_HOST) -v | grep adalib )))
3695
TOOLS_FLAGS_TO_PASS_CROSS= \
3697
"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
3699
"exeext=$(exeext)" \
3700
"fsrcdir=$(fsrcdir)" \
3701
"srcdir=$(fsrcdir)" \
3702
- "GNATMAKE=gnatmake" \
3703
- "GNATLINK=gnatlink" \
3704
- "GNATBIND=gnatbind" \
3705
+ "GNATMAKE=$(GNATMAKE_FOR_HOST)" \
3706
+ "GNATLINK=$(GNATLINK_FOR_HOST)" \
3707
+ "GNATBIND=$(GNATBIND_FOR_HOST)" \
3711
@@ -179,11 +198,6 @@
3712
$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
3713
$(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
3715
-# For cross builds of gnattools,
3716
-# put the host RTS dir first in the PATH to hide the default runtime
3717
-# files that are among the sources
3718
-# FIXME: This should be done in configure.
3719
-RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
3720
gnattools-cross: $(GCC_DIR)/stamp-tools
3722
$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
3723
Index: gnattools/configure.ac
3724
===================================================================
3725
--- a/src/gnattools/configure.ac (.../tags/gcc_4_8_2_release)
3726
+++ b/src/gnattools/configure.ac (.../branches/gcc-4_8-branch)
3728
# Per-target case statement
3729
# -------------------------
3731
- alpha*-dec-vx*) # Unlike all other Vxworks
3733
+ TOOLS_TARGET_PAIRS="\
3734
+ mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
3735
+ indepsw.adb<indepsw-aix.adb"
3738
- | powerpc*-wrs-vxworks \
3739
- | sparc*-wrs-vx* \
3740
- | *86-wrs-vxworks \
3742
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
3744
+ TOOLS_TARGET_PAIRS="\
3745
+ mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
3746
+ indepsw.adb<indepsw-darwin.adb"
3748
- sparc-sun-solaris*)
3749
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3751
+ TOOLS_TARGET_PAIRS="\
3752
+ mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3753
+ indepsw.adb<indepsw-gnu.adb"
3755
- *86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
3756
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3759
- | powerpc*-*-linux* \
3760
- | *ia64-*-linux* \
3761
- | alpha*-*-linux* \
3762
- | sparc*-*-linux* \
3763
- | hppa*-*-linux* \
3764
- | *x86_64-*-linux*)
3766
TOOLS_TARGET_PAIRS="\
3767
mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3768
indepsw.adb<indepsw-gnu.adb"
3771
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
3773
+ TOOLS_TARGET_PAIRS="\
3774
+ mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
3775
+ indepsw.adb<indepsw-gnu.adb"
3779
+ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
3782
TOOLS_TARGET_PAIRS="\
3783
- mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
3784
+ mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb \
3785
indepsw.adb<indepsw-gnu.adb"
3787
- hppa*-hp-hpux10*) # Unlike hpux11
3791
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
3794
- TOOLS_TARGET_PAIRS="\
3795
- mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
3796
- indepsw.adb<indepsw-aix.adb"
3798
+ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb"
3800
- alpha*-dec-vms* | alpha*-dec-openvms* | alpha*-dec-vms* \
3801
- | alpha*-hp-vms* | alpha*-hp-openvms* | alpha*-hp-vms*)
3802
+ alpha*-*-vms* | alpha*-*-openvms*)
3803
TOOLS_TARGET_PAIRS="\
3804
mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
3805
symbols.adb<symbols-vms.adb \
3806
symbols-processing.adb<symbols-processing-vms-alpha.adb"
3808
EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
3810
- ia64*-dec-vms* | ia64*-dec-openvms* | ia64*-dec-vms* \
3811
- | ia64*-hp-vms* | ia64*-hp-openvms* | ia64*-hp-vms*)
3812
+ ia64-*-vms* | ia64-*-openvms*)
3813
TOOLS_TARGET_PAIRS="\
3814
mlib-tgt-specific.adb<mlib-tgt-specific-vms-ia64.adb \
3815
symbols.adb<symbols-vms.adb \
3816
symbols-processing.adb<symbols-processing-vms-ia64.adb"
3818
EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
3820
*-*-cygwin32* | *-*-mingw32* | *-*-pe)
3821
@@ -137,14 +130,6 @@
3822
indepsw.adb<indepsw-mingw.adb"
3823
EXTRA_GNATTOOLS='../../gnatdll$(exeext)'
3826
- TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
3829
- TOOLS_TARGET_PAIRS="\
3830
- mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
3831
- indepsw.adb<indepsw-gnu.adb"
3835
# From user or toplevel makefile.
3836
Index: gnattools/ChangeLog
3837
===================================================================
3838
--- a/src/gnattools/ChangeLog (.../tags/gcc_4_8_2_release)
3839
+++ b/src/gnattools/ChangeLog (.../branches/gcc-4_8-branch)
3841
+2013-12-12 Eric Botcazou <ebotcazou@adacore.com>
3842
+ Iain Sandoe <iain@codesourcery.com>
3845
+ * Makefile.in (host): Define.
3846
+ (host_alias): Likewise.
3847
+ (TOOLS_FLAGS_TO_PASS_RE): Add LDFLAGS.
3848
+ (GNATMAKE_FOR_HOST): Define.
3849
+ (GNATLINK_FOR_HOST): Likewise.
3850
+ (GNATBIND_FOR_HOST): Likewise.
3851
+ (GNATLS_FOR_HOST): Likewise.
3852
+ (RTS_DIR): Move around and use GNATLS_FOR_HOST.
3853
+ (TOOLS_FLAGS_TO_PASS_CROSS): Use the other *_HOST variables.
3855
+2013-12-04 Eric Botcazou <ebotcazou@adacore.com>
3858
+ * configure.ac (target parameterization): Rewrite.
3859
+ * configure: Regenerate.
3861
2013-10-16 Release Manager
3863
* GCC 4.8.2 released.
3864
Index: libgcc/config.host
3865
===================================================================
3866
--- a/src/libgcc/config.host (.../tags/gcc_4_8_2_release)
3867
+++ b/src/libgcc/config.host (.../branches/gcc-4_8-branch)
3868
@@ -331,10 +331,10 @@
3870
arm*-*-uclinux*) # ARM ucLinux
3871
tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
3872
+ tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
3873
tmake_file="${tmake_file} arm/t-bpabi"
3874
tm_file="$tm_file arm/bpabi-lib.h"
3875
unwind_header=config/arm/unwind-arm.h
3876
- tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
3877
extra_parts="$extra_parts crti.o crtn.o"
3879
arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
3880
@@ -718,6 +718,10 @@
3881
tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit"
3882
extra_parts="$extra_parts crtbeginS.o crtendS.o crtbeginT.o crti.o crtn.o"
3884
+microblaze*-*-rtems*)
3885
+ tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit"
3886
+ extra_parts="$extra_parts crtbeginS.o crtendS.o crtbeginT.o crti.o crtn.o"
3888
mips*-*-netbsd*) # NetBSD/mips, either endian.
3890
mips*-*-linux*) # Linux MIPS, either endian.
3891
Index: libgcc/ChangeLog
3892
===================================================================
3893
--- a/src/libgcc/ChangeLog (.../tags/gcc_4_8_2_release)
3894
+++ b/src/libgcc/ChangeLog (.../branches/gcc-4_8-branch)
3896
+2014-01-03 Joseph Myers <joseph@codesourcery.com>
3898
+ * config/rs6000/ibm-ldouble.c (__gcc_qdiv): Scale up arguments in
3899
+ case of small numerator and finite nonzero result.
3901
+2013-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com>
3903
+ Backport from trunk r205917.
3904
+ 2013-12-12 Zhenqiang Chen <zhenqiang.chen@arm.com>
3905
+ * config.host (arm*-*-uclinux*): Move t-arm before t-bpabi.
3907
+2013-12-10 Uros Bizjak <ubizjak@gmail.com>
3909
+ * config/i386/sfp-exceptions.c (__sfp_handle_exceptions): Emit SSE
3910
+ instructions when __SSE_MATH__ is defined.
3912
+2013-12-06 Ralf Corsépius <ralf.corsepius@rtems.org>
3914
+ * config.host (microblaze-*-rtems*): New.
3916
+2013-11-10 Kai Tietz <ktietz@redhat.com>
3918
+ Back-merged from trunk
3919
+ * config/i386/cygming-crtbegin.c (__gcc_register_frame):
3920
+ Increment load-count on use of LIBGCC_SONAME DLL.
3921
+ (hmod_libgcc): New static variable to hold handle of
3922
+ LIBGCC_SONAME DLL.
3923
+ (__gcc_deregister_frame): Decrement load-count of
3924
+ LIBGCC_SONAME DLL.
3926
+2013-11-07 Uros Bizjak <ubizjak@gmail.com>
3928
+ * config/i386/sfp-exceptions.c (__sfp_handle_exceptions): Handle
3929
+ FP_EX_DENORM. Store result to volatile location after SSE division
3930
+ to close interrupt window. Remove unneeded fwait after x87
3931
+ division since interrupt window will be closed by emitted fstp.
3932
+ Rewrite FP_EX_INEXACT handling.
3934
2013-10-16 Release Manager
3936
* GCC 4.8.2 released.
3938
* config/mips/crtn.S (fini, init): New labels.
3940
2012-02-19 Edgar E. Iglesias <edgar.iglesias@gmail.com>
3941
- * config/microblaze/modsi3.S (modsi3): Fix case with 0x80000000
3942
+ * config/microblaze/modsi3.S (modsi3): Fix case with 0x80000000
3945
2013-02-16 Alan Modra <amodra@gmail.com>
3946
Index: libgcc/config/i386/sfp-exceptions.c
3947
===================================================================
3948
--- a/src/libgcc/config/i386/sfp-exceptions.c (.../tags/gcc_4_8_2_release)
3949
+++ b/src/libgcc/config/i386/sfp-exceptions.c (.../branches/gcc-4_8-branch)
3951
if (_fex & FP_EX_INVALID)
3955
+#ifdef __SSE_MATH__
3956
+ volatile float r __attribute__ ((unused));
3957
asm volatile ("%vdivss\t{%0, %d0|%d0, %0}" : "+x" (f));
3958
+ r = f; /* Needed to trigger exception. */
3960
asm volatile ("fdiv\t{%y0, %0|%0, %y0}" : "+t" (f));
3961
- asm volatile ("fwait");
3962
+ /* No need for fwait, exception is triggered by emitted fstp. */
3965
+ if (_fex & FP_EX_DENORM)
3968
+ asm volatile ("fnstenv\t%0" : "=m" (temp));
3969
+ temp.__status_word |= FP_EX_DENORM;
3970
+ asm volatile ("fldenv\t%0" : : "m" (temp));
3971
+ asm volatile ("fwait");
3973
if (_fex & FP_EX_DIVZERO)
3975
float f = 1.0f, g = 0.0f;
3977
+#ifdef __SSE_MATH__
3978
+ volatile float r __attribute__ ((unused));
3979
asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g));
3980
+ r = f; /* Needed to trigger exception. */
3982
asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g));
3983
- asm volatile ("fwait");
3984
+ /* No need for fwait, exception is triggered by emitted fstp. */
3987
if (_fex & FP_EX_OVERFLOW)
3990
if (_fex & FP_EX_INEXACT)
3993
- asm volatile ("fnstenv\t%0" : "=m" (temp));
3994
- temp.__status_word |= FP_EX_INEXACT;
3995
- asm volatile ("fldenv\t%0" : : "m" (temp));
3996
- asm volatile ("fwait");
3997
+ float f = 1.0f, g = 3.0f;
3998
+#ifdef __SSE_MATH__
3999
+ volatile float r __attribute__ ((unused));
4000
+ asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g));
4001
+ r = f; /* Needed to trigger exception. */
4003
+ asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g));
4004
+ /* No need for fwait, exception is triggered by emitted fstp. */
4009
Index: libgcc/config/i386/cygming-crtbegin.c
4010
===================================================================
4011
--- a/src/libgcc/config/i386/cygming-crtbegin.c (.../tags/gcc_4_8_2_release)
4012
+++ b/src/libgcc/config/i386/cygming-crtbegin.c (.../branches/gcc-4_8-branch)
4016
static struct object obj;
4018
+/* Handle of libgcc's DLL reference. */
4019
+HANDLE hmod_libgcc;
4022
#if TARGET_USE_JCR_SECTION
4025
void (*register_frame_fn) (const void *, struct object *);
4026
HANDLE h = GetModuleHandle (LIBGCC_SONAME);
4029
- register_frame_fn = (void (*) (const void *, struct object *))
4030
- GetProcAddress (h, "__register_frame_info");
4032
+ /* Increasing the load-count of LIBGCC_SONAME DLL. */
4033
+ hmod_libgcc = LoadLibrary (LIBGCC_SONAME);
4034
+ register_frame_fn = (void (*) (const void *, struct object *))
4035
+ GetProcAddress (h, "__register_frame_info");
4038
register_frame_fn = __register_frame_info;
4039
if (register_frame_fn)
4041
deregister_frame_fn = __deregister_frame_info;
4042
if (deregister_frame_fn)
4043
deregister_frame_fn (__EH_FRAME_BEGIN__);
4045
+ FreeLibrary (hmod_libgcc);
4048
Index: libgcc/config/rs6000/ibm-ldouble.c
4049
===================================================================
4050
--- a/src/libgcc/config/rs6000/ibm-ldouble.c (.../tags/gcc_4_8_2_release)
4051
+++ b/src/libgcc/config/rs6000/ibm-ldouble.c (.../branches/gcc-4_8-branch)
4052
@@ -188,7 +188,16 @@
4056
- /* Finite nonzero result requires corrections to the highest order term. */
4057
+ /* Finite nonzero result requires corrections to the highest order
4058
+ term. These corrections require the low part of c * t to be
4059
+ exactly represented in double. */
4060
+ if (fabs (a) <= 0x1p-969)
4068
s = c * t; /* (s,sigma) = c*t exactly. */
4069
w = -(-b + d * t); /* Written to get fnmsub for speed, but not
4070
Index: gcc/tree-vrp.c
4071
===================================================================
4072
--- a/src/gcc/tree-vrp.c (.../tags/gcc_4_8_2_release)
4073
+++ b/src/gcc/tree-vrp.c (.../branches/gcc-4_8-branch)
4074
@@ -5271,9 +5271,13 @@
4076
else if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (op_def)))
4078
- /* Recurse through the type conversion. */
4079
- retval |= register_edge_assert_for_1 (gimple_assign_rhs1 (op_def),
4081
+ /* Recurse through the type conversion, unless it is a narrowing
4082
+ conversion or conversion from non-integral type. */
4083
+ tree rhs = gimple_assign_rhs1 (op_def);
4084
+ if (INTEGRAL_TYPE_P (TREE_TYPE (rhs))
4085
+ && (TYPE_PRECISION (TREE_TYPE (rhs))
4086
+ <= TYPE_PRECISION (TREE_TYPE (op))))
4087
+ retval |= register_edge_assert_for_1 (rhs, code, e, bsi);
4091
@@ -7453,7 +7457,8 @@
4093
else if ((operand_less_p (vr1min, *vr0max) == 1
4094
|| operand_equal_p (vr1min, *vr0max, 0))
4095
- && operand_less_p (*vr0min, vr1min) == 1)
4096
+ && operand_less_p (*vr0min, vr1min) == 1
4097
+ && operand_less_p (*vr0max, vr1max) == 1)
4099
/* [ ( ] ) or [ ]( ) */
4100
if (*vr0type == VR_RANGE
4101
@@ -7487,7 +7492,8 @@
4103
else if ((operand_less_p (*vr0min, vr1max) == 1
4104
|| operand_equal_p (*vr0min, vr1max, 0))
4105
- && operand_less_p (vr1min, *vr0min) == 1)
4106
+ && operand_less_p (vr1min, *vr0min) == 1
4107
+ && operand_less_p (vr1max, *vr0max) == 1)
4109
/* ( [ ) ] or ( )[ ] */
4110
if (*vr0type == VR_RANGE
4111
Index: gcc/loop-unswitch.c
4112
===================================================================
4113
--- a/src/gcc/loop-unswitch.c (.../tags/gcc_4_8_2_release)
4114
+++ b/src/gcc/loop-unswitch.c (.../branches/gcc-4_8-branch)
4120
for (i = 0; i < 2; i++)
4122
op[i] = XEXP (test, i);
4123
@@ -205,11 +206,15 @@
4126
op[i] = get_iv_value (&iv, const0_rtx);
4127
+ if (iv.extend != IV_UNKNOWN_EXTEND
4128
+ && iv.mode != iv.extend_mode)
4129
+ op[i] = lowpart_subreg (iv.mode, op[i], iv.extend_mode);
4130
+ if (mode == VOIDmode)
4133
+ gcc_assert (mode == iv.mode);
4136
- mode = GET_MODE (op[0]);
4137
- if (mode == VOIDmode)
4138
- mode = GET_MODE (op[1]);
4139
if (GET_MODE_CLASS (mode) == MODE_CC)
4141
if (at != BB_END (bb))
4142
Index: gcc/tree-ssa-loop-im.c
4143
===================================================================
4144
--- a/src/gcc/tree-ssa-loop-im.c (.../tags/gcc_4_8_2_release)
4145
+++ b/src/gcc/tree-ssa-loop-im.c (.../branches/gcc-4_8-branch)
4146
@@ -1190,6 +1190,67 @@
4147
fini_walk_dominator_tree (&walk_data);
4150
+/* Return true if CODE is an operation that when operating on signed
4151
+ integer types involves undefined behavior on overflow and the
4152
+ operation can be expressed with unsigned arithmetic. */
4155
+arith_code_with_undefined_signed_overflow (tree_code code)
4163
+ case POINTER_PLUS_EXPR:
4170
+/* Rewrite STMT, an assignment with a signed integer or pointer arithmetic
4171
+ operation that can be transformed to unsigned arithmetic by converting
4172
+ its operand, carrying out the operation in the corresponding unsigned
4173
+ type and converting the result back to the original type.
4175
+ Returns a sequence of statements that replace STMT and also contain
4176
+ a modified form of STMT itself. */
4179
+rewrite_to_defined_overflow (gimple stmt)
4181
+ if (dump_file && (dump_flags & TDF_DETAILS))
4183
+ fprintf (dump_file, "rewriting stmt with undefined signed "
4185
+ print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
4188
+ tree lhs = gimple_assign_lhs (stmt);
4189
+ tree type = unsigned_type_for (TREE_TYPE (lhs));
4190
+ gimple_seq stmts = NULL;
4191
+ for (unsigned i = 1; i < gimple_num_ops (stmt); ++i)
4193
+ gimple_seq stmts2 = NULL;
4194
+ gimple_set_op (stmt, i,
4195
+ force_gimple_operand (fold_convert (type,
4196
+ gimple_op (stmt, i)),
4197
+ &stmts2, true, NULL_TREE));
4198
+ gimple_seq_add_seq (&stmts, stmts2);
4200
+ gimple_assign_set_lhs (stmt, make_ssa_name (type, stmt));
4201
+ if (gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR)
4202
+ gimple_assign_set_rhs_code (stmt, PLUS_EXPR);
4203
+ gimple_seq_add_stmt (&stmts, stmt);
4204
+ gimple cvt = gimple_build_assign_with_ops
4205
+ (NOP_EXPR, lhs, gimple_assign_lhs (stmt), NULL_TREE);
4206
+ gimple_seq_add_stmt (&stmts, cvt);
4211
/* Hoist the statements in basic block BB out of the loops prescribed by
4212
data stored in LIM_DATA structures associated with each statement. Callback
4213
for walk_dominator_tree. */
4214
@@ -1321,7 +1382,21 @@
4217
gsi_remove (&bsi, false);
4218
- gsi_insert_on_edge (e, stmt);
4219
+ /* In case this is a stmt that is not unconditionally executed
4220
+ when the target loop header is executed and the stmt may
4221
+ invoke undefined integer or pointer overflow rewrite it to
4222
+ unsigned arithmetic. */
4223
+ if (is_gimple_assign (stmt)
4224
+ && INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_lhs (stmt)))
4225
+ && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (gimple_assign_lhs (stmt)))
4226
+ && arith_code_with_undefined_signed_overflow
4227
+ (gimple_assign_rhs_code (stmt))
4228
+ && (!ALWAYS_EXECUTED_IN (bb)
4229
+ || !(ALWAYS_EXECUTED_IN (bb) == level
4230
+ || flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
4231
+ gsi_insert_seq_on_edge (e, rewrite_to_defined_overflow (stmt));
4233
+ gsi_insert_on_edge (e, stmt);
4237
Index: gcc/tree-ssa-tail-merge.c
4238
===================================================================
4239
--- a/src/gcc/tree-ssa-tail-merge.c (.../tags/gcc_4_8_2_release)
4240
+++ b/src/gcc/tree-ssa-tail-merge.c (.../branches/gcc-4_8-branch)
4243
def_operand_p def_p;
4245
- if (gimple_has_side_effects (stmt))
4246
+ if (gimple_has_side_effects (stmt)
4247
+ || gimple_vdef (stmt) != NULL_TREE)
4250
def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF);
4251
Index: gcc/cgraphbuild.c
4252
===================================================================
4253
--- a/src/gcc/cgraphbuild.c (.../tags/gcc_4_8_2_release)
4254
+++ b/src/gcc/cgraphbuild.c (.../branches/gcc-4_8-branch)
4256
decl = get_base_var (*tp);
4257
if (TREE_CODE (decl) == FUNCTION_DECL)
4259
- struct cgraph_node *node = cgraph_get_create_node (decl);
4260
+ struct cgraph_node *node = cgraph_get_create_real_symbol_node (decl);
4261
if (!ctx->only_vars)
4262
cgraph_mark_address_taken_node (node);
4263
ipa_record_reference ((symtab_node)ctx->varpool_node,
4266
struct cgraph_node *per_node;
4268
- per_node = cgraph_get_create_node (DECL_FUNCTION_PERSONALITY (node->symbol.decl));
4269
+ per_node = cgraph_get_create_real_symbol_node (DECL_FUNCTION_PERSONALITY (node->symbol.decl));
4270
ipa_record_reference ((symtab_node)node, (symtab_node)per_node, IPA_REF_ADDR, NULL);
4271
cgraph_mark_address_taken_node (per_node);
4273
@@ -218,12 +218,12 @@
4274
/* Mark address taken in STMT. */
4277
-mark_address (gimple stmt, tree addr, void *data)
4278
+mark_address (gimple stmt, tree addr, tree, void *data)
4280
addr = get_base_address (addr);
4281
if (TREE_CODE (addr) == FUNCTION_DECL)
4283
- struct cgraph_node *node = cgraph_get_create_node (addr);
4284
+ struct cgraph_node *node = cgraph_get_create_real_symbol_node (addr);
4285
cgraph_mark_address_taken_node (node);
4286
ipa_record_reference ((symtab_node)data,
4288
@@ -245,14 +245,14 @@
4289
/* Mark load of T. */
4292
-mark_load (gimple stmt, tree t, void *data)
4293
+mark_load (gimple stmt, tree t, tree, void *data)
4295
t = get_base_address (t);
4296
if (t && TREE_CODE (t) == FUNCTION_DECL)
4298
/* ??? This can happen on platforms with descriptors when these are
4299
directly manipulated in the code. Pretend that it's an address. */
4300
- struct cgraph_node *node = cgraph_get_create_node (t);
4301
+ struct cgraph_node *node = cgraph_get_create_real_symbol_node (t);
4302
cgraph_mark_address_taken_node (node);
4303
ipa_record_reference ((symtab_node)data,
4306
/* Mark store of T. */
4309
-mark_store (gimple stmt, tree t, void *data)
4310
+mark_store (gimple stmt, tree t, tree, void *data)
4312
t = get_base_address (t);
4313
if (t && TREE_CODE (t) == VAR_DECL
4316
tree fn = gimple_omp_parallel_child_fn (stmt);
4317
ipa_record_reference ((symtab_node)node,
4318
- (symtab_node)cgraph_get_create_node (fn),
4319
+ (symtab_node)cgraph_get_create_real_symbol_node (fn),
4320
IPA_REF_ADDR, stmt);
4322
if (gimple_code (stmt) == GIMPLE_OMP_TASK)
4323
@@ -338,12 +338,12 @@
4324
tree fn = gimple_omp_task_child_fn (stmt);
4326
ipa_record_reference ((symtab_node)node,
4327
- (symtab_node) cgraph_get_create_node (fn),
4328
+ (symtab_node) cgraph_get_create_real_symbol_node (fn),
4329
IPA_REF_ADDR, stmt);
4330
fn = gimple_omp_task_copy_fn (stmt);
4332
ipa_record_reference ((symtab_node)node,
4333
- (symtab_node)cgraph_get_create_node (fn),
4334
+ (symtab_node)cgraph_get_create_real_symbol_node (fn),
4335
IPA_REF_ADDR, stmt);
4338
Index: gcc/tree-ssa-loop-niter.c
4339
===================================================================
4340
--- a/src/gcc/tree-ssa-loop-niter.c (.../tags/gcc_4_8_2_release)
4341
+++ b/src/gcc/tree-ssa-loop-niter.c (.../branches/gcc-4_8-branch)
4342
@@ -2075,7 +2075,8 @@
4346
- if (gimple_code (stmt) != GIMPLE_ASSIGN)
4347
+ if (gimple_code (stmt) != GIMPLE_ASSIGN
4348
+ || gimple_assign_rhs_class (stmt) == GIMPLE_TERNARY_RHS)
4351
code = gimple_assign_rhs_code (stmt);
4352
@@ -2143,7 +2144,7 @@
4356
- gcc_assert (is_gimple_min_invariant (base));
4357
+ gcc_checking_assert (is_gimple_min_invariant (base));
4361
@@ -2152,7 +2153,7 @@
4362
if (gimple_code (stmt) == GIMPLE_PHI)
4365
- gcc_assert (is_gimple_assign (stmt));
4366
+ gcc_checking_assert (is_gimple_assign (stmt));
4368
/* STMT must be either an assignment of a single SSA name or an
4369
expression involving an SSA name and a constant. Try to fold that
4370
Index: gcc/c-family/ChangeLog
4371
===================================================================
4372
--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_4_8_2_release)
4373
+++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-4_8-branch)
4375
+2013-11-29 Jakub Jelinek <jakub@redhat.com>
4378
+ * c-common.c (get_priority): If TREE_VALUE (args) is IDENTIFIER_NODE,
4379
+ goto invalid. If it is error_mark_node, don't issue further
4382
+2013-11-04 Marek Polacek <polacek@redhat.com>
4384
+ Backport from mainline
4385
+ 2013-11-04 Marek Polacek <polacek@redhat.com>
4388
+ * c-common.c (invalid_indirection_error): Handle RO_ARROW_STAR case.
4390
2013-10-16 Release Manager
4392
* GCC 4.8.2 released.
4393
Index: gcc/c-family/c-common.c
4394
===================================================================
4395
--- a/src/gcc/c-family/c-common.c (.../tags/gcc_4_8_2_release)
4396
+++ b/src/gcc/c-family/c-common.c (.../branches/gcc-4_8-branch)
4397
@@ -6917,6 +6917,10 @@
4400
arg = TREE_VALUE (args);
4401
+ if (TREE_CODE (arg) == IDENTIFIER_NODE)
4403
+ if (arg == error_mark_node)
4404
+ return DEFAULT_INIT_PRIORITY;
4405
arg = default_conversion (arg);
4406
if (!host_integerp (arg, /*pos=*/0)
4407
|| !INTEGRAL_TYPE_P (TREE_TYPE (arg)))
4408
@@ -9763,6 +9767,11 @@
4409
"invalid type argument of %<->%> (have %qT)",
4412
+ case RO_ARROW_STAR:
4414
+ "invalid type argument of %<->*%> (have %qT)",
4417
case RO_IMPLICIT_CONVERSION:
4419
"invalid type argument of implicit conversion (have %qT)",
4420
Index: gcc/c/c-typeck.c
4421
===================================================================
4422
--- a/src/gcc/c/c-typeck.c (.../tags/gcc_4_8_2_release)
4423
+++ b/src/gcc/c/c-typeck.c (.../branches/gcc-4_8-branch)
4424
@@ -3629,7 +3629,8 @@
4425
/* Report invalid types. */
4427
if (typecode != POINTER_TYPE && typecode != FIXED_POINT_TYPE
4428
- && typecode != INTEGER_TYPE && typecode != REAL_TYPE)
4429
+ && typecode != INTEGER_TYPE && typecode != REAL_TYPE
4430
+ && typecode != VECTOR_TYPE)
4432
if (code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
4433
error_at (location, "wrong type argument to increment");
4434
@@ -3694,7 +3695,9 @@
4438
- inc = integer_one_node;
4439
+ inc = (TREE_CODE (argtype) == VECTOR_TYPE
4440
+ ? build_one_cst (argtype)
4441
+ : integer_one_node);
4442
inc = convert (argtype, inc);
4445
Index: gcc/c/ChangeLog
4446
===================================================================
4447
--- a/src/gcc/c/ChangeLog (.../tags/gcc_4_8_2_release)
4448
+++ b/src/gcc/c/ChangeLog (.../branches/gcc-4_8-branch)
4450
+2013-12-03 Marek Polacek <polacek@redhat.com>
4452
+ Backport from mainline
4453
+ 2013-12-03 Marek Polacek <polacek@redhat.com>
4456
+ * c-decl.c (build_compound_literal): Allow compound literals with
4457
+ empty initial value.
4459
+2013-11-27 Tom de Vries <tom@codesourcery.com>
4460
+ Marc Glisse <marc.glisse@inria.fr>
4463
+ * c-typeck.c (build_unary_op): Allow vector increment and decrement.
4465
2013-10-16 Release Manager
4467
* GCC 4.8.2 released.
4468
Index: gcc/c/c-decl.c
4469
===================================================================
4470
--- a/src/gcc/c/c-decl.c (.../tags/gcc_4_8_2_release)
4471
+++ b/src/gcc/c/c-decl.c (.../branches/gcc-4_8-branch)
4472
@@ -4632,7 +4632,9 @@
4474
int failure = complete_array_type (&TREE_TYPE (decl),
4475
DECL_INITIAL (decl), true);
4476
- gcc_assert (!failure);
4477
+ /* If complete_array_type returns 3, it means that the
4478
+ initial value of the compound literal is empty. Allow it. */
4479
+ gcc_assert (failure == 0 || failure == 3);
4481
type = TREE_TYPE (decl);
4482
TREE_TYPE (DECL_INITIAL (decl)) = type;
4484
===================================================================
4485
--- a/src/gcc/cgraph.c (.../tags/gcc_4_8_2_release)
4486
+++ b/src/gcc/cgraph.c (.../branches/gcc-4_8-branch)
4487
@@ -2596,4 +2596,47 @@
4488
FOR_EACH_FUNCTION (node)
4489
verify_cgraph_node (node);
4492
+/* Create external decl node for DECL.
4493
+ The difference i nbetween cgraph_get_create_node and
4494
+ cgraph_get_create_real_symbol_node is that cgraph_get_create_node
4495
+ may return inline clone, while cgraph_get_create_real_symbol_node
4496
+ will create a new node in this case.
4497
+ FIXME: This function should be removed once clones are put out of decl
4500
+struct cgraph_node *
4501
+cgraph_get_create_real_symbol_node (tree decl)
4503
+ struct cgraph_node *first_clone = cgraph_get_node (decl);
4504
+ struct cgraph_node *node;
4505
+ /* create symbol table node. even if inline clone exists, we can not take
4506
+ it as a target of non-inlined call. */
4507
+ node = cgraph_get_node (decl);
4508
+ if (node && !node->global.inlined_to)
4511
+ node = cgraph_create_node (decl);
4513
+ /* ok, we previously inlined the function, then removed the offline copy and
4514
+ now we want it back for external call. this can happen when devirtualizing
4515
+ while inlining function called once that happens after extern inlined and
4516
+ virtuals are already removed. in this case introduce the external node
4517
+ and make it available for call. */
4520
+ first_clone->clone_of = node;
4521
+ node->clones = first_clone;
4522
+ symtab_prevail_in_asm_name_hash ((symtab_node) node);
4523
+ symtab_insert_node_to_hashtable ((symtab_node) node);
4525
+ fprintf (dump_file, "Introduced new external node "
4526
+ "(%s/%i) and turned into root of the clone tree.\n",
4527
+ xstrdup (cgraph_node_name (node)), node->uid);
4529
+ else if (dump_file)
4530
+ fprintf (dump_file, "Introduced new external node "
4531
+ "(%s/%i).\n", xstrdup (cgraph_node_name (node)), node->uid);
4534
#include "gt-cgraph.h"
4536
===================================================================
4537
--- a/src/gcc/cgraph.h (.../tags/gcc_4_8_2_release)
4538
+++ b/src/gcc/cgraph.h (.../branches/gcc-4_8-branch)
4540
struct cgraph_node * cgraph_create_node (tree);
4541
struct cgraph_node * cgraph_create_empty_node (void);
4542
struct cgraph_node * cgraph_get_create_node (tree);
4543
+struct cgraph_node * cgraph_get_create_real_symbol_node (tree);
4544
struct cgraph_node * cgraph_same_body_alias (struct cgraph_node *, tree, tree);
4545
struct cgraph_node * cgraph_add_thunk (struct cgraph_node *, tree, tree, bool, HOST_WIDE_INT,
4546
HOST_WIDE_INT, tree, tree);
4548
===================================================================
4549
--- a/src/gcc/optabs.c (.../tags/gcc_4_8_2_release)
4550
+++ b/src/gcc/optabs.c (.../branches/gcc-4_8-branch)
4551
@@ -4558,8 +4558,11 @@
4552
if (!COMPARISON_P (comparison))
4555
+ /* State variables we need to save and restore if cmove can't be used. */
4556
+ int save_pending_stack_adjust = pending_stack_adjust;
4557
+ int save_stack_pointer_delta = stack_pointer_delta;
4558
+ last = get_last_insn ();
4559
do_pending_stack_adjust ();
4560
- last = get_last_insn ();
4561
prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1),
4562
GET_CODE (comparison), NULL_RTX, unsignedp, OPTAB_WIDEN,
4563
&comparison, &cmode);
4564
@@ -4579,6 +4582,8 @@
4567
delete_insns_since (last);
4568
+ pending_stack_adjust = save_pending_stack_adjust;
4569
+ stack_pointer_delta = save_stack_pointer_delta;
4573
@@ -6233,7 +6238,7 @@
4575
/* If the optabs changed, record it. */
4576
if (memcmp (tmp_optabs, this_target_optabs, sizeof (struct target_optabs)))
4577
- TREE_OPTIMIZATION_OPTABS (optnode) = (unsigned char *) tmp_optabs;
4578
+ TREE_OPTIMIZATION_OPTABS (optnode) = tmp_optabs;
4581
TREE_OPTIMIZATION_OPTABS (optnode) = NULL;
4582
@@ -7035,8 +7040,7 @@
4584
create_output_operand (&ops[0], target, mode);
4585
create_fixed_operand (&ops[1], mem);
4586
- /* VAL may have been promoted to a wider mode. Shrink it if so. */
4587
- create_convert_operand_to (&ops[2], val, mode, true);
4588
+ create_input_operand (&ops[2], val, mode);
4589
create_integer_operand (&ops[3], model);
4590
if (maybe_expand_insn (icode, 4, ops))
4591
return ops[0].value;
4592
@@ -7075,8 +7079,7 @@
4593
struct expand_operand ops[3];
4594
create_output_operand (&ops[0], target, mode);
4595
create_fixed_operand (&ops[1], mem);
4596
- /* VAL may have been promoted to a wider mode. Shrink it if so. */
4597
- create_convert_operand_to (&ops[2], val, mode, true);
4598
+ create_input_operand (&ops[2], val, mode);
4599
if (maybe_expand_insn (icode, 3, ops))
4600
return ops[0].value;
4602
@@ -7118,8 +7121,6 @@
4604
if (!target || !register_operand (target, mode))
4605
target = gen_reg_rtx (mode);
4606
- if (GET_MODE (val) != VOIDmode && GET_MODE (val) != mode)
4607
- val = convert_modes (mode, GET_MODE (val), val, 1);
4608
if (expand_compare_and_swap_loop (mem, target, val, NULL_RTX))
4611
@@ -7331,8 +7332,8 @@
4612
create_output_operand (&ops[0], target_bool, bool_mode);
4613
create_output_operand (&ops[1], target_oval, mode);
4614
create_fixed_operand (&ops[2], mem);
4615
- create_convert_operand_to (&ops[3], expected, mode, true);
4616
- create_convert_operand_to (&ops[4], desired, mode, true);
4617
+ create_input_operand (&ops[3], expected, mode);
4618
+ create_input_operand (&ops[4], desired, mode);
4619
create_integer_operand (&ops[5], is_weak);
4620
create_integer_operand (&ops[6], succ_model);
4621
create_integer_operand (&ops[7], fail_model);
4622
@@ -7353,8 +7354,8 @@
4624
create_output_operand (&ops[0], target_oval, mode);
4625
create_fixed_operand (&ops[1], mem);
4626
- create_convert_operand_to (&ops[2], expected, mode, true);
4627
- create_convert_operand_to (&ops[3], desired, mode, true);
4628
+ create_input_operand (&ops[2], expected, mode);
4629
+ create_input_operand (&ops[3], desired, mode);
4630
if (!maybe_expand_insn (icode, 4, ops))
4633
Index: gcc/DATESTAMP
4634
===================================================================
4635
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_2_release)
4636
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
4640
Index: gcc/value-prof.c
4641
===================================================================
4642
--- a/src/gcc/value-prof.c (.../tags/gcc_4_8_2_release)
4643
+++ b/src/gcc/value-prof.c (.../branches/gcc-4_8-branch)
4644
@@ -1270,8 +1270,7 @@
4646
/* Build an EH edge for the direct call if necessary. */
4647
lp_nr = lookup_stmt_eh_lp (icall_stmt);
4649
- && stmt_could_throw_p (dcall_stmt))
4650
+ if (lp_nr > 0 && stmt_could_throw_p (dcall_stmt))
4655
===================================================================
4656
--- a/src/gcc/tree.h (.../tags/gcc_4_8_2_release)
4657
+++ b/src/gcc/tree.h (.../branches/gcc-4_8-branch)
4658
@@ -3589,7 +3589,7 @@
4660
/* Target optabs for this set of optimization options. This is of
4661
type `struct target_optabs *'. */
4662
- unsigned char *GTY ((atomic)) optabs;
4663
+ void *GTY ((atomic)) optabs;
4665
/* The value of this_target_optabs against which the optabs above were
4667
Index: gcc/configure
4668
===================================================================
4669
--- a/src/gcc/configure (.../tags/gcc_4_8_2_release)
4670
+++ b/src/gcc/configure (.../branches/gcc-4_8-branch)
4671
@@ -11202,13 +11202,11 @@
4672
/* | A-Za-z:\\/* ) realsrcdir=${srcdir};;
4673
*) realsrcdir=../${srcdir};;
4675
- saved_CFLAGS="${CFLAGS}"
4676
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
4677
- LDFLAGS="${LDFLAGS_FOR_BUILD}" \
4678
+ LDFLAGS="${LDFLAGS_FOR_BUILD}" GMPINC="" \
4679
${realsrcdir}/configure \
4680
--enable-languages=${enable_languages-all} \
4681
--target=$target_alias --host=$build_alias --build=$build_alias
4682
- CFLAGS="${saved_CFLAGS}"
4684
# We just finished tests for the build machine, so rename
4685
# the file auto-build.h in the gcc directory.
4686
@@ -11703,6 +11701,7 @@
4687
if test x$build != x$host || test "x$coverage_flags" != x
4689
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
4690
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
4691
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
4694
@@ -17828,7 +17827,7 @@
4695
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
4696
lt_status=$lt_dlunknown
4697
cat > conftest.$ac_ext <<_LT_EOF
4698
-#line 17831 "configure"
4699
+#line 17830 "configure"
4700
#include "confdefs.h"
4703
@@ -17934,7 +17933,7 @@
4704
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
4705
lt_status=$lt_dlunknown
4706
cat > conftest.$ac_ext <<_LT_EOF
4707
-#line 17937 "configure"
4708
+#line 17936 "configure"
4709
#include "confdefs.h"
4712
@@ -24263,6 +24262,43 @@
4713
$as_echo "#define HAVE_AS_SPARC4 1" >>confdefs.h
4717
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for LEON instructions" >&5
4718
+$as_echo_n "checking assembler for LEON instructions... " >&6; }
4719
+if test "${gcc_cv_as_sparc_leon+set}" = set; then :
4720
+ $as_echo_n "(cached) " >&6
4722
+ gcc_cv_as_sparc_leon=no
4723
+ if test x$gcc_cv_as != x; then
4725
+ .register %g2, #scratch
4726
+ .register %g3, #scratch
4728
+ smac %g2, %g3, %g1
4729
+ umac %g2, %g3, %g1
4730
+ cas [%g2], %g3, %g1' > conftest.s
4731
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -Aleon -o conftest.o conftest.s >&5'
4732
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
4733
+ (eval $ac_try) 2>&5
4735
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
4736
+ test $ac_status = 0; }; }
4738
+ gcc_cv_as_sparc_leon=yes
4740
+ echo "configure: failed program was" >&5
4741
+ cat conftest.s >&5
4743
+ rm -f conftest.o conftest.s
4746
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_sparc_leon" >&5
4747
+$as_echo "$gcc_cv_as_sparc_leon" >&6; }
4748
+if test $gcc_cv_as_sparc_leon = yes; then
4750
+$as_echo "#define HAVE_AS_LEON 1" >>confdefs.h
4755
i[34567]86-*-* | x86_64-*-*)
4756
@@ -27239,8 +27275,8 @@
4757
$as_echo_n "checking for exported symbols... " >&6; }
4758
if test "x$export_sym_check" != x; then
4759
echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
4760
- ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
4761
- if $export_sym_check conftest | grep foobar > /dev/null; then
4762
+ ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
4763
+ if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
4764
: # No need to use a flag
4765
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
4766
$as_echo "yes" >&6; }
4767
@@ -27249,8 +27285,8 @@
4768
$as_echo "yes" >&6; }
4769
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5
4770
$as_echo_n "checking for -rdynamic... " >&6; }
4771
- ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
4772
- if $export_sym_check conftest | grep foobar > /dev/null; then
4773
+ ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
4774
+ if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
4776
pluginlibs="-rdynamic"
4778
Index: gcc/builtins.c
4779
===================================================================
4780
--- a/src/gcc/builtins.c (.../tags/gcc_4_8_2_release)
4781
+++ b/src/gcc/builtins.c (.../branches/gcc-4_8-branch)
4782
@@ -1958,6 +1958,7 @@
4783
tree fndecl = get_callee_fndecl (exp);
4784
enum machine_mode mode;
4785
bool errno_set = false;
4786
+ bool try_widening = false;
4789
if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
4790
@@ -1969,6 +1970,7 @@
4792
CASE_FLT_FN (BUILT_IN_SQRT):
4793
errno_set = ! tree_expr_nonnegative_p (arg);
4794
+ try_widening = true;
4795
builtin_optab = sqrt_optab;
4797
CASE_FLT_FN (BUILT_IN_EXP):
4798
@@ -2025,8 +2027,10 @@
4799
if (! flag_errno_math || ! HONOR_NANS (mode))
4802
- /* Before working hard, check whether the instruction is available. */
4803
- if (optab_handler (builtin_optab, mode) != CODE_FOR_nothing
4804
+ /* Before working hard, check whether the instruction is available, but try
4805
+ to widen the mode for specific operations. */
4806
+ if ((optab_handler (builtin_optab, mode) != CODE_FOR_nothing
4807
+ || (try_widening && !excess_precision_type (TREE_TYPE (exp))))
4808
&& (!errno_set || !optimize_insn_for_size_p ()))
4810
rtx result = gen_reg_rtx (mode);
4811
Index: gcc/fold-const.c
4812
===================================================================
4813
--- a/src/gcc/fold-const.c (.../tags/gcc_4_8_2_release)
4814
+++ b/src/gcc/fold-const.c (.../branches/gcc-4_8-branch)
4815
@@ -2664,10 +2664,11 @@
4817
/* Handle operand 2 the same as for ARRAY_REF. Operand 0
4818
may be NULL when we're called to compare MEM_EXPRs. */
4819
- if (!OP_SAME_WITH_NULL (0))
4820
+ if (!OP_SAME_WITH_NULL (0)
4823
flags &= ~OEP_CONSTANT_ADDRESS_OF;
4824
- return OP_SAME (1) && OP_SAME_WITH_NULL (2);
4825
+ return OP_SAME_WITH_NULL (2);
4829
@@ -10927,6 +10928,13 @@
4830
fold_build2_loc (loc, MULT_EXPR, type,
4831
build_int_cst (type, 2) , arg1));
4833
+ /* ((T) (X /[ex] C)) * C cancels out if the conversion is
4834
+ sign-changing only. */
4835
+ if (TREE_CODE (arg1) == INTEGER_CST
4836
+ && TREE_CODE (arg0) == EXACT_DIV_EXPR
4837
+ && operand_equal_p (arg1, TREE_OPERAND (arg0, 1), 0))
4838
+ return fold_convert_loc (loc, type, TREE_OPERAND (arg0, 0));
4840
strict_overflow_p = false;
4841
if (TREE_CODE (arg1) == INTEGER_CST
4842
&& 0 != (tem = extract_muldiv (op0, arg1, code, NULL_TREE,
4843
@@ -16587,7 +16595,7 @@
4844
unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
4845
tree index = bitsize_int (indexi);
4847
- if (offset/part_widthi <= TYPE_VECTOR_SUBPARTS (op00type))
4848
+ if (offset / part_widthi < TYPE_VECTOR_SUBPARTS (op00type))
4849
return fold_build3_loc (loc,
4850
BIT_FIELD_REF, type, op00,
4853
===================================================================
4854
--- a/src/gcc/reorg.c (.../tags/gcc_4_8_2_release)
4855
+++ b/src/gcc/reorg.c (.../branches/gcc-4_8-branch)
4856
@@ -1105,6 +1105,7 @@
4859
struct resources cc_set;
4862
/* We can't do anything if there are more delay slots in SEQ than we
4863
can handle, or if we don't know that it will be a taken branch.
4864
@@ -1145,6 +1146,7 @@
4868
+ redundant = XALLOCAVEC (bool, XVECLEN (seq, 0));
4869
for (i = 1; i < XVECLEN (seq, 0); i++)
4871
rtx trial = XVECEXP (seq, 0, i);
4872
@@ -1166,7 +1168,8 @@
4874
/* If this insn was already done (usually in a previous delay slot),
4875
pretend we put it in our delay slot. */
4876
- if (redundant_insn (trial, insn, new_delay_list))
4877
+ redundant[i] = redundant_insn (trial, insn, new_delay_list);
4881
/* We will end up re-vectoring this branch, so compute flags
4882
@@ -1199,6 +1202,12 @@
4886
+ /* Record the effect of the instructions that were redundant and which
4887
+ we therefore decided not to copy. */
4888
+ for (i = 1; i < XVECLEN (seq, 0); i++)
4890
+ update_block (XVECEXP (seq, 0, i), insn);
4892
/* Show the place to which we will be branching. */
4893
*pnew_thread = first_active_target_insn (JUMP_LABEL (XVECEXP (seq, 0, 0)));
4895
@@ -1262,6 +1271,7 @@
4896
/* If this insn was already done, we don't need it. */
4897
if (redundant_insn (trial, insn, delay_list))
4899
+ update_block (trial, insn);
4900
delete_from_delay_slot (trial);
4903
@@ -3266,6 +3276,7 @@
4904
to reprocess this insn. */
4905
if (redundant_insn (XVECEXP (pat, 0, 1), delay_insn, 0))
4907
+ update_block (XVECEXP (pat, 0, 1), insn);
4908
delete_from_delay_slot (XVECEXP (pat, 0, 1));
4909
next = prev_active_insn (next);
4911
@@ -3385,6 +3396,7 @@
4912
&& redirect_with_delay_slots_safe_p (delay_insn, target_label,
4915
+ update_block (XVECEXP (PATTERN (trial), 0, 1), insn);
4916
reorg_redirect_jump (delay_insn, target_label);
4919
Index: gcc/tree-ssa-sccvn.c
4920
===================================================================
4921
--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_4_8_2_release)
4922
+++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-4_8-branch)
4926
/* For non-calls, store the information that makes up the address. */
4931
vn_reference_op_s temp;
4932
@@ -711,7 +711,15 @@
4933
.arshift (BITS_PER_UNIT == 8
4934
? 3 : exact_log2 (BITS_PER_UNIT),
4935
HOST_BITS_PER_DOUBLE_INT);
4936
- if (off.fits_shwi ())
4937
+ if (off.fits_shwi ()
4938
+ /* Probibit value-numbering zero offset components
4939
+ of addresses the same before the pass folding
4940
+ __builtin_object_size had a chance to run
4941
+ (checking cfun->after_inlining does the
4943
+ && (TREE_CODE (orig) != ADDR_EXPR
4944
+ || !off.is_zero ()
4945
+ || cfun->after_inlining))
4949
Index: gcc/ChangeLog
4950
===================================================================
4951
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_2_release)
4952
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
4954
+2014-01-17 Charles Baylis <charles.baylis@linaro.org>
4956
+ Backport from mainline
4957
+ 2013-12-19 Charles Baylis <charles.baylis@linaro.org>
4960
+ * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb
4962
+ * config/arm/ldmstm.md: Regenerate.
4964
+ 2013-12-19 Charles Baylis <charles.baylis@linaro.org>
4967
+ * config/arm/predicates.md (arm_hard_general_register_operand):
4969
+ (arm_hard_register_operand): Remove.
4970
+ * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand
4972
+ * config/arm/ldmstm.md: Regenerate.
4974
+ 2013-12-19 Charles Baylis <charles.baylis@linaro.org>
4977
+ * config/arm/predicates.md (vfp_hard_register_operand): New predicate.
4978
+ * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use
4979
+ vfp_hard_register_operand.
4981
+2014-01-17 Kugan Vivekanandarajah <kuganv@linaro.org>
4983
+ Backport from mainline
4984
+ 2014-01-15 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
4985
+ Kugan Vivekanandarajah <kuganv@linaro.org>
4988
+ * config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
4991
+2014-01-17 Terry Guo <terry.guo@arm.com>
4994
+ * config/arm/arm.md (prefetch): Set insn type attribute to load1.
4996
+2014-01-16 Jakub Jelinek <jakub@redhat.com>
4999
+ * config/i386/i386.c (ix86_expand_builtin): If target doesn't
5000
+ satisfy operand 0 predicate for gathers, use a new pseudo as
5003
+2014-01-16 Richard Henderson <rth@redhat.com>
5006
+ * reginfo.c (global_regs_decl): Globalize.
5007
+ * rtl.h (global_regs_decl): Declare.
5008
+ * ira.c (do_reload): Diagnose frame_pointer_needed and it
5009
+ reserved via global_regs.
5011
+2014-01-16 Peter Bergner <bergner@vnet.ibm.com>
5013
+ Backport from mainline
5014
+ 2014-01-15 Uros Bizjak <ubizjak@gmail.com>
5016
+ * config/i386/i386.c (ix86_hard_regno_mode_ok): Use
5017
+ VALID_AVX256_REG_OR_OI_MODE.
5019
+ 2013-09-05 Peter Bergner <bergner@vnet.ibm.com>
5022
+ * reginfo.c (choose_hard_reg_mode): Scan through all mode classes
5023
+ looking for widest mode.
5025
+2014-01-16 Marek Polacek <polacek@redhat.com>
5027
+ Backported from mainline
5028
+ 2014-01-16 Marek Polacek <polacek@redhat.com>
5030
+ PR middle-end/59827
5031
+ * gimple-low.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if
5032
+ it is error_mark_node.
5034
+2014-01-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
5037
+ * config/s390/s390.c (s390_preferred_reload_class): Don't return
5038
+ ADDR_REGS for invalid symrefs in non-PIC code.
5040
+2014-01-14 Uros Bizjak <ubizjak@gmail.com>
5043
+ 2014-01-08 Uros Bizjak <ubizjak@gmail.com>
5045
+ * config/i386/i386.c (ix86_data_alignment): Calculate max_align
5046
+ from prefetch_block tune setting.
5048
+2014-01-13 Jakub Jelinek <jakub@redhat.com>
5050
+ Backported from mainline
5051
+ 2014-01-10 Jakub Jelinek <jakub@redhat.com>
5053
+ PR tree-optimization/59745
5054
+ * tree-predcom.c (tree_predictive_commoning_loop): Call
5055
+ free_affine_expand_cache if giving up because components is NULL.
5057
+2014-01-10 Yufeng Zhang <yufeng.zhang@arm.com>
5059
+ * config/arm/arm.c (arm_expand_neon_args): Call expand_expr
5060
+ with EXPAND_MEMORY for NEON_ARG_MEMORY; check if the returned
5061
+ rtx is const0_rtx or not.
5063
+2014-01-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
5065
+ * config/s390/s390.c (s390_expand_tbegin): Remove jump over CC
5066
+ extraction in good case.
5068
+2014-01-10 Huacai Chen <chenhc@lemote.com>
5070
+ * config/mips/driver-native.c (host_detect_local_cpu): Handle new
5071
+ kernel strings for Loongson-2E/2F/3A.
5073
+2014-01-10 Richard Biener <rguenther@suse.de>
5075
+ PR tree-optimization/59715
5076
+ * tree-flow.h (split_critical_edges): Declare.
5077
+ * tree-cfg.c (split_critical_edges): Export.
5078
+ * tree-ssa-sink.c (execute_sink_code): Split critical edges.
5080
+2014-01-09 Richard Sandiford <rdsandiford@googlemail.com>
5082
+ * config/mips/mips.h (ISA_HAS_WSBH): Define.
5083
+ * config/mips/mips.md (UNSPEC_WSBH, UNSPEC_DSBH, UNSPEC_DSHD): New
5085
+ (bswaphi2, bswapsi2, bswapdi2, wsbh, dsbh, dshd): New patterns.
5087
+2014-01-09 Richard Sandiford <rdsandiford@googlemail.com>
5089
+ PR rtl-optimization/59137
5090
+ * reorg.c (steal_delay_list_from_target): Call update_block for
5092
+ (steal_delay_list_from_fallthrough, relax_delay_slots): Likewise.
5094
+2014-01-09 Richard Sandiford <rdsandiford@googlemail.com>
5097
+ 2012-10-07 Richard Sandiford <rdsandiford@googlemail.com>
5099
+ * config/mips/mips.c (mips_truncated_op_cost): New function.
5100
+ (mips_rtx_costs): Adjust test for BADDU.
5101
+ * config/mips/mips.md (*baddu_di<mode>): Push truncates to operands.
5103
+ 2012-10-02 Richard Sandiford <rdsandiford@googlemail.com>
5105
+ * config/mips/mips.md (*baddu_si_eb, *baddu_si_el): Merge into...
5106
+ (*baddu_si): ...this new pattern.
5108
+2014-01-09 Richard Biener <rguenther@suse.de>
5110
+ Backport from mainline
5111
+ 2013-11-18 Richard Biener <rguenther@suse.de>
5113
+ PR tree-optimization/59125
5114
+ PR tree-optimization/54570
5115
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): When inlining
5116
+ is not complete do not treat component-references with offset zero
5117
+ but different fields as equal.
5118
+ * tree-object-size.c: Include tree-phinodes.h and ssa-iterators.h.
5119
+ (compute_object_sizes): Apply TLC. Propagate the constant
5120
+ results into all uses and fold their stmts.
5121
+ * passes.def (pass_all_optimizations): Move pass_object_sizes
5122
+ after the first pass_forwprop and before pass_fre.
5124
+ 2013-12-03 Jakub Jelinek <jakub@redhat.com>
5126
+ PR tree-optimization/59362
5127
+ * tree-object-size.c (object_sizes): Change into array of
5128
+ vec<unsigned HOST_WIDE_INT>.
5129
+ (compute_builtin_object_size): Check computed bitmap for
5130
+ non-NULL instead of object_sizes. Call safe_grow on object_sizes
5131
+ vector if new SSA_NAMEs appeared.
5132
+ (init_object_sizes): Check computed bitmap for non-NULL.
5133
+ Call safe_grow on object_sizes elements instead of initializing
5135
+ (fini_object_sizes): Call release on object_sizes elements, don't
5138
+2014-01-09 Richard Earnshaw <rearnsha@arm.com>
5140
+ PR rtl-optimization/54300
5141
+ * regcprop.c (copyprop_hardreg_forward_1): Ensure any unused
5142
+ outputs in a single-set are killed from the value chains.
5144
+2014-01-09 Jakub Jelinek <jakub@redhat.com>
5146
+ PR rtl-optimization/59724
5147
+ * ifcvt.c (cond_exec_process_if_block): Don't call
5148
+ flow_find_head_matching_sequence with 0 longest_match.
5149
+ * cfgcleanup.c (flow_find_head_matching_sequence): Count even
5150
+ non-active insns if !stop_after.
5151
+ (try_head_merge_bb): Revert 2014-01-07 changes.
5153
+2014-01-09 Hans-Peter Nilsson <hp@axis.com>
5155
+ Backport from mainline
5156
+ 2013-12-23 Hans-Peter Nilsson <hp@axis.com>
5158
+ PR middle-end/59584
5159
+ * config/cris/predicates.md (cris_nonsp_register_operand):
5160
+ New define_predicate.
5161
+ * config/cris/cris.md: Replace register_operand with
5162
+ cris_nonsp_register_operand for destinations in all
5163
+ define_splits where a register is set more than once.
5165
+2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
5167
+ Backport from mainline
5168
+ 2013-12-25 H.J. Lu <hongjiu.lu@intel.com>
5171
+ * config/i386/i386.c (struct ptt): Add a field for processor name.
5172
+ (processor_target_table): Sync with processor_type. Add
5174
+ (cpu_names): Removed.
5175
+ (ix86_option_override_internal): Default x_ix86_tune_string
5176
+ to processor_target_table[TARGET_CPU_DEFAULT].name.
5177
+ (ix86_function_specific_print): Assert arch and tune <
5178
+ PROCESSOR_max. Use processor_target_table to print arch and
5180
+ * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to
5181
+ PROCESSOR_GENERIC32.
5182
+ (target_cpu_default): Removed.
5183
+ (processor_type): Reordered.
5185
+2014-01-08 Uros Bizjak <ubizjak@gmail.com>
5187
+ Backport from mainline
5188
+ 2014-01-05 Uros Bizjak <ubizjak@gmail.com>
5190
+ * config/i386/i386.c (ix86_data_alignment): Calculate max_align
5191
+ from prefetch_block tune setting.
5192
+ (nocona_cost): Correct size of prefetch block to 64.
5194
+2014-01-08 Martin Jambor <mjambor@suse.cz>
5197
+ * ipa-prop.c (ipa_compute_jump_functions): Bail out if not optimizing.
5198
+ (parm_preserved_before_stmt_p): Assume modification present when not
5201
+2014-01-07 John David Anglin <danglin@gcc.gnu.org>
5204
+ * config/pa/pa.c (pa_legitimate_address_p): Return false before reload
5205
+ for 14-bit register offsets when INT14_OK_STRICT is false.
5207
+2014-01-07 Roland Stigge <stigge@antcom.de>
5208
+ Michael Meissner <meissner@linux.vnet.ibm.com>
5211
+ * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
5212
+ Only check TFmode for SPE constants. Don't check TImode or TDmode.
5214
+2014-01-07 Jakub Jelinek <jakub@redhat.com>
5216
+ PR rtl-optimization/58668
5217
+ * cfgcleanup.c (flow_find_cross_jump): Don't count
5218
+ any jumps if dir_p is NULL. Remove p1 variable and make USE/CLOBBER
5219
+ check consistent with other places.
5220
+ (flow_find_head_matching_sequence): Don't count USE or CLOBBER insns.
5221
+ (try_head_merge_bb): Adjust for the flow_find_head_matching_sequence
5223
+ * ifcvt.c (count_bb_insns): Don't count USE or CLOBBER insns.
5225
+2014-01-07 Mike Stump <mikestump@comcast.net>
5226
+ Jakub Jelinek <jakub@redhat.com>
5229
+ * tree.h (struct tree_optimization_option): Change optabs
5230
+ type from unsigned char * to void *.
5231
+ * optabs.c (init_tree_optimization_optabs): Adjust
5232
+ TREE_OPTIMIZATION_OPTABS initialization.
5234
+2014-01-07 Jakub Jelinek <jakub@redhat.com>
5236
+ Backported from mainline
5237
+ 2013-12-16 Jakub Jelinek <jakub@redhat.com>
5239
+ PR middle-end/58956
5240
+ PR middle-end/59470
5241
+ * gimple.h (walk_stmt_load_store_addr_fn): New typedef.
5242
+ (walk_stmt_load_store_addr_ops, walk_stmt_load_store_ops): Use it
5243
+ for callback params.
5244
+ * gimple.c (walk_stmt_load_store_ops): Likewise.
5245
+ (walk_stmt_load_store_addr_ops): Likewise. Adjust all callback
5246
+ calls to supply the gimple operand containing the base tree
5247
+ as an extra argument.
5248
+ * tree-ssa-ter.c (find_ssaname, find_ssaname_in_store): New helper
5250
+ (find_replaceable_in_bb): For calls or GIMPLE_ASM, only set
5251
+ same_root_var if USE is used somewhere in the stores of the stmt.
5252
+ * ipa-prop.c (visit_ref_for_mod_analysis): Remove name of the stmt
5253
+ argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
5254
+ * ipa-pure-const.c (check_load, check_store, check_ipa_load,
5255
+ check_ipa_store): Likewise.
5256
+ * gimple.c (gimple_ior_addresses_taken_1): Likewise.
5257
+ * ipa-split.c (test_nonssa_use, mark_nonssa_use): Likewise.
5258
+ (verify_non_ssa_vars, visit_bb): Adjust their callers.
5259
+ * cfgexpand.c (add_scope_conflicts_1): Use
5260
+ walk_stmt_load_store_addr_fn type for visit variable.
5261
+ (visit_op, visit_conflict): Remove name of the stmt
5262
+ argument and ATTRIBUTE_UNUSED, add another unnamed tree argument.
5263
+ * tree-sra.c (asm_visit_addr): Likewise. Remove name of the data
5264
+ argument and ATTRIBUTE_UNUSED.
5265
+ * cgraphbuild.c (mark_address, mark_load, mark_store): Add another
5266
+ unnamed tree argument.
5268
+2014-01-03 Andreas Schwab <schwab@linux-m68k.org>
5270
+ * config/m68k/m68k.c (handle_move_double): Handle pushes with
5271
+ overlapping registers also for registers other than the stack
5274
+2014-01-03 Jakub Jelinek <jakub@redhat.com>
5277
+ * config/i386/i386.c (ix86_avoid_jump_mispredicts): Don't consider
5280
+2014-01-01 Jakub Jelinek <jakub@redhat.com>
5282
+ PR rtl-optimization/59647
5283
+ * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode
5284
+ new_rtx into UNSIGNED_FLOAT rtxes.
5286
+2013-12-28 Eric Botcazou <ebotcazou@adacore.com>
5288
+ * doc/invoke.texi (output file options): Document -fada-spec-parent.
5290
+2013-12-26 Uros Bizjak <ubizjak@gmail.com>
5292
+ * config/i386/driver-i386.c (decode_caches_intel): Add missing entries.
5294
+2013-12-20 Jakub Jelinek <jakub@redhat.com>
5297
+ Backported from mainline
5298
+ 2013-08-19 Dehao Chen <dehao@google.com>
5300
+ * value-prof.c (gimple_ic): Fix the bug of adding EH edge.
5302
+2013-12-19 James Greenhalgh <james.greenhalgh@arm.com>
5304
+ Backport from Mainline.
5305
+ 2013-05-01 James Greenhalgh <james.greenhalgh@arm.com>
5307
+ * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to...
5309
+ (cmhi): Rename to...
5311
+ * config/aarch64/aarch64-simd.md
5312
+ (simd_mode): Add SF.
5313
+ (aarch64_vcond_internal): Use new names for unsigned comparison insns.
5314
+ (aarch64_cm<optab><mode>): Rewrite to not use UNSPECs.
5315
+ * config/aarch64/aarch64.md (*cstore<mode>_neg): Rename to...
5316
+ (cstore<mode>_neg): ...This.
5317
+ * config/aarch64/iterators.md
5319
+ (unspec): Remove UNSPEC_CM<EQ, LE, LT, GE, GT, HS, HI, TST>.
5320
+ (COMPARISONS): New.
5321
+ (UCOMPARISONS): Likewise.
5322
+ (optab): Add missing comparisons.
5324
+ (cmp_1): Likewise.
5325
+ (cmp_2): Likewise.
5328
+ (VCMP_S): Likewise.
5329
+ (VCMP_U): Likewise.
5330
+ (V_cmp_result): Add DF, SF modes.
5331
+ (v_cmp_result): Likewise.
5333
+ (vmtype): Likewise.
5334
+ * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New.
5336
+ Partial Backport from mainline.
5337
+ 2013-05-01 James Greenhalgh <james.greenhalgh@arm.com>
5339
+ * config/aarch64/arm_neon.h
5340
+ (vc<eq, lt, le, gt, ge, tst><qsd>_<u><8,16,32,64>): Remap
5341
+ to builtins or C as appropriate.
5343
+2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
5344
+ Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
5346
+ Backport from mainline
5347
+ 2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
5348
+ * config/s390/s390.c (s390_hotpatch_trampoline_halfwords_default): New
5350
+ (s390_hotpatch_trampoline_halfwords_max): New constant
5351
+ (s390_hotpatch_trampoline_halfwords): New static variable
5352
+ (get_hotpatch_attribute): New function
5353
+ (s390_handle_hotpatch_attribute): New function
5354
+ (s390_attribute_table): New target specific attribute table to implement
5355
+ the hotpatch attribute
5356
+ (s390_option_override): Parse hotpatch options
5357
+ (s390_function_num_hotpatch_trampoline_halfwords): New function
5358
+ (s390_can_inline_p): Implement target hook to
5359
+ suppress hotpatching for explicitly inlined functions
5360
+ (s390_asm_output_function_label): Generate hotpatch prologue
5361
+ (TARGET_ATTRIBUTE_TABLE): Define to implement target attribute table
5362
+ (TARGET_CAN_INLINE_P): Define to implement target hook
5363
+ * config/s390/s390.opt (mhotpatch): New options -mhotpatch, -mhotpatch=
5364
+ * config/s390/s390-protos.h (s390_asm_output_function_label): Add
5366
+ * config/s390/s390.h (ASM_OUTPUT_FUNCTION_LABEL): Target specific
5367
+ function label generation for hotpatching
5368
+ (FUNCTION_BOUNDARY): Align functions to eight bytes
5369
+ * doc/extend.texi: Document hotpatch attribute
5370
+ * doc/invoke.texi: Document -mhotpatch option
5372
+2013-12-18 Eric Botcazou <ebotcazou@adacore.com>
5374
+ * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko.
5376
+2013-12-12 Vladimir Makarov <vmakarov@redhat.com>
5378
+ PR middle-end/59470
5379
+ * lra-coalesce.c (lra_coalesce): Invalidate inheritance pseudo
5380
+ values if necessary.
5382
+2013-12-12 Jakub Jelinek <jakub@redhat.com>
5385
+ * gimplify.c (omp_check_private): Add copyprivate argument, if it
5386
+ is true, don't check omp_privatize_by_reference.
5387
+ (gimplify_scan_omp_clauses): For OMP_CLAUSE_COPYPRIVATE verify
5388
+ decl is private in outer context. Adjust omp_check_private caller.
5390
+2013-12-10 Eric Botcazou <ebotcazou@adacore.com>
5392
+ PR rtl-optimization/58295
5393
+ * simplify-rtx.c (simplify_truncation): Restrict the distribution for
5394
+ WORD_REGISTER_OPERATIONS targets.
5396
+2013-12-10 Kai Tietz <ktietz@redhat.com>
5399
+ * config/i386/i386.c (ix86_expand_prologue): Address saved
5400
+ registers stack-relative, not via frame-pointer.
5402
+2013-12-09 Alan Modra <amodra@gmail.com>
5404
+ Apply from mainline
5405
+ 2013-12-05 Alan Modra <amodra@gmail.com>
5406
+ * configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for
5408
+ <recursive call for build != host>: Clear GMPINC. Don't bother
5410
+ * configure: Regenerate.
5412
+2013-12-08 Uros Bizjak <ubizjak@gmail.com>
5414
+ Backport from mainline
5415
+ 2013-12-06 Uros Bizjak <ubizjak@gmail.com>
5418
+ * config/i386/i386.c (type_natural_mode): Properly handle
5419
+ size 8 for !TARGET_64BIT.
5421
+2013-12-07 Ralf Corsépius <ralf.corsepius@rtems.org>
5423
+ * config.gcc (microblaze*-*-rtems*): Add TARGET_BIG_ENDIAN_DEFAULT.
5425
+2013-12-06 Jakub Jelinek <jakub@redhat.com>
5427
+ PR tree-optimization/59388
5428
+ * tree-ssa-reassoc.c (update_range_test): If op == range->exp,
5429
+ gimplify tem after stmt rather than before it.
5431
+2013-12-06 Oleg Endo <olegendo@gcc.gnu.org>
5433
+ Backport from mainline
5434
+ 2013-11-26 Oleg Endo <olegendo@gcc.gnu.org>
5438
+ * config/sh/sh.c (max_mov_insn_displacement, disp_addr_displacement):
5439
+ Prefix function names with 'sh_'. Make them non-static.
5440
+ * config/sh/sh-protos.h (sh_disp_addr_displacement,
5441
+ sh_max_mov_insn_displacement): Add declarations.
5442
+ * config/sh/constraints.md (Q): Reject QImode.
5443
+ (Sdd): Use match_code "mem".
5444
+ (Snd): Fix erroneous matching of non-memory operands.
5445
+ * config/sh/predicates.md (short_displacement_mem_operand): New
5447
+ (general_movsrc_operand): Disallow PC relative QImode loads.
5448
+ * config/sh/sh.md (*mov<mode>_reg_reg): Remove it.
5449
+ (*movqi, *movhi): Merge both insns into...
5450
+ (*mov<mode>): ... this new insn. Replace generic 'm' constraints with
5451
+ 'Snd' and 'Sdd' constraints. Calculate insn length dynamically based
5452
+ on the operand types.
5454
+2013-12-06 Richard Biener <rguenther@suse.de>
5456
+ Backport from mainline
5457
+ 2013-11-29 Richard Biener <rguenther@suse.de>
5459
+ PR tree-optimization/59334
5460
+ * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug
5461
+ in previous commit.
5463
+ 2013-11-28 Richard Biener <rguenther@suse.de>
5465
+ PR tree-optimization/59330
5466
+ * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify
5467
+ and fix delayed marking of free calls not necessary.
5469
+2013-12-06 Richard Biener <rguenther@suse.de>
5471
+ Backport from mainline
5472
+ 2013-11-27 Richard Biener <rguenther@suse.de>
5474
+ PR tree-optimization/59288
5475
+ * tree-vect-loop.c (get_initial_def_for_induction): Do not
5476
+ re-analyze the PHI but use STMT_VINFO_LOOP_PHI_EVOLUTION_PART.
5478
+ 2013-11-19 Richard Biener <rguenther@suse.de>
5480
+ PR tree-optimization/59164
5481
+ * tree-vect-loop.c (vect_analyze_loop_operations): Adjust
5482
+ check whether we can create an epilogue loop to reflect the
5483
+ cases where we create one.
5485
+ 2013-09-05 Richard Biener <rguenther@suse.de>
5487
+ PR tree-optimization/58137
5488
+ * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size):
5489
+ Do not create vectors of pointers.
5490
+ * tree-vect-loop.c (get_initial_def_for_induction): Use proper
5491
+ types for the components of the vector initializer.
5492
+ * tree-cfg.c (verify_gimple_assign_binary): Remove special-casing
5493
+ allowing pointer vectors with PLUS_EXPR/MINUS_EXPR.
5495
+2013-12-06 Oleg Endo <olegendo@gcc.gnu.org>
5499
+ * config/sh/sh.md (*cbranch_t): Check that there are no labels between
5500
+ the s1 insn and the testing insn. Remove REG_DEAD note from s1 insn.
5502
+2013-12-05 Richard Biener <rguenther@suse.de>
5504
+ Backport from mainline
5505
+ 2013-11-19 Richard Biener <rguenther@suse.de>
5507
+ PR middle-end/58956
5508
+ * tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding
5509
+ loads into stmts that may clobber it.
5511
+2013-12-04 Jakub Jelinek <jakub@redhat.com>
5513
+ PR rtl-optimization/58726
5514
+ * combine.c (force_to_mode): Fix comment typo. Don't destructively
5515
+ modify x for ROTATE, ROTATERT and IF_THEN_ELSE.
5517
+2013-12-04 Jakub Jelinek <jakub@redhat.com>
5518
+ Uros Bizjak <ubizjak@gmail.com>
5521
+ * config/i386/i386.c (ix86_legitimate_combined_insn): If for
5522
+ !TARGET_AVX there is misaligned MEM operand with vector mode
5523
+ and get_attr_ssememalign is 0, return false.
5524
+ (ix86_expand_special_args_builtin): Add get_pointer_alignment
5525
+ computed alignment and for non-temporal loads/stores also
5526
+ at least GET_MODE_ALIGNMENT as MEM_ALIGN.
5527
+ * config/i386/sse.md
5528
+ (<sse>_loadu<ssemodesuffix><avxsizesuffix>,
5529
+ <sse>_storeu<ssemodesuffix><avxsizesuffix>,
5530
+ <sse2>_loaddqu<avxsizesuffix>,
5531
+ <sse2>_storedqu<avxsizesuffix>, <sse3>_lddqu<avxsizesuffix>,
5532
+ sse_vmrcpv4sf2, sse_vmrsqrtv4sf2, sse2_cvtdq2pd, sse_movhlps,
5533
+ sse_movlhps, sse_storehps, sse_loadhps, sse_loadlps,
5534
+ *vec_interleave_highv2df, *vec_interleave_lowv2df,
5535
+ *vec_extractv2df_1_sse, sse2_loadhpd, sse2_loadlpd, sse2_movsd,
5536
+ sse4_1_<code>v8qiv8hi2, sse4_1_<code>v4qiv4si2,
5537
+ sse4_1_<code>v4hiv4si2, sse4_1_<code>v2qiv2di2,
5538
+ sse4_1_<code>v2hiv2di2, sse4_1_<code>v2siv2di2, sse4_2_pcmpestr,
5539
+ *sse4_2_pcmpestr_unaligned, sse4_2_pcmpestri, sse4_2_pcmpestrm,
5540
+ sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, *sse4_2_pcmpistr_unaligned,
5541
+ sse4_2_pcmpistri, sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Add
5542
+ ssememalign attribute.
5543
+ * config/i386/i386.md (ssememalign): New define_attr.
5545
+2013-12-03 Jakub Jelinek <jakub@redhat.com>
5547
+ PR middle-end/59011
5548
+ * gimplify.c (nonlocal_vla_vars): New variable.
5549
+ (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into
5550
+ nonlocal_vla_vars chain.
5551
+ (gimplify_body): Call declare_vars on nonlocal_vla_vars chain
5552
+ if outer_bind has DECL_INITIAL (current_function_decl) block.
5555
+ * optabs.c (emit_conditional_move): Save and restore
5556
+ pending_stack_adjust and stack_pointer_delta if cmove can't be used.
5558
+2013-12-02 Jakub Jelinek <jakub@redhat.com>
5560
+ PR tree-optimization/59358
5561
+ * tree-vrp.c (union_ranges): To check for the partially
5562
+ overlapping ranges or adjacent ranges, also compare *vr0max
5565
+2013-12-02 Richard Biener <rguenther@suse.de>
5567
+ PR tree-optimization/59139
5568
+ * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match
5569
+ code in get_val_for.
5570
+ (get_val_for): Use gcc_checking_asserts.
5572
+2013-11-27 Tom de Vries <tom@codesourcery.com>
5573
+ Marc Glisse <marc.glisse@inria.fr>
5575
+ PR middle-end/59037
5576
+ * fold-const.c (fold_indirect_ref_1): Don't create out-of-bounds
5578
+ * gimplify.c (gimple_fold_indirect_ref): Same.
5580
+2013-12-01 Eric Botcazou <ebotcazou@adacore.com>
5582
+ * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an
5585
+2013-12-01 Bernd Edlinger <bernd.edlinger@hotmail.de>
5587
+ * expr.c (emit_group_store): Fix off-by-one BITFIELD_END argument.
5589
+2013-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5591
+ Backport from mainline
5592
+ 2013-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5594
+ * config/arm/iterators.md (vrint_conds): New int attribute.
5595
+ * config/arm/vfp.md (<vrint_pattern><SDF:mode>2): Set conds attribute.
5596
+ (smax<mode>3): Likewise.
5597
+ (smin<mode>3): Likewise.
5599
+2013-11-28 Uros Bizjak <ubizjak@gmail.com>
5601
+ Backport from mainline
5602
+ 2013-11-27 Uros Bizjak <ubizjak@gmail.com>
5603
+ Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
5606
+ * gcc.target/i386/xop-frczX.c: New test.
5608
+2013-11-28 Terry Guo <terry.guo@arm.com>
5610
+ Backport mainline r205391
5611
+ 2013-11-26 Terry Guo <terry.guo@arm.com>
5613
+ * config/arm/arm.c (require_pic_register): Handle high pic base
5614
+ register for thumb-1.
5615
+ (arm_load_pic_register): Also initialize high pic base register.
5616
+ * doc/invoke.texi: Update documentation for option -mpic-register.
5618
+2013-11-27 Jakub Jelinek <jakub@redhat.com>
5620
+ Backported from mainline
5621
+ 2013-11-26 Jakub Jelinek <jakub@redhat.com>
5623
+ PR tree-optimization/59014
5624
+ * tree-vrp.c (register_edge_assert_for_1): Don't look
5625
+ through conversions from non-integral types or through
5626
+ narrowing conversions.
5628
+2013-11-27 Eric Botcazou <ebotcazou@adacore.com>
5630
+ PR middle-end/59138
5631
+ * expr.c (emit_group_store): Don't write past the end of the structure.
5632
+ (store_bit_field): Fix formatting.
5634
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5636
+ Backport from mainline
5637
+ 2013-09-17 Sebastian Huber <sebastian.huber@embedded-brains.de>
5639
+ * config/sparc/t-rtems: Add leon3 multilibs.
5641
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5643
+ Backport from mainline
5644
+ 2013-08-09 Eric Botcazou <ebotcazou@adacore.com>
5646
+ * configure.ac: Add GAS check for LEON instructions on SPARC.
5647
+ * configure: Regenerate.
5648
+ * config.in: Likewise.
5649
+ * config.gcc (with_cpu): Remove sparc-leon*-* and deal with LEON in the
5651
+ * config/sparc/sparc.opt (LEON, LEON3): New masks.
5652
+ * config/sparc/sparc.h (ASM_CPU32_DEFAULT_SPEC): Set to AS_LEON_FLAG
5653
+ for LEON or LEON3.
5654
+ (ASM_CPU_SPEC): Pass AS_LEON_FLAG if -mcpu=leon or -mcpu=leon3.
5655
+ (AS_LEON_FLAG): New macro.
5656
+ * config/sparc/sparc.c (sparc_option_override): Set MASK_LEON for leon
5657
+ and MASK_LEON3 for leon3 and unset them if HAVE_AS_LEON is not defined.
5658
+ Deal with LEON and LEON3 for the memory model.
5659
+ * config/sparc/sync.md (atomic_compare_and_swap<mode>): Enable if LEON3
5660
+ (atomic_compare_and_swap<mode>_1): Likewise.
5661
+ (*atomic_compare_and_swap<mode>_1): Likewise.
5663
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5665
+ Backport from mainline
5666
+ 2013-07-23 Eric Botcazou <ebotcazou@adacore.com>
5668
+ * doc/invoke.texi (SPARC Options): Document new leon3 processor value.
5670
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5672
+ Backport from mainline
5673
+ 2013-07-22 Eric Botcazou <ebotcazou@adacore.com>
5675
+ * config.gcc (sparc*-*-*): Accept leon3 processor.
5676
+ (sparc-leon*-*): Merge with sparc*-*-* and add leon3 support.
5677
+ * doc/invoke.texi (SPARC Options): Adjust -mfix-ut699 entry.
5678
+ * config/sparc/sparc-opts.h (enum processor_type): Add PROCESSOR_LEON3.
5679
+ * config/sparc/sparc.opt (enum processor_type): Add leon3.
5680
+ (mfix-ut699): Adjust comment.
5681
+ * config/sparc/sparc.h (TARGET_CPU_leon3): New define.
5682
+ (CPP_CPU32_DEFAULT_SPEC): Add leon3 support.
5683
+ (CPP_CPU_SPEC): Likewise.
5684
+ (ASM_CPU_SPEC): Likewise.
5685
+ * config/sparc/sparc.c (leon3_cost): New constant.
5686
+ (sparc_option_override): Add leon3 support.
5687
+ (mem_ref): New function.
5688
+ (sparc_gate_work_around_errata): Return true if -mfix-ut699 is enabled.
5689
+ (sparc_do_work_around_errata): Look into the instruction in the delay
5690
+ slot and adjust accordingly. Add fix for the data cache nullify issues
5691
+ of the UT699. Change insertion position for the NOP.
5692
+ * config/sparc/leon.md (leon_fpalu, leon_fpmds, write_buf): Delete.
5693
+ (leon3_load): New reservation.
5694
+ (leon_store): Bump latency to 2.
5695
+ (grfpu): New automaton.
5696
+ (grfpu_alu): New unit.
5697
+ (grfpu_ds): Likewise.
5698
+ (leon_fp_alu): Adjust.
5699
+ (leon_fp_mult): Delete.
5700
+ (leon_fp_div): Split into leon_fp_divs and leon_fp_divd.
5701
+ (leon_fp_sqrt): Split into leon_fp_sqrts and leon_fp_sqrtd.
5702
+ * config/sparc/sparc.md (cpu): Add leon3.
5703
+ * config/sparc/sync.md (atomic_exchangesi): Disable if -mfix-ut699.
5704
+ (swapsi): Likewise.
5705
+ (atomic_test_and_set): Likewise.
5706
+ (ldstub): Likewise.
5708
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5710
+ Backport from mainline
5711
+ 2013-04-10 Steven Bosscher <steven@gcc.gnu.org>
5713
+ * config/sparc/sparc.c: Include tree-pass.h.
5714
+ (TARGET_MACHINE_DEPENDENT_REORG): Do not redefine.
5715
+ (sparc_reorg): Rename to sparc_do_work_around_errata. Move to
5716
+ head of file. Change return type. Split off gate function.
5717
+ (sparc_gate_work_around_errata): New function.
5718
+ (pass_work_around_errata): New pass definition.
5719
+ (insert_pass_work_around_errata) New pass insert definition to
5720
+ insert pass_work_around_errata just after delayed-branch scheduling.
5721
+ (sparc_option_override): Insert the pass.
5722
+ * config/sparc/t-sparc (sparc.o): Add TREE_PASS_H dependence.
5724
+2013-11-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
5726
+ Backport from mainline
5727
+ 2013-05-28 Eric Botcazou <ebotcazou@adacore.com>
5729
+ * doc/invoke.texi (SPARC Options): Document -mfix-ut699.
5730
+ * builtins.c (expand_builtin_mathfn) <BUILT_IN_SQRT>: Try to widen the
5731
+ mode if the instruction isn't available in the original mode.
5732
+ * config/sparc/sparc.opt (mfix-ut699): New option.
5733
+ * config/sparc/sparc.md (muldf3_extend): Disable if -mfix-ut699.
5734
+ (divdf3): Turn into expander.
5735
+ (divdf3_nofix): New insn.
5736
+ (divdf3_fix): Likewise.
5737
+ (divsf3): Disable if -mfix-ut699.
5738
+ (sqrtdf2): Turn into expander.
5739
+ (sqrtdf2_nofix): New insn.
5740
+ (sqrtdf2_fix): Likewise.
5741
+ (sqrtsf2): Disable if -mfix-ut699.
5743
+2013-11-22 Eric Botcazou <ebotcazou@adacore.com>
5745
+ * print-rtl.c (print_rtx) <case MEM>: Output a space if no MEM_EXPR.
5747
+2013-11-21 Zhenqiang Chen <zhenqiang.chen@linaro.org>
5749
+ PR bootstrap/57683
5750
+ Backport from mainline: r197467 and r198999.
5751
+ 2013-04-03 Jeff Law <law@redhat.com>
5753
+ * Makefile.in (lra-constraints.o): Depend on $(OPTABS_H).
5754
+ (lra-eliminations.o): Likewise.
5756
+ 2013-05-16 Jeff Law <law@redhat.com>
5758
+ * Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H).
5760
+2013-11-20 Eric Botcazou <ebotcazou@adacore.com>
5763
+ * config/sparc/sparc.c (sparc_fold_builtin) <case CODE_FOR_pdist_vis>:
5764
+ Make sure neg2_ovf is set before being used.
5766
+2013-11-20 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
5767
+ Dominik Vogt <vogt@linux.vnet.ibm.com>
5769
+ Backport from mainline
5770
+ * config/s390/s390.c (s390_canonicalize_comparison): Don't fold
5771
+ int comparisons with an out of range condition code.
5772
+ (s390_optimize_nonescaping_tx): Skip empty BBs.
5773
+ Generate the new tbegin RTX when removing the FPR clobbers (with
5775
+ (s390_expand_tbegin): Fix the retry loop counter. Copy CC to the
5776
+ result before doing the retry calculations.
5777
+ (s390_init_builtins): Make tbegin "returns_twice" and tabort
5779
+ * config/s390/s390.md (UNSPECV_TBEGIN_TDB): New constant used for
5780
+ the TDB setting part of an tbegin.
5781
+ ("tbegin_1", "tbegin_nofloat_1"): Add a set for the TDB.
5782
+ ("tx_assist"): Set unused argument to an immediate zero instead of
5783
+ loading zero into a GPR and pass it as argument.
5784
+ * config/s390/htmxlintrin.h (__TM_simple_begin, __TM_begin):
5785
+ Remove inline and related attributes.
5786
+ (__TM_nesting_depth, __TM_is_user_abort, __TM_is_named_user_abort)
5787
+ (__TM_is_illegal, __TM_is_footprint_exceeded)
5788
+ (__TM_is_nested_too_deep, __TM_is_conflict): Fix format value
5791
+2013-11-19 Uros Bizjak <ubizjak@gmail.com>
5793
+ Backport from mainline
5794
+ 2013-11-18 Uros Bizjak <ubizjak@gmail.com>
5796
+ * config/i386/i386.c (ix86_decompose_address): Use REG_P instead of
5797
+ ix86_address_subreg_operand. Move subreg checks to
5798
+ ix86_validate_address_register. Move address override check to
5799
+ ix86_legitimate_address_p.
5800
+ (ix86_validate_address_register): New function.
5801
+ (ix86_legitimate_address_p): Call ix86_validate_address_register
5802
+ to validate base and index registers. Add address override check
5803
+ from ix86_decompose_address.
5804
+ (ix86_decompose_address): Remove.
5806
+ Backport from mainline
5807
+ 2013-11-17 Uros Bizjak <ubizjak@gmail.com>
5810
+ * config/i386/i386.c (ix86_address_subreg_operand): Do not
5811
+ reject non-integer subregs.
5812
+ (ix86_decompose_address): Do not reject invalid CONST_INT RTXes.
5813
+ Move check for invalid x32 constant addresses ...
5814
+ (ix86_legitimate_address_p): ... here.
5816
+2013-11-19 Richard Biener <rguenther@suse.de>
5818
+ Backport from mainline
5819
+ 2013-11-07 Richard Biener <rguenther@suse.de>
5821
+ * tree-dfa.c (get_ref_base_and_extent): Fix casting.
5823
+2013-11-19 Richard Biener <rguenther@suse.de>
5825
+ PR tree-optimization/57517
5826
+ * tree-predcom.c (combinable_refs_p): Verify the combination
5827
+ is always executed when the refs are.
5829
+2013-11-19 Richard Biener <rguenther@suse.de>
5831
+ Backport from mainline
5832
+ 2013-11-05 Richard Biener <rguenther@suse.de>
5834
+ PR middle-end/58941
5835
+ * tree-dfa.c (get_ref_base_and_extent): Merge common code
5836
+ in MEM_REF and TARGET_MEM_REF handling. Make sure to
5837
+ process trailing array detection before diving into the
5838
+ view-converted object (and possibly apply some extra offset).
5840
+2013-11-18 Richard Biener <rguenther@suse.de>
5842
+ Backport from mainline
5843
+ 2013-10-21 Richard Biener <rguenther@suse.de>
5845
+ PR tree-optimization/58794
5846
+ * fold-const.c (operand_equal_p): Compare FIELD_DECL operand
5847
+ of COMPONENT_REFs with OEP_CONSTANT_ADDRESS_OF left in place.
5849
+ 2013-10-21 Richard Biener <rguenther@suse.de>
5851
+ PR middle-end/58742
5852
+ * fold-const.c (fold_binary_loc): Fold ((T) (X /[ex] C)) * C
5853
+ to (T) X for sign-changing conversions (or no conversion).
5855
+ 2013-11-06 Richard Biener <rguenther@suse.de>
5857
+ PR tree-optimization/58653
5858
+ * tree-predcom.c (ref_at_iteration): Rewrite to generate
5860
+ (prepare_initializers_chain): Adjust.
5862
+ PR tree-optimization/59047
5863
+ * tree-predcom.c (ref_at_iteration): Handle bitfield accesses
5866
+ 2013-10-15 Richard Biener <rguenther@suse.de>
5868
+ PR tree-optimization/58143
5869
+ * tree-ssa-loop-im.c (arith_code_with_undefined_signed_overflow):
5871
+ (rewrite_to_defined_overflow): Likewise.
5872
+ (move_computations_dom_walker::before_dom): Rewrite stmts
5873
+ with undefined signed overflow that are not always executed
5874
+ into unsigned arithmetic.
5876
+2013-11-14 Uros Bizjak <ubizjak@gmail.com>
5878
+ Backport from mainline
5879
+ 2013-11-10 Uros Bizjak <ubizjak@gmail.com>
5881
+ * mode-switching.c (optimize_mode_switching): Mark block as
5882
+ nontransparent, if last_mode at block exit is different from no_mode.
5884
+ Backport from mainline
5885
+ 2013-11-06 Uros Bizjak <ubizjak@gmail.com>
5888
+ * config/i386/i386.c (ix86_avx_u128_mode_needed): Require
5889
+ AVX_U128_DIRTY mode for call_insn RTXes that use AVX256 registers.
5890
+ (ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY mode for call_insn
5891
+ RTXes that return in AVX256 register.
5893
+2013-11-14 Jakub Jelinek <jakub@redhat.com>
5894
+ Uros Bizjak <ubizjak@gmail.com>
5897
+ * config/i386/i386.md (*anddi_2): Only allow CCZmode if
5898
+ operands[2] satisfies_constraint_Z that might have bit 31 set.
5900
+2013-11-12 H.J. Lu <hongjiu.lu@intel.com>
5902
+ Backported from mainline
5903
+ 2013-11-12 H.J. Lu <hongjiu.lu@intel.com>
5906
+ * config/i386/i386.c (initial_ix86_tune_features): Set
5907
+ X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL and
5908
+ X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL for m_HASWELL.
5910
+2013-11-11 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
5912
+ Backported from mainline
5913
+ 2013-10-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
5916
+ * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage
5918
+2013-11-11 Jakub Jelinek <jakub@redhat.com>
5920
+ Backported from mainline
5921
+ 2013-11-06 Jakub Jelinek <jakub@redhat.com>
5923
+ PR middle-end/58970
5924
+ * expr.c (get_bit_range): Handle *offset == NULL_TREE.
5925
+ (expand_assignment): If *bitpos is negative, set *offset
5926
+ and adjust *bitpos, so that it is not negative.
5928
+ 2013-11-05 Jakub Jelinek <jakub@redhat.com>
5930
+ PR rtl-optimization/58997
5931
+ * loop-iv.c (iv_subreg): For IV_UNKNOWN_EXTEND, expect
5932
+ get_iv_value to be in iv->mode rather than iv->extend_mode.
5933
+ (iv_extend): Likewise. Otherwise, if iv->extend != extend,
5934
+ use lowpart_subreg on get_iv_value before calling simplify_gen_unary.
5935
+ * loop-unswitch.c (may_unswitch_on): Make sure op[i] is in the right
5938
+2013-11-10 Karlson2k <k2k@narod.ru>
5939
+ Kai Tietz <ktietz@redhat.com>
5943
+ * configure.ac: Adding for exported symbols check
5944
+ and for rdynamic-check executable-extension.
5945
+ * configure: Regenerated.
5947
+2013-11-07 H.J. Lu <hongjiu.lu@intel.com>
5950
+ * config/i386/i386.md (push peepholer/splitter): Use Pmode
5951
+ with stack_pointer_rtx.
5953
+2013-11-05 Uros Bizjak <ubizjak@gmail.com>
5955
+ * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos.
5957
+2013-11-05 Jakub Jelinek <jakub@redhat.com>
5959
+ PR tree-optimization/58984
5960
+ * ipa-prop.c (ipa_load_from_parm_agg_1): Add SIZE_P argument,
5961
+ set *SIZE_P if non-NULL on success.
5962
+ (ipa_load_from_parm_agg, ipa_analyze_indirect_call_uses): Adjust
5964
+ (ipcp_transform_function): Likewise. Punt if size of access
5965
+ is different from TYPE_SIZE on v->value's type.
5967
+2013-11-03 H.J. Lu <hongjiu.lu@intel.com>
5969
+ Backport from mainline
5970
+ 2013-10-12 H.J. Lu <hongjiu.lu@intel.com>
5973
+ * config/i386/i386.c (ix86_copy_addr_to_reg): New function.
5974
+ (ix86_expand_movmem): Replace copy_addr_to_reg with
5975
+ ix86_copy_addr_to_reg.
5976
+ (ix86_expand_setmem): Likewise.
5978
+2013-10-29 Uros Bizjak <ubizjak@gmail.com>
5980
+ Backport from mainline
5981
+ 2013-08-08 Richard Sandiford <rdsandiford@googlemail.com>
5983
+ PR rtl-optimization/58079
5984
+ * combine.c (combine_simplify_rtx): Avoid using SUBST if
5985
+ simplify_comparison has widened a comparison with an integer.
5987
+2013-10-29 Martin Jambor <mjambor@suse.cz>
5989
+ PR middle-end/58789
5990
+ Backport from mainline
5991
+ 2013-05-09 Martin Jambor <mjambor@suse.cz>
5994
+ * gimple-fold.c (canonicalize_constructor_val): Call
5995
+ cgraph_get_create_real_symbol_node instead of cgraph_get_create_node.
5997
+ Backport from mainline
5998
+ 2013-03-16 Jan Hubicka <jh@suse.cz>
6000
+ * cgraph.h (cgraph_get_create_real_symbol_node): Declare.
6001
+ * cgraph.c (cgraph_get_create_real_symbol_node): New function.
6002
+ * cgrpahbuild.c: Use cgraph_get_create_real_symbol_node instead
6003
+ of cgraph_get_create_node.
6004
+ * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
6006
+2013-10-28 Tom de Vries <tom@codesourcery.com>
6008
+ * cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn.
6009
+ Don't commit insertions after NOTE_INSN_FUNCTION_BEG.
6011
+2013-10-26 Uros Bizjak <ubizjak@gmail.com>
6013
+ Backport from mainline
6014
+ 2013-10-22 Uros Bizjak <ubizjak@gmail.com>
6017
+ * config/i386/i386.c (put_condition_code) <case GTU, case LEU>:
6018
+ Remove CCCmode handling.
6019
+ <case LTU>: Return 'c' suffix for CCCmode.
6020
+ <case GEU>: Return 'nc' suffix for CCCmode.
6021
+ (ix86_cc_mode) <case GTU, case LEU>: Do not generate overflow checks.
6022
+ * config/i386/i386.md (*sub<mode>3_cconly_overflow): Remove.
6023
+ (*sub<mode>3_cc_overflow): Ditto.
6024
+ (*subsi3_zext_cc_overflow): Ditto.
6026
+2013-10-26 Uros Bizjak <ubizjak@gmail.com>
6028
+ Backport from mainline
6029
+ 2013-10-19 Uros Bizjak <ubizjak@gmail.com>
6032
+ * config/i386/i386.c (ix86_function_value_regno): Add DX_REG,
6033
+ ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG
6034
+ and SI_REG for 64bit SYSV ABI targets.
6036
+2013-08-25 Richard Henderson <rth@twiddle.net>
6039
+ * optabs.c (maybe_emit_atomic_exchange): Use create_input_operand
6040
+ instead of create_convert_operand_to.
6041
+ (maybe_emit_sync_lock_test_and_set): Likewise.
6042
+ (expand_atomic_compare_and_swap): Likewise.
6043
+ (maybe_emit_compare_and_swap_exchange_loop): Don't convert_modes.
6045
+2013-10-25 Eric Botcazou <ebotcazou@adacore.com>
6047
+ PR rtl-optimization/58831
6048
+ * alias.c (init_alias_analysis): At the beginning of each iteration, set
6049
+ the reg_seen[N] bit if static_reg_base_value[N] is non-null.
6051
+2013-10-25 Eric Botcazou <ebotcazou@adacore.com>
6053
+ * recog.c (search_ofs): New static variable moved from...
6054
+ (peep2_find_free_register): ...here.
6055
+ (peephole2_optimize): Initialize it.
6057
+2013-10-24 David Edelsohn <dje.gcc@gmail.com>
6059
+ Backport from mainline
6060
+ 2013-10-23 David Edelsohn <dje.gcc@gmail.com>
6063
+ * config/rs6000/rs6000.md (mulsi3_internal1 and splitter): Add
6064
+ TARGET_32BIT final condition.
6065
+ (mulsi3_internal2 and splitter): Same.
6067
+2013-10-23 Tom de Vries <tom@codesourcery.com>
6069
+ PR tree-optimization/58805
6070
+ * tree-ssa-tail-merge.c (stmt_local_def): Add gimple_vdef check.
6072
+2013-10-23 Richard Biener <rguenther@suse.de>
6074
+ Backport from mainline
6075
+ 2013-06-24 Richard Biener <rguenther@suse.de>
6077
+ PR tree-optimization/57488
6078
+ * tree-ssa-pre.c (insert): Clear NEW sets before each iteration.
6080
+2013-10-16 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
6082
+ Backport from mainline
6083
+ 2013-10-16 Ganesh Gopalasubramanian
6084
+ <Ganesh.Gopalasubramanian@amd.com>
6086
+ * config/i386/i386.c (ix86_option_override_internal): Enable FMA4
6089
2013-10-16 Release Manager
6091
* GCC 4.8.2 released.
6092
@@ -639,7 +1779,7 @@
6093
2013-07-31 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
6095
Backport from mainline
6096
- 2013-03-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
6097
+ 2013-03-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
6099
* config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define.
6101
Index: gcc/testsuite/gcc.target/arm/thumb1-pic-single-base.c
6102
===================================================================
6103
--- a/src/gcc/testsuite/gcc.target/arm/thumb1-pic-single-base.c (.../tags/gcc_4_8_2_release)
6104
+++ b/src/gcc/testsuite/gcc.target/arm/thumb1-pic-single-base.c (.../branches/gcc-4_8-branch)
6106
+/* { dg-do compile } */
6107
+/* { dg-require-effective-target arm_thumb1_ok } */
6108
+/* { dg-options "-mthumb -fpic -msingle-pic-base" } */
6117
Index: gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64-1.c
6118
===================================================================
6119
--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64-1.c (.../tags/gcc_4_8_2_release)
6120
+++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64-1.c (.../branches/gcc-4_8-branch)
6122
+/* Test the `vst1Q_laneu64' ARM Neon intrinsic. */
6124
+/* Detect ICE in the case of unaligned memory address. */
6126
+/* { dg-do compile } */
6127
+/* { dg-require-effective-target arm_neon_ok } */
6128
+/* { dg-add-options arm_neon } */
6130
+#include "arm_neon.h"
6132
+unsigned char dummy_store[1000];
6137
+ uint8x16_t vdata = vld1q_u8 (addr);
6138
+ vst1q_lane_u64 ((uint64_t*) &dummy_store, vreinterpretq_u64_u8 (vdata), 0);
6142
+bar (uint64x2_t vdata)
6144
+ vdata = vld1q_lane_u64 ((uint64_t*) &dummy_store, vdata, 0);
6145
+ return vgetq_lane_u64 (vdata, 0);
6147
Index: gcc/testsuite/gcc.target/arm/thumb1-pic-high-reg.c
6148
===================================================================
6149
--- a/src/gcc/testsuite/gcc.target/arm/thumb1-pic-high-reg.c (.../tags/gcc_4_8_2_release)
6150
+++ b/src/gcc/testsuite/gcc.target/arm/thumb1-pic-high-reg.c (.../branches/gcc-4_8-branch)
6152
+/* { dg-do compile } */
6153
+/* { dg-require-effective-target arm_thumb1_ok } */
6154
+/* { dg-options "-mthumb -fpic -mpic-register=9" } */
6163
Index: gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
6164
===================================================================
6165
--- a/src/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c (.../tags/gcc_4_8_2_release)
6166
+++ b/src/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c (.../branches/gcc-4_8-branch)
6168
+/* { dg-do compile } */
6169
+/* { dg-options "-g -fPIC" } */
6172
+void a (void *x) { }
6176
+main (int argc) /* line 9. */
6178
+ if (argc == 12345) /* line 11. */
6188
+/* { dg-final { scan-assembler-not "\.loc 1 7 0" } } */
6189
+/* { dg-final { scan-assembler-not "\.loc 1 8 0" } } */
6190
+/* { dg-final { scan-assembler-not "\.loc 1 9 0" } } */
6192
+/* The loc at the start of the prologue. */
6193
+/* { dg-final { scan-assembler-times "\.loc 1 10 0" 1 } } */
6195
+/* The loc at the end of the prologue, with the first user line. */
6196
+/* { dg-final { scan-assembler-times "\.loc 1 11 0" 1 } } */
6197
Index: gcc/testsuite/gcc.target/arm/vrinta-ce.c
6198
===================================================================
6199
--- a/src/gcc/testsuite/gcc.target/arm/vrinta-ce.c (.../tags/gcc_4_8_2_release)
6200
+++ b/src/gcc/testsuite/gcc.target/arm/vrinta-ce.c (.../branches/gcc-4_8-branch)
6202
+/* { dg-do compile } */
6203
+/* { dg-require-effective-target arm_v8_vfp_ok } */
6204
+/* { dg-options "-O2 -marm -march=armv8-a" } */
6205
+/* { dg-add-options arm_v8_vfp } */
6207
+double foo (double a)
6210
+ return __builtin_round (a);
6215
+/* { dg-final { scan-assembler-times "vrinta.f64\td\[0-9\]+" 1 } } */
6217
Index: gcc/testsuite/gcc.target/arm/pr54300.C
6218
===================================================================
6219
--- a/src/gcc/testsuite/gcc.target/arm/pr54300.C (.../tags/gcc_4_8_2_release)
6220
+++ b/src/gcc/testsuite/gcc.target/arm/pr54300.C (.../branches/gcc-4_8-branch)
6222
+/* { dg-do run } */
6223
+/* { dg-require-effective-target arm_neon } */
6224
+/* { dg-options "-O2" } */
6225
+/* { dg-add-options arm_neon } */
6227
+#include <arm_neon.h>
6228
+#include <stdlib.h>
6230
+struct __attribute__ ((aligned(8))) _v16u8_ {
6232
+ _v16u8_( const int16x8_t &src) { val = vreinterpretq_u8_s16(src); }
6233
+ operator int16x8_t () const { return vreinterpretq_s16_u8(val); }
6235
+typedef struct _v16u8_ v16u8;
6237
+struct __attribute__ ((aligned(4))) _v8u8_ {
6239
+ _v8u8_( const uint8x8_t &src) { val = src; }
6240
+ operator int16x4_t () const { return vreinterpret_s16_u8(val); }
6242
+typedef struct _v8u8_ v8u8;
6244
+typedef v16u8 v8i16;
6245
+typedef int32x4_t v4i32;
6246
+typedef const short cv1i16;
6247
+typedef const unsigned char cv1u8;
6248
+typedef const v8i16 cv8i16;
6250
+static inline __attribute__((always_inline)) v8u8 zero_64(){ return vdup_n_u8( 0 ); }
6252
+static inline __attribute__((always_inline)) v8i16 loadlo_8i16( cv8i16* p ){
6253
+ return vcombine_s16( vld1_s16( (cv1i16 *)p ), zero_64() );
6255
+static inline __attribute__((always_inline)) v8i16 _loadlo_8i16( cv8i16* p, int offset ){
6256
+ return loadlo_8i16( (cv8i16*)(&((cv1u8*)p)[offset]) );
6259
+void __attribute__((noinline))
6260
+test(unsigned short *_Inp, int32_t *_Out,
6261
+ unsigned int s1v, unsigned int dv0,
6262
+ unsigned int smask_v)
6264
+ int32x4_t c = vdupq_n_s32(0);
6266
+ for(unsigned int sv=0 ; sv!=dv0 ; sv=(sv+s1v)&smask_v )
6269
+ s = vmovl_s16( vget_low_s16( _loadlo_8i16( (cv8i16*) _Inp, sv ) ) );
6270
+ c = vaddq_s32( c, s );
6272
+ vst1q_s32( _Out, c );
6277
+ unsigned short a[4] = {1, 2, 3, 4};
6278
+ int32_t b[4] = {0, 0, 0, 0};
6279
+ test(a, b, 1, 1, ~0);
6280
+ if (b[0] != 1 || b[1] != 2 || b[2] != 3 || b[3] != 4)
6283
Index: gcc/testsuite/gcc.target/arm/pr59826.c
6284
===================================================================
6285
--- a/src/gcc/testsuite/gcc.target/arm/pr59826.c (.../tags/gcc_4_8_2_release)
6286
+++ b/src/gcc/testsuite/gcc.target/arm/pr59826.c (.../branches/gcc-4_8-branch)
6288
+/* { dg-do compile } */
6289
+/* { dg-options "-mthumb -mcpu=cortex-m4 -fprefetch-loop-arrays -O2" } */
6291
+typedef struct genxWriter_rec * genxWriter;
6292
+typedef unsigned char * utf8;
6293
+typedef const unsigned char * constUtf8;
6295
+int genxScrubText(genxWriter w, constUtf8 in, utf8 out)
6298
+ constUtf8 last = in;
6302
+ int c = genxNextUnicodeChar(&in);
6310
+ if (!isXMLChar(w, c))
6323
Index: gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
6324
===================================================================
6325
--- a/src/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c (.../tags/gcc_4_8_2_release)
6326
+++ b/src/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c (.../branches/gcc-4_8-branch)
6328
+/* Test accuracy of long double division (glibc bug 15396). */
6329
+/* { dg-do run { target powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } */
6330
+/* { dg-options "-mlong-double-128" } */
6332
+extern void exit (int);
6333
+extern void abort (void);
6335
+volatile long double a = 0x1p-1024L;
6336
+volatile long double b = 0x3p-53L;
6337
+volatile long double r;
6338
+volatile long double expected = 0x1.55555555555555555555555555p-973L;
6344
+ /* Allow error up to 2ulp. */
6345
+ if (__builtin_fabsl (r - expected) > 0x1p-1073L)
6349
Index: gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c
6350
===================================================================
6351
--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c (.../tags/gcc_4_8_2_release)
6352
+++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c (.../branches/gcc-4_8-branch)
6354
/* { dg-do compile } */
6355
/* { dg-options "-O2" } */
6357
-#include "../../../config/aarch64/arm_neon.h"
6358
+#include <arm_neon.h>
6360
+/* Used to force a variable to a SIMD register. */
6361
+#define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \
6364
+ : /* No clobbers */);
6366
/* { dg-final { scan-assembler-times "\\tadd\\tx\[0-9\]+" 2 } } */
6371
test_vceqd_s64 (int64x1_t a, int64x1_t b)
6373
- return vceqd_s64 (a, b);
6377
+ res = vceqd_s64 (a, b);
6382
/* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
6385
test_vceqzd_s64 (int64x1_t a)
6387
- return vceqzd_s64 (a);
6390
+ res = vceqzd_s64 (a);
6395
/* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
6398
test_vcged_s64 (int64x1_t a, int64x1_t b)
6400
- return vcged_s64 (a, b);
6404
+ res = vcged_s64 (a, b);
6410
test_vcled_s64 (int64x1_t a, int64x1_t b)
6412
- return vcled_s64 (a, b);
6416
+ res = vcled_s64 (a, b);
6421
-/* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
6422
+/* Idiom recognition will cause this testcase not to generate
6423
+ the expected cmge instruction, so do not check for it. */
6426
test_vcgezd_s64 (int64x1_t a)
6428
- return vcgezd_s64 (a);
6431
+ res = vcgezd_s64 (a);
6436
/* { dg-final { scan-assembler-times "\\tcmhs\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
6439
test_vcged_u64 (uint64x1_t a, uint64x1_t b)
6441
- return vcged_u64 (a, b);
6445
+ res = vcged_u64 (a, b);
6450
/* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
6451
@@ -77,13 +112,23 @@
6453
test_vcgtd_s64 (int64x1_t a, int64x1_t b)
6455
- return vcgtd_s64 (a, b);
6459
+ res = vcgtd_s64 (a, b);
6465
test_vcltd_s64 (int64x1_t a, int64x1_t b)
6467
- return vcltd_s64 (a, b);
6471
+ res = vcltd_s64 (a, b);
6476
/* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
6479
test_vcgtzd_s64 (int64x1_t a)
6481
- return vcgtzd_s64 (a);
6484
+ res = vcgtzd_s64 (a);
6489
/* { dg-final { scan-assembler-times "\\tcmhi\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
6492
test_vcgtd_u64 (uint64x1_t a, uint64x1_t b)
6494
- return vcgtd_u64 (a, b);
6498
+ res = vcgtd_u64 (a, b);
6503
/* { dg-final { scan-assembler-times "\\tcmle\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
6504
@@ -107,15 +161,24 @@
6506
test_vclezd_s64 (int64x1_t a)
6508
- return vclezd_s64 (a);
6511
+ res = vclezd_s64 (a);
6516
-/* { dg-final { scan-assembler-times "\\tcmlt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
6517
+/* Idiom recognition will cause this testcase not to generate
6518
+ the expected cmlt instruction, so do not check for it. */
6521
test_vcltzd_s64 (int64x1_t a)
6523
- return vcltzd_s64 (a);
6526
+ res = vcltzd_s64 (a);
6531
/* { dg-final { scan-assembler-times "\\tdup\\tb\[0-9\]+, v\[0-9\]+\.b" 2 } } */
6532
@@ -179,13 +242,23 @@
6534
test_vtst_s64 (int64x1_t a, int64x1_t b)
6536
- return vtstd_s64 (a, b);
6540
+ res = vtstd_s64 (a, b);
6546
test_vtst_u64 (uint64x1_t a, uint64x1_t b)
6548
- return vtstd_u64 (a, b);
6552
+ res = vtstd_s64 (a, b);
6557
/* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */
6558
@@ -722,8 +795,11 @@
6559
return vrshld_u64 (a, b);
6562
-/* { dg-final { scan-assembler-times "\\tasr\\tx\[0-9\]+" 1 } } */
6563
+/* Other intrinsics can generate an asr instruction (vcltzd, vcgezd),
6564
+ so we cannot check scan-assembler-times. */
6566
+/* { dg-final { scan-assembler "\\tasr\\tx\[0-9\]+" } } */
6569
test_vshrd_n_s64 (int64x1_t a)
6571
Index: gcc/testsuite/gcc.target/i386/pr59405.c
6572
===================================================================
6573
--- a/src/gcc/testsuite/gcc.target/i386/pr59405.c (.../tags/gcc_4_8_2_release)
6574
+++ b/src/gcc/testsuite/gcc.target/i386/pr59405.c (.../branches/gcc-4_8-branch)
6576
+/* { dg-do run } */
6577
+/* { dg-options "-mmmx -mfpmath=387" } */
6579
+#include "mmx-check.h"
6581
+#include <mmintrin.h>
6583
+typedef float float32x2_t __attribute__ ((vector_size (8)));
6586
+foo32x2_be (float32x2_t x)
6595
+ float32x2_t b = { 0.0f, 1.0f };
6597
+ if (foo32x2_be (b) != 1.0f)
6600
Index: gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c
6601
===================================================================
6602
--- a/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c (.../tags/gcc_4_8_2_release)
6603
+++ b/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c (.../branches/gcc-4_8-branch)
6605
/* { dg-do compile { target lp64 } } */
6606
-/* { dg-options "-O2 -mavx -mabi=ms -mtune=generic -dp" } */
6607
+/* { dg-options "-O2 -mavx -mabi=ms -maccumulate-outgoing-args -dp" } */
6609
typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
6611
Index: gcc/testsuite/gcc.target/i386/pr54694.c
6612
===================================================================
6613
--- a/src/gcc/testsuite/gcc.target/i386/pr54694.c (.../tags/gcc_4_8_2_release)
6614
+++ b/src/gcc/testsuite/gcc.target/i386/pr54694.c (.../branches/gcc-4_8-branch)
6616
+/* { dg-do compile } */
6617
+/* { dg-options "-O" } */
6619
+register void *hfp __asm__("%ebp"); /* { dg-message "note: for" } */
6621
+extern void g(void *);
6623
+void f(int x) /* { dg-error "frame pointer required" } */
6625
+ g(__builtin_alloca(x));
6627
Index: gcc/testsuite/gcc.target/i386/pr59470.c
6628
===================================================================
6629
--- a/src/gcc/testsuite/gcc.target/i386/pr59470.c (.../tags/gcc_4_8_2_release)
6630
+++ b/src/gcc/testsuite/gcc.target/i386/pr59470.c (.../branches/gcc-4_8-branch)
6632
+/* PR middle-end/58956 */
6633
+/* PR middle-end/59470 */
6634
+/* { dg-do run } */
6635
+/* { dg-options "-O2" } */
6643
+ asm ("{movl $6, (%2); movl $1, %0|mov dword ptr [%2], 6; mov %0, 1}"
6644
+ : "=r" (d[c]) : "rm" (b), "r" (&a) : "memory");
6645
+ if (d[0] != 1 || d[6] != 0)
6646
+ __builtin_abort ();
6649
Index: gcc/testsuite/gcc.target/i386/pr59034-1.c
6650
===================================================================
6651
--- a/src/gcc/testsuite/gcc.target/i386/pr59034-1.c (.../tags/gcc_4_8_2_release)
6652
+++ b/src/gcc/testsuite/gcc.target/i386/pr59034-1.c (.../branches/gcc-4_8-branch)
6654
+/* { dg-do compile { target { ! { ia32 } } } } */
6655
+/* { dg-require-effective-target maybe_x32 } */
6656
+/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=short" } */
6658
+extern int foo(int, ...);
6660
+ long double l = 1.2345E6;
6664
Index: gcc/testsuite/gcc.target/i386/pr58690.c
6665
===================================================================
6666
--- a/src/gcc/testsuite/gcc.target/i386/pr58690.c (.../tags/gcc_4_8_2_release)
6667
+++ b/src/gcc/testsuite/gcc.target/i386/pr58690.c (.../branches/gcc-4_8-branch)
6669
+/* { dg-do compile { target { ! { ia32 } } } } */
6670
+/* { dg-require-effective-target maybe_x32 } */
6671
+/* { dg-options "-O2 -mx32 -maddress-mode=short" } */
6677
+extern __thread struct gomp_thread gomp_tls_data;
6681
+ __builtin_memset (&gomp_tls_data, '\0', sizeof (gomp_tls_data));
6683
Index: gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c
6684
===================================================================
6685
--- a/src/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c (.../tags/gcc_4_8_2_release)
6686
+++ b/src/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c (.../branches/gcc-4_8-branch)
6691
- double e [4] __attribute__ ((aligned (8))) = {0.0};
6692
+ double e [4] __attribute__ ((aligned (32))) = {0.0};
6694
u.x = _mm256_set_pd (39578.467285, 7856.342941, 85632.783567, 47563.234215);
6696
Index: gcc/testsuite/gcc.target/i386/pr9771-1.c
6697
===================================================================
6698
--- a/src/gcc/testsuite/gcc.target/i386/pr9771-1.c (.../tags/gcc_4_8_2_release)
6699
+++ b/src/gcc/testsuite/gcc.target/i386/pr9771-1.c (.../branches/gcc-4_8-branch)
6705
+/* main usually performs dynamic realignment of the stack in case
6706
+ _start would fail to properly align the stack, but for dynamic
6707
+ stack realignment we need frame pointer which is incompatible
6708
+ with -ffixed-ebp and the global register var. So, cheat here
6709
+ and hide from the compiler that main is really main. */
6710
+#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname)
6711
+#define ASMNAME2(prefix, cname) STRING (prefix) cname
6712
+#define STRING(x) #x
6713
+int real_main() __asm (ASMNAME ("main"));
6719
Index: gcc/testsuite/gcc.target/i386/pr57003.c
6720
===================================================================
6721
--- a/src/gcc/testsuite/gcc.target/i386/pr57003.c (.../tags/gcc_4_8_2_release)
6722
+++ b/src/gcc/testsuite/gcc.target/i386/pr57003.c (.../branches/gcc-4_8-branch)
6724
/* PR rtl-optimization/57003 */
6726
-/* { dg-options "-O2" } */
6727
+/* { dg-options "-O2 -maccumulate-outgoing-args" } */
6730
unsigned short *b, *c, *d;
6731
Index: gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c
6732
===================================================================
6733
--- a/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c (.../tags/gcc_4_8_2_release)
6734
+++ b/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c (.../branches/gcc-4_8-branch)
6736
/* { dg-do compile { target lp64 } } */
6737
-/* { dg-options "-O0 -mavx -mabi=ms -mtune=generic -dp" } */
6738
+/* { dg-options "-O0 -mavx -mabi=ms -maccumulate-outgoing-args -dp" } */
6740
typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
6742
Index: gcc/testsuite/gcc.target/i386/sse2-movapd-1.c
6743
===================================================================
6744
--- a/src/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c (.../tags/gcc_4_8_2_release)
6745
+++ b/src/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c (.../branches/gcc-4_8-branch)
6750
- double e[2] __attribute__ ((aligned (8))) = {2134.3343,1234.635654};
6751
+ double e[2] __attribute__ ((aligned (16))) = {2134.3343,1234.635654};
6755
Index: gcc/testsuite/gcc.target/i386/pr59021.c
6756
===================================================================
6757
--- a/src/gcc/testsuite/gcc.target/i386/pr59021.c (.../tags/gcc_4_8_2_release)
6758
+++ b/src/gcc/testsuite/gcc.target/i386/pr59021.c (.../branches/gcc-4_8-branch)
6760
+/* { dg-do compile } */
6761
+/* { dg-options "-O2 -mavx -mvzeroupper" } */
6763
+extern void abort (void);
6771
+typedef double v4df __attribute__ ((vector_size (32)));
6773
+extern int foo (v4df, int i1, int i2, int i3, int i4, int i5, struct S s);
6775
+void bar (v4df v, struct S s)
6777
+ int r = foo (v, 1, 2, 3, 4, 5, s);
6782
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
6783
Index: gcc/testsuite/gcc.target/i386/pr59034-2.c
6784
===================================================================
6785
--- a/src/gcc/testsuite/gcc.target/i386/pr59034-2.c (.../tags/gcc_4_8_2_release)
6786
+++ b/src/gcc/testsuite/gcc.target/i386/pr59034-2.c (.../branches/gcc-4_8-branch)
6788
+/* { dg-do compile { target { ! { ia32 } } } } */
6789
+/* { dg-require-effective-target maybe_x32 } */
6790
+/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=long" } */
6792
+extern int foo(int, ...);
6794
+ long double l = 1.2345E6;
6798
Index: gcc/testsuite/gcc.target/i386/pr59839.c
6799
===================================================================
6800
--- a/src/gcc/testsuite/gcc.target/i386/pr59839.c (.../tags/gcc_4_8_2_release)
6801
+++ b/src/gcc/testsuite/gcc.target/i386/pr59839.c (.../branches/gcc-4_8-branch)
6803
+/* PR target/59839 */
6804
+/* { dg-do compile } */
6805
+/* { dg-options "-O0 -mavx2" } */
6807
+#include <x86intrin.h>
6810
+test (const float *x)
6812
+ __m256i i = _mm256_set1_epi32 (1);
6813
+ __m256 d = _mm256_i32gather_ps (x, i, 1);
6815
Index: gcc/testsuite/gcc.target/i386/xop-frczX.c
6816
===================================================================
6817
--- a/src/gcc/testsuite/gcc.target/i386/xop-frczX.c (.../tags/gcc_4_8_2_release)
6818
+++ b/src/gcc/testsuite/gcc.target/i386/xop-frczX.c (.../branches/gcc-4_8-branch)
6820
+/* { dg-do run } */
6821
+/* { dg-require-effective-target xop } */
6822
+/* { dg-options "-O2 -mxop" } */
6824
+#include "xop-check.h"
6826
+#include <x86intrin.h>
6829
+check_mm_vmfrcz_sd (__m128d __A, __m128d __B)
6831
+ union128d a, b, c;
6836
+ c.x = _mm_frcz_sd (__A, __B);
6837
+ d[0] = b.a[0] - (int)b.a[0] ;
6839
+ if (check_union128d (c, d))
6844
+check_mm_vmfrcz_ss (__m128 __A, __m128 __B)
6851
+ c.x = _mm_frcz_ss (__A, __B);
6852
+ f[0] = b.a[0] - (int)b.a[0] ;
6856
+ if (check_union128 (c, f))
6867
+ for (i = 0; i < 4; i++)
6872
+ for (i = 0; i < 2; i++)
6875
+ d.a[i] = i + 7.987654321;
6877
+ check_mm_vmfrcz_ss (a.x, b.x);
6878
+ check_mm_vmfrcz_sd (c.x, d.x);
6880
Index: gcc/testsuite/gcc.target/i386/pr59625.c
6881
===================================================================
6882
--- a/src/gcc/testsuite/gcc.target/i386/pr59625.c (.../tags/gcc_4_8_2_release)
6883
+++ b/src/gcc/testsuite/gcc.target/i386/pr59625.c (.../branches/gcc-4_8-branch)
6885
+/* PR target/59625 */
6886
+/* { dg-do compile } */
6887
+/* { dg-options "-O2 -mtune=atom" } */
6892
+ asm goto ("" : : : : lab);
6893
+ asm goto ("" : : : : lab);
6894
+ asm goto ("" : : : : lab);
6895
+ asm goto ("" : : : : lab);
6896
+ asm goto ("" : : : : lab);
6897
+ asm goto ("" : : : : lab);
6898
+ asm goto ("" : : : : lab);
6899
+ asm goto ("" : : : : lab);
6900
+ asm goto ("" : : : : lab);
6901
+ asm goto ("" : : : : lab);
6902
+ asm goto ("" : : : : lab);
6903
+ asm goto ("" : : : : lab);
6904
+ asm goto ("" : : : : lab);
6905
+ asm goto ("" : : : : lab);
6906
+ asm goto ("" : : : : lab);
6907
+ asm goto ("" : : : : lab);
6908
+ asm goto ("" : : : : lab);
6909
+ asm goto ("" : : : : lab);
6910
+ asm goto ("" : : : : lab);
6911
+ asm goto ("" : : : : lab);
6917
+/* Verify we don't consider asm goto as a jump for four jumps limit
6918
+ optimization. asm goto doesn't have to contain a jump at all,
6919
+ the branching to labels can happen through different means. */
6920
+/* { dg-final { scan-assembler-not "(p2align\[^\n\r\]*\[\n\r]*\[^\n\r\]*){8}p2align" } } */
6921
Index: gcc/testsuite/gcc.target/i386/sse2-movapd-2.c
6922
===================================================================
6923
--- a/src/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c (.../tags/gcc_4_8_2_release)
6924
+++ b/src/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c (.../branches/gcc-4_8-branch)
6929
- double e[2] __attribute__ ((aligned (8))) = {0.0};
6930
+ double e[2] __attribute__ ((aligned (16))) = {0.0};
6932
u.x = _mm_set_pd (2134.3343,1234.635654);
6934
Index: gcc/testsuite/gcc.target/i386/pr58137.c
6935
===================================================================
6936
--- a/src/gcc/testsuite/gcc.target/i386/pr58137.c (.../tags/gcc_4_8_2_release)
6937
+++ b/src/gcc/testsuite/gcc.target/i386/pr58137.c (.../branches/gcc-4_8-branch)
6939
+/* { dg-do compile } */
6940
+/* { dg-options "-O3 -mavx2" } */
6942
+typedef unsigned int U32;
6949
+typedef struct sv SV;
6954
+typedef struct xrv XRV;
6956
+extern XRV * PL_xrv_root;
6961
+ register XRV* xrv;
6962
+ register XRV* xrvend;
6963
+ xrv = PL_xrv_root;
6964
+ xrvend = &xrv[200 / sizeof (XRV) - 1];
6965
+ while (xrv < xrvend)
6967
+ xrv->xrv_rv = (SV*)(xrv + 1);
6972
Index: gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c
6973
===================================================================
6974
--- a/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c (.../tags/gcc_4_8_2_release)
6975
+++ b/src/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c (.../branches/gcc-4_8-branch)
6977
/* { dg-do compile { target lp64 } } */
6978
-/* { dg-options "-O2 -mavx -mabi=ms -mtune=generic -dp" } */
6979
+/* { dg-options "-O2 -mavx -mabi=ms -maccumulate-outgoing-args -dp" } */
6981
typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
6983
Index: gcc/testsuite/gcc.target/i386/pr30315.c
6984
===================================================================
6985
--- a/src/gcc/testsuite/gcc.target/i386/pr30315.c (.../tags/gcc_4_8_2_release)
6986
+++ b/src/gcc/testsuite/gcc.target/i386/pr30315.c (.../branches/gcc-4_8-branch)
6988
/* { dg-do compile } */
6989
/* { dg-options "-O2" } */
6990
-/* { dg-final { scan-assembler-times "cmp" 4 } } */
6991
+/* { dg-final { scan-assembler-not "cmp" } } */
6993
extern void abort (void);
6997
#define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b)
6999
-#define MINUSCC(T, t) \
7000
-T minuscc##t (T a, T b) \
7002
- T difference = a - b; \
7003
- if (difference > a) \
7005
- return difference; \
7008
-#define DECCC(T, t) \
7009
-T deccc##t (T a, T b) \
7011
- T difference = a - b; \
7012
- if (difference > a) \
7014
- return difference; \
7017
-#define MINUSCCONLY(T, t) \
7018
-void minuscconly##t (T a, T b) \
7020
- T difference = a - b; \
7021
- if (difference > a) \
7025
#define TEST(T, t) \
7030
- MINUSCCONLY(T, t) \
7034
TEST (unsigned long, l)
7035
TEST (unsigned int, i)
7041
-#define MINUSCCZEXT \
7042
-unsigned long minuscczext (unsigned int a, unsigned int b) \
7044
- unsigned int difference = a - b; \
7045
- if (difference > a) \
7047
- return difference; \
7051
Index: gcc/testsuite/gcc.target/i386/pr43869.c
7052
===================================================================
7053
--- a/src/gcc/testsuite/gcc.target/i386/pr43869.c (.../tags/gcc_4_8_2_release)
7054
+++ b/src/gcc/testsuite/gcc.target/i386/pr43869.c (.../branches/gcc-4_8-branch)
7056
/* { dg-do compile { target lp64 } } */
7057
+/* { dg-options "-maccumulate-outgoing-args" } */
7059
int __attribute__((__noinline__))
7060
bugged(float f1, float f2, float f3, float f4,
7061
Index: gcc/testsuite/gcc.target/i386/pr43662.c
7062
===================================================================
7063
--- a/src/gcc/testsuite/gcc.target/i386/pr43662.c (.../tags/gcc_4_8_2_release)
7064
+++ b/src/gcc/testsuite/gcc.target/i386/pr43662.c (.../branches/gcc-4_8-branch)
7066
/* { dg-do compile { target lp64 } } */
7067
-/* { dg-options "-O2" } */
7068
+/* { dg-options "-O2 -maccumulate-outgoing-args" } */
7070
void __attribute__ ((ms_abi)) foo (void)
7072
Index: gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c
7073
===================================================================
7074
--- a/src/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c (.../tags/gcc_4_8_2_release)
7075
+++ b/src/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c (.../branches/gcc-4_8-branch)
7080
- double e [4] __attribute__ ((aligned (8))) = {41124.234,2344.2354,8653.65635,856.43576};
7081
+ double e [4] __attribute__ ((aligned (32))) = {41124.234,2344.2354,8653.65635,856.43576};
7085
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/pr38891.c
7086
===================================================================
7087
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/pr38891.c (.../tags/gcc_4_8_2_release)
7088
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/pr38891.c (.../branches/gcc-4_8-branch)
7090
/* Test for cross x86_64<->w64 abi standard calls.
7092
/* { dg-do compile } */
7093
-/* { dg-options "-mno-sse" } */
7094
+/* { dg-options "-mno-sse -maccumulate-outgoing-args" } */
7095
#include "callabi.h"
7098
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-1.c
7099
===================================================================
7100
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-1.c (.../tags/gcc_4_8_2_release)
7101
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-1.c (.../branches/gcc-4_8-branch)
7104
/* Origin: Kai Tietz <kai.tietz@onevision.com> */
7106
-/* { dg-options "-std=gnu99" } */
7107
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
7108
#include "callabi.h"
7110
extern __SIZE_TYPE__ strlen (const char *);
7111
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-2.c
7112
===================================================================
7113
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-2.c (.../tags/gcc_4_8_2_release)
7114
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-2.c (.../branches/gcc-4_8-branch)
7117
/* Origin: Kai Tietz <kai.tietz@onevision.com> */
7119
-/* { dg-options "-std=gnu99" } */
7120
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
7121
#include "callabi.h"
7123
extern void abort (void);
7124
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-3.c
7125
===================================================================
7126
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-3.c (.../tags/gcc_4_8_2_release)
7127
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-3.c (.../branches/gcc-4_8-branch)
7130
/* Origin: Kai Tietz <kai.tietz@onevision.com> */
7132
-/* { dg-options "-std=gnu99" } */
7133
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
7134
#include "callabi.h"
7136
extern void abort (void);
7137
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c
7138
===================================================================
7139
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c (.../tags/gcc_4_8_2_release)
7140
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c (.../branches/gcc-4_8-branch)
7142
/* Test for cross x86_64<->w64 abi va_list calls. */
7143
/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
7144
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
7145
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */
7146
/* { dg-additional-sources "vaarg-4b.c" } */
7148
extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
7149
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c
7150
===================================================================
7151
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c (.../tags/gcc_4_8_2_release)
7152
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c (.../branches/gcc-4_8-branch)
7154
/* Test for cross x86_64<->w64 abi va_list calls. */
7155
/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
7156
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
7157
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */
7158
/* { dg-additional-sources "vaarg-5b.c" } */
7160
extern void __attribute__ ((sysv_abi)) abort (void);
7161
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c
7162
===================================================================
7163
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c (.../tags/gcc_4_8_2_release)
7164
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c (.../branches/gcc-4_8-branch)
7166
/* Test for cross x86_64<->w64 abi va_list calls. */
7167
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
7168
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */
7172
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c
7173
===================================================================
7174
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c (.../tags/gcc_4_8_2_release)
7175
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c (.../branches/gcc-4_8-branch)
7177
/* Test for cross x86_64<->w64 abi va_list calls. */
7178
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
7179
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin -maccumulate-outgoing-args" } */
7183
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c
7184
===================================================================
7185
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c (.../tags/gcc_4_8_2_release)
7186
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-1.c (.../branches/gcc-4_8-branch)
7188
/* { dg-do compile } */
7189
-/* { dg-options "-O2 -mabi=sysv" } */
7190
+/* { dg-options "-O2 -mabi=sysv -maccumulate-outgoing-args" } */
7192
__attribute__ ((ms_abi))
7194
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c
7195
===================================================================
7196
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c (.../tags/gcc_4_8_2_release)
7197
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/leaf-2.c (.../branches/gcc-4_8-branch)
7199
/* { dg-do compile } */
7200
-/* { dg-options "-O2 -mabi=sysv" } */
7201
+/* { dg-options "-O2 -mabi=sysv -maccumulate-outgoing-args" } */
7203
extern int glb1, gbl2, gbl3;
7205
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c
7206
===================================================================
7207
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c (.../tags/gcc_4_8_2_release)
7208
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c (.../branches/gcc-4_8-branch)
7211
/* Origin: Kai Tietz <kai.tietz@onevision.com> */
7213
-/* { dg-options "-std=gnu99 -ffast-math" } */
7214
+/* { dg-options "-std=gnu99 -ffast-math -maccumulate-outgoing-args" } */
7215
#include "callabi.h"
7217
extern void abort (void);
7218
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c
7219
===================================================================
7220
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c (.../tags/gcc_4_8_2_release)
7221
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c (.../branches/gcc-4_8-branch)
7223
/* Test for cross x86_64<->w64 abi standard calls via variable. */
7224
/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
7225
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
7226
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */
7227
/* { dg-additional-sources "func-indirect-2b.c" } */
7229
extern void __attribute__ ((sysv_abi)) abort (void);
7230
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect.c
7231
===================================================================
7232
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect.c (.../tags/gcc_4_8_2_release)
7233
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect.c (.../branches/gcc-4_8-branch)
7236
/* Origin: Kai Tietz <kai.tietz@onevision.com> */
7238
-/* { dg-options "-std=gnu99 -ffast-math" } */
7239
+/* { dg-options "-std=gnu99 -ffast-math -maccumulate-outgoing-args" } */
7240
#include "callabi.h"
7242
extern void abort (void);
7243
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
7244
===================================================================
7245
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c (.../tags/gcc_4_8_2_release)
7246
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c (.../branches/gcc-4_8-branch)
7248
/* Test for cross x86_64<->w64 abi standard calls. */
7249
/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
7250
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
7251
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */
7252
/* { dg-additional-sources "func-2b.c" } */
7254
extern void __attribute__ ((sysv_abi)) abort (void);
7255
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c
7256
===================================================================
7257
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c (.../tags/gcc_4_8_2_release)
7258
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c (.../branches/gcc-4_8-branch)
7260
/* Test for cross x86_64<->w64 abi standard calls via variable. */
7261
-/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
7262
+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */
7264
typedef int (*func)(void *, char *, char *, short, long long);
7266
Index: gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c
7267
===================================================================
7268
--- a/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c (.../tags/gcc_4_8_2_release)
7269
+++ b/src/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c (.../branches/gcc-4_8-branch)
7271
/* Test for cross x86_64<->w64 abi standard calls. */
7272
-/* { dg-options "-mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
7273
+/* { dg-options "-mabi=ms -std=gnu99 -ffast-math -fno-builtin -maccumulate-outgoing-args" } */
7275
long double func_cross (long double a, double b, float c, long d, int e,
7277
Index: gcc/testsuite/gcc.target/s390/htm-xl-intrin-1.c
7278
===================================================================
7279
--- a/src/gcc/testsuite/gcc.target/s390/htm-xl-intrin-1.c (.../tags/gcc_4_8_2_release)
7280
+++ b/src/gcc/testsuite/gcc.target/s390/htm-xl-intrin-1.c (.../branches/gcc-4_8-branch)
7282
-/* This checks the availability of the XL compiler intrinsics for
7283
- transactional execution with the expected prototypes. */
7285
-/* { dg-do compile } */
7286
-/* { dg-options "-O3 -march=zEC12 -mzarch" } */
7288
-#include <htmxlintrin.h>
7296
- struct __htm_tdb *tdb_struct;
7297
- void * const tdb = tdb_struct;
7299
- unsigned char code;
7301
- result = __TM_simple_begin ();
7302
- result = __TM_begin (tdb);
7303
- result = __TM_end ();
7305
- __TM_named_abort (42);
7306
- __TM_non_transactional_store (&g, 42);
7307
- result = __TM_nesting_depth (tdb);
7309
- result = __TM_is_user_abort (tdb);
7310
- result = __TM_is_named_user_abort (tdb, &code);
7311
- result = __TM_is_illegal (tdb);
7312
- result = __TM_is_footprint_exceeded (tdb);
7313
- result = __TM_is_nested_too_deep (tdb);
7314
- result = __TM_is_conflict (tdb);
7315
- result = __TM_is_failure_persistent (result);
7316
- result = __TM_failure_address (tdb);
7317
- result = __TM_failure_code (tdb);
7319
Index: gcc/testsuite/gcc.target/s390/htm-1.c
7320
===================================================================
7321
--- a/src/gcc/testsuite/gcc.target/s390/htm-1.c (.../tags/gcc_4_8_2_release)
7322
+++ b/src/gcc/testsuite/gcc.target/s390/htm-1.c (.../branches/gcc-4_8-branch)
7324
-/* This checks the availability of the low-level builtins introduced
7325
- for transactional execution. */
7327
-/* { dg-do compile } */
7328
-/* { dg-options "-O3 -march=zEC12 -mzarch" } */
7330
-#include <stdint.h>
7331
-#include <htmintrin.h>
7335
-struct __htm_tdb global_tdb;
7338
-foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
7344
- cc = __builtin_tbegin (0);
7345
- cc = __builtin_tbegin (tdb);
7346
- cc = __builtin_tbegin (&global_tdb);
7348
- cc = __builtin_tbegin_nofloat (0);
7349
- cc = __builtin_tbegin_nofloat (&global_tdb);
7351
- cc = __builtin_tbegin_retry (0, 42);
7352
- cc = __builtin_tbegin_retry (0, reg);
7353
- cc = __builtin_tbegin_retry (0, *mem);
7354
- cc = __builtin_tbegin_retry (0, global);
7355
- cc = __builtin_tbegin_retry (tdb, 42);
7356
- cc = __builtin_tbegin_retry (&global_tdb, 42);
7358
- cc = __builtin_tbegin_retry_nofloat (0, 42);
7359
- cc = __builtin_tbegin_retry_nofloat (0, reg);
7360
- cc = __builtin_tbegin_retry_nofloat (0, *mem);
7361
- cc = __builtin_tbegin_retry_nofloat (0, global);
7362
- cc = __builtin_tbegin_retry_nofloat (&global_tdb, 42);
7364
- __builtin_tbeginc ();
7366
- n = __builtin_tx_nesting_depth();
7368
- __builtin_non_tx_store(&g, 23);
7369
- __builtin_non_tx_store(mem64, 23);
7370
- __builtin_non_tx_store(&g, reg);
7371
- __builtin_non_tx_store(&g, *mem);
7372
- __builtin_non_tx_store(&g, global);
7374
- __builtin_tabort (42 + 255);
7375
- __builtin_tabort (reg);
7376
- /* { dg-final { scan-assembler-times "tabort\t255" 1 } } */
7377
- __builtin_tabort (reg + 255);
7378
- __builtin_tabort (*mem);
7379
- __builtin_tabort (global);
7380
- /* Here global + 255 gets reloaded into a reg. Better would be to
7381
- just reload global or *mem and get the +255 for free as address
7383
- __builtin_tabort (*mem + 255);
7384
- __builtin_tabort (global + 255);
7388
- __builtin_tx_assist (23);
7389
- __builtin_tx_assist (reg);
7390
- __builtin_tx_assist (*mem);
7391
- __builtin_tx_assist (global);
7394
-/* Make sure the tdb NULL argument ends up as immediate value in the
7396
-/* { dg-final { scan-assembler-times "tbegin\t0," 10 } } */
7397
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c
7398
===================================================================
7399
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c (.../tags/gcc_4_8_2_release)
7400
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c (.../branches/gcc-4_8-branch)
7402
+/* Functional tests for the function hotpatching feature. */
7404
+/* { dg-do run } */
7405
+/* { dg-options "-O3 -mzarch -mhotpatch" } */
7411
+ printf("hello, world!\n");
7414
+inline void hp2(void)
7416
+ printf("hello, world!\n");
7419
+__attribute__ ((always_inline))
7420
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
7422
+ printf("hello, world!\n");
7423
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
7429
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c
7430
===================================================================
7431
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c (.../tags/gcc_4_8_2_release)
7432
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c (.../branches/gcc-4_8-branch)
7434
+/* Functional tests for the function hotpatching feature. */
7436
+/* { dg-do run } */
7437
+/* { dg-options "-O3 -mzarch -mhotpatch=0" } */
7443
+ printf("hello, world!\n");
7446
+inline void hp2(void)
7448
+ printf("hello, world!\n");
7451
+__attribute__ ((always_inline))
7452
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
7454
+ printf("hello, world!\n");
7455
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
7461
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c
7462
===================================================================
7463
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c (.../tags/gcc_4_8_2_release)
7464
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c (.../branches/gcc-4_8-branch)
7466
+/* Functional tests for the function hotpatching feature. */
7468
+/* { dg-do run } */
7469
+/* { dg-options "-O3 -mzarch -mhotpatch=1" } */
7475
+ printf("hello, world!\n");
7478
+inline void hp2(void)
7480
+ printf("hello, world!\n");
7483
+__attribute__ ((always_inline))
7484
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
7486
+ printf("hello, world!\n");
7487
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
7493
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c
7494
===================================================================
7495
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c (.../tags/gcc_4_8_2_release)
7496
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c (.../branches/gcc-4_8-branch)
7498
+/* Functional tests for the function hotpatching feature. */
7500
+/* { dg-do compile } */
7501
+/* { dg-options "-O3 -mzarch -mhotpatch=-1" } */
7508
+/* { dg-excess-errors "argument to '-mhotpatch=' should be a non-negative integer" } */
7509
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c
7510
===================================================================
7511
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c (.../tags/gcc_4_8_2_release)
7512
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c (.../branches/gcc-4_8-branch)
7514
+/* Functional tests for the function hotpatching feature. */
7516
+/* { dg-do compile } */
7517
+/* { dg-options "-O3 -mzarch -mhotpatch=1000000" } */
7523
+ printf("hello, world!\n");
7526
+__attribute__ ((hotpatch(1000000)))
7529
+ printf("hello, world!\n");
7532
+__attribute__ ((hotpatch(1000001)))
7534
+{ /* { dg-error "requested 'hotpatch' attribute is not a non-negative integer constant or too large .max. 1000000." } */
7535
+ printf("hello, world!\n");
7542
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c
7543
===================================================================
7544
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c (.../tags/gcc_4_8_2_release)
7545
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c (.../branches/gcc-4_8-branch)
7547
+/* Functional tests for the function hotpatching feature. */
7549
+/* { dg-do compile } */
7550
+/* { dg-options "-O3 -mzarch -mhotpatch=1000001" } */
7557
+/* { dg-excess-errors "argument to '-mhotpatch=' is too large .max. 1000000." } */
7558
Index: gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c
7559
===================================================================
7560
--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c (.../tags/gcc_4_8_2_release)
7561
+++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c (.../branches/gcc-4_8-branch)
7563
+/* This checks the availability of the low-level builtins introduced
7564
+ for transactional execution. */
7566
+/* { dg-do compile } */
7567
+/* { dg-require-effective-target htm } */
7568
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
7570
+#include <stdint.h>
7571
+#include <htmintrin.h>
7575
+struct __htm_tdb global_tdb;
7578
+foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
7584
+ __builtin_tbegin ((void *)0);
7585
+ __builtin_tbegin ((void *)-99999);
7586
+ __builtin_tbegin ((void *)99999);
7587
+ while (__builtin_tbegin ((void *)0) != 0)
7590
+ cc = __builtin_tbegin ((void *)0x12345678);
7591
+ cc = __builtin_tbegin (tdb);
7592
+ cc = __builtin_tbegin (&global_tdb);
7593
+ cc = __builtin_tbegin ((void *)(long long)(reg + 0x12345678));
7594
+ cc = __builtin_tbegin ((void *)(long long)(reg));
7596
+ __builtin_tbegin_nofloat ((void *)0);
7597
+ __builtin_tbegin_nofloat ((void *)-99999);
7598
+ __builtin_tbegin_nofloat ((void *)99999);
7599
+ cc = __builtin_tbegin_nofloat ((void *)0x12345678);
7600
+ cc = __builtin_tbegin_nofloat (tdb);
7601
+ cc = __builtin_tbegin_nofloat (&global_tdb);
7602
+ cc = __builtin_tbegin_nofloat ((void *)(long long)(reg + 0x12345678));
7603
+ cc = __builtin_tbegin_nofloat ((void *)(long long)(reg));
7605
+ __builtin_tbegin_retry ((void *)0, 0);
7606
+ cc = __builtin_tbegin_retry ((void *)0, 1);
7607
+ cc = __builtin_tbegin_retry ((void *)0, -1);
7608
+ cc = __builtin_tbegin_retry ((void *)0, 42);
7609
+ cc = __builtin_tbegin_retry ((void *)0, reg);
7610
+ cc = __builtin_tbegin_retry ((void *)0, *mem);
7611
+ cc = __builtin_tbegin_retry ((void *)0, global);
7612
+ cc = __builtin_tbegin_retry (tdb, 42);
7613
+ cc = __builtin_tbegin_retry (&global_tdb, 42);
7614
+ cc = __builtin_tbegin_retry ((void *)0x12345678, global);
7615
+ cc = __builtin_tbegin_retry (
7616
+ (void *)(long long) (reg + 0x12345678), global + 1);
7617
+ cc = __builtin_tbegin_retry (
7618
+ (void *)(long long)(reg), global - 1);
7620
+ __builtin_tbegin_retry_nofloat ((void *)0, 0);
7621
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, 1);
7622
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, -1);
7623
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, 42);
7624
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, reg);
7625
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, *mem);
7626
+ cc = __builtin_tbegin_retry_nofloat ((void *)0, global);
7627
+ cc = __builtin_tbegin_retry_nofloat (tdb, 42);
7628
+ cc = __builtin_tbegin_retry_nofloat (&global_tdb, 42);
7629
+ cc = __builtin_tbegin_retry_nofloat ((void *)0x12345678, global);
7630
+ cc = __builtin_tbegin_retry_nofloat (
7631
+ (void *)(long long) (reg + 0x12345678), global + 1);
7632
+ cc = __builtin_tbegin_retry_nofloat (
7633
+ (void *)(long long)(reg), global - 1);
7635
+ __builtin_tbeginc ();
7637
+ __builtin_tx_nesting_depth ();
7638
+ n = __builtin_tx_nesting_depth ();
7640
+ __builtin_non_tx_store (mem64, 0);
7642
+ const uint64_t val_var = 0x1122334455667788;
7644
+ __builtin_non_tx_store (mem64, val_var);
7646
+ __builtin_non_tx_store (mem64, (uint64_t)reg);
7647
+ __builtin_non_tx_store (mem64, g);
7648
+ __builtin_non_tx_store ((uint64_t *)0, 0);
7649
+ __builtin_non_tx_store ((uint64_t *)0x12345678, 0);
7650
+ __builtin_non_tx_store (&g, 23);
7651
+ __builtin_non_tx_store (&g, reg);
7652
+ __builtin_non_tx_store (&g, *mem);
7653
+ __builtin_non_tx_store (&g, global);
7657
+ __builtin_tx_assist (0);
7658
+ __builtin_tx_assist (1);
7659
+ __builtin_tx_assist (reg);
7660
+ __builtin_tx_assist (*mem);
7661
+ __builtin_tx_assist (global);
7664
+/* The taborts must go into separate function since they are
7670
+ __builtin_tabort (256);
7676
+ __builtin_tabort (reg);
7682
+ /* { dg-final { scan-assembler-times "tabort\t255" 1 } } */
7683
+ __builtin_tabort (reg + 255);
7689
+ __builtin_tabort (*mem);
7695
+ __builtin_tabort (global);
7701
+ /* Here global + 255 gets reloaded into a reg. Better would be to
7702
+ just reload global or *mem and get the +255 for free as address
7704
+ __builtin_tabort (*mem + 255);
7710
+ __builtin_tabort (global + 255);
7716
+ __builtin_tabort (-1);
7720
+/* Make sure the tdb NULL argument ends up as immediate value in the
7722
+/* { dg-final { scan-assembler-times "tbegin\t0," 17 } } */
7723
+/* { dg-final { scan-assembler-times "tbegin\t" 41 } } */
7724
+/* Check number of occurences of certain instructions. */
7725
+/* { dg-final { scan-assembler-times "tbeginc\t" 1 } } */
7726
+/* { dg-final { scan-assembler-times "tabort\t" 8 } } */
7727
+/* { dg-final { scan-assembler "ppa\t" } } */
7728
Index: gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c
7729
===================================================================
7730
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c (.../tags/gcc_4_8_2_release)
7731
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c (.../branches/gcc-4_8-branch)
7733
+/* Functional tests for the function hotpatching feature. */
7735
+/* { dg-do run } */
7736
+/* { dg-options "-O3 -mzarch -mno-hotpatch" } */
7740
+__attribute__ ((hotpatch))
7743
+ printf("hello, world!\n");
7746
+__attribute__ ((hotpatch))
7747
+inline void hp2(void)
7749
+ printf("hello, world!\n");
7752
+__attribute__ ((hotpatch))
7753
+__attribute__ ((always_inline))
7754
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
7756
+ printf("hello, world!\n");
7757
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
7759
+__attribute__ ((hotpatch(0)))
7762
+ printf("hello, world!\n");
7765
+__attribute__ ((hotpatch(0)))
7766
+inline void hp5(void)
7768
+ printf("hello, world!\n");
7771
+__attribute__ ((hotpatch(0)))
7772
+__attribute__ ((always_inline))
7773
+void hp6(void) /* { dg-warning "always_inline function might not be inlinable" } */
7775
+ printf("hello, world!\n");
7776
+} /* { dg-warning "function 'hp6' with the 'always_inline' attribute is not hotpatchable" } */
7778
+__attribute__ ((hotpatch(1)))
7781
+ printf("hello, world!\n");
7784
+__attribute__ ((hotpatch(1)))
7785
+inline void hp8(void)
7787
+ printf("hello, world!\n");
7790
+__attribute__ ((hotpatch(1)))
7791
+__attribute__ ((always_inline))
7792
+void hp9(void) /* { dg-warning "always_inline function might not be inlinable" } */
7794
+ printf("hello, world!\n");
7795
+} /* { dg-warning "function 'hp9' with the 'always_inline' attribute is not hotpatchable" } */
7801
Index: gcc/testsuite/gcc.target/s390/htm-builtins-compile-2.c
7802
===================================================================
7803
--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-2.c (.../tags/gcc_4_8_2_release)
7804
+++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-2.c (.../branches/gcc-4_8-branch)
7806
+/* { dg-do compile } */
7807
+/* { dg-require-effective-target htm } */
7808
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
7810
+void must_not_compile1 (void)
7812
+ __builtin_tabort (0); /* { dg-error "Invalid transaction abort code:" } */
7815
+void must_not_compile2 (void)
7817
+ __builtin_tabort (255); /* { dg-error "Invalid transaction abort code:" } */
7819
Index: gcc/testsuite/gcc.target/s390/htm-builtins-compile-3.c
7820
===================================================================
7821
--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-3.c (.../tags/gcc_4_8_2_release)
7822
+++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-compile-3.c (.../branches/gcc-4_8-branch)
7824
+/* This checks the availability of the XL compiler intrinsics for
7825
+ transactional execution with the expected prototypes. */
7827
+/* { dg-do compile } */
7828
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
7830
+#include <htmxlintrin.h>
7838
+ struct __htm_tdb *tdb_struct;
7839
+ void * const tdb = tdb_struct;
7841
+ unsigned char code;
7843
+ result = __TM_simple_begin ();
7844
+ result = __TM_begin (tdb);
7845
+ result = __TM_end ();
7847
+ __TM_named_abort (42);
7848
+ __TM_non_transactional_store (&g, 42);
7849
+ result = __TM_nesting_depth (tdb);
7851
+ result = __TM_is_user_abort (tdb);
7852
+ result = __TM_is_named_user_abort (tdb, &code);
7853
+ result = __TM_is_illegal (tdb);
7854
+ result = __TM_is_footprint_exceeded (tdb);
7855
+ result = __TM_is_nested_too_deep (tdb);
7856
+ result = __TM_is_conflict (tdb);
7857
+ result = __TM_is_failure_persistent (result);
7858
+ result = __TM_failure_address (tdb);
7859
+ result = __TM_failure_code (tdb);
7861
Index: gcc/testsuite/gcc.target/s390/s390.exp
7862
===================================================================
7863
--- a/src/gcc/testsuite/gcc.target/s390/s390.exp (.../tags/gcc_4_8_2_release)
7864
+++ b/src/gcc/testsuite/gcc.target/s390/s390.exp (.../branches/gcc-4_8-branch)
7866
# Load support procs.
7869
+# Return 1 if htm (etnd - extract nesting depth) instructions can be
7871
+proc check_effective_target_htm { } {
7872
+ if { ![check_runtime s390_check_htm [subst {
7875
+ unsigned int nd = 77;
7876
+ asm (".insn rre,0xb2ec0000,%0,0" : "=d" (nd));
7879
+ }]] } { return 0 } else { return 1 }
7882
# If a testcase doesn't have special options, use these.
7883
global DEFAULT_CFLAGS
7884
if ![info exists DEFAULT_CFLAGS] then {
7885
Index: gcc/testsuite/gcc.target/s390/hotpatch-1.c
7886
===================================================================
7887
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-1.c (.../tags/gcc_4_8_2_release)
7888
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-1.c (.../branches/gcc-4_8-branch)
7890
+/* Functional tests for the function hotpatching feature. */
7892
+/* { dg-do run } */
7893
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
7899
+ printf("hello, world!\n");
7907
+/* Check number of occurences of certain instructions. */
7908
+/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */
7909
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
7910
Index: gcc/testsuite/gcc.target/s390/hotpatch-2.c
7911
===================================================================
7912
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-2.c (.../tags/gcc_4_8_2_release)
7913
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-2.c (.../branches/gcc-4_8-branch)
7915
+/* Functional tests for the function hotpatching feature. */
7917
+/* { dg-do run } */
7918
+/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */
7924
+ printf("hello, world!\n");
7932
+/* Check number of occurences of certain instructions. */
7933
+/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
7934
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
7935
Index: gcc/testsuite/gcc.target/s390/hotpatch-3.c
7936
===================================================================
7937
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-3.c (.../tags/gcc_4_8_2_release)
7938
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-3.c (.../branches/gcc-4_8-branch)
7940
+/* Functional tests for the function hotpatching feature. */
7942
+/* { dg-do run } */
7943
+/* { dg-options "-O3 -mzarch -mhotpatch=0 --save-temps" } */
7949
+ printf("hello, world!\n");
7957
+/* Check number of occurences of certain instructions. */
7958
+/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
7959
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
7960
Index: gcc/testsuite/gcc.target/s390/hotpatch-4.c
7961
===================================================================
7962
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-4.c (.../tags/gcc_4_8_2_release)
7963
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-4.c (.../branches/gcc-4_8-branch)
7965
+/* Functional tests for the function hotpatching feature. */
7967
+/* { dg-do run } */
7968
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
7972
+inline void hp1(void)
7974
+ printf("hello, world!\n");
7977
+__attribute__ ((always_inline))
7978
+void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */
7980
+ printf("hello, world!\n");
7981
+} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */
7988
+/* Check number of occurences of certain instructions. */
7989
+/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
7990
+/* { dg-final { scan-assembler-not "nop\t0" } } */
7991
Index: gcc/testsuite/gcc.target/s390/hotpatch-5.c
7992
===================================================================
7993
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-5.c (.../tags/gcc_4_8_2_release)
7994
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-5.c (.../branches/gcc-4_8-branch)
7996
+/* Functional tests for the function hotpatching feature. */
7998
+/* { dg-do run } */
7999
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
8003
+__attribute__ ((hotpatch))
8006
+ printf("hello, world!\n");
8014
+/* Check number of occurences of certain instructions. */
8015
+/* { dg-final { scan-assembler-times "nopr\t%r7" 12 } } */
8016
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
8017
Index: gcc/testsuite/gcc.target/s390/hotpatch-6.c
8018
===================================================================
8019
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-6.c (.../tags/gcc_4_8_2_release)
8020
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-6.c (.../branches/gcc-4_8-branch)
8022
+/* Functional tests for the function hotpatching feature. */
8024
+/* { dg-do run } */
8025
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
8029
+__attribute__ ((hotpatch(1)))
8032
+ printf("hello, world!\n");
8040
+/* Check number of occurences of certain instructions. */
8041
+/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
8042
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
8043
Index: gcc/testsuite/gcc.target/s390/htm-builtins-1.c
8044
===================================================================
8045
--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-1.c (.../tags/gcc_4_8_2_release)
8046
+++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-1.c (.../branches/gcc-4_8-branch)
8048
+/* Functional tests of the htm __builtin_... macros. */
8050
+/* { dg-do run } */
8051
+/* { dg-require-effective-target htm } */
8052
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
8054
+/* ---------------------------- included header files ---------------------- */
8057
+#include <string.h>
8058
+#include <stdint.h>
8059
+#include <htmintrin.h>
8061
+/* ---------------------------- local definitions -------------------------- */
8063
+#define DEFAULT_MAX_REPETITIONS 5
8064
+#define DEFAULT_REQUIRED_QUORUM ((DEFAULT_MAX_REPETITIONS) - 1)
8065
+#define NUM_WARMUP_RUNS 10
8067
+/* ---------------------------- local macros ------------------------------- */
8069
+#define TEST_DF_REP(name) \
8070
+ { #name, name, DEFAULT_MAX_REPETITIONS, DEFAULT_REQUIRED_QUORUM }
8071
+#define TEST_NO_REP(name) { #name, name, 1, 1 }
8073
+/* ---------------------------- local types -------------------------------- */
8075
+typedef int (*test_func_t)(void);
8080
+ test_func_t test_func;
8081
+ int max_repetitions;
8082
+ int required_quorum;
8083
+} test_table_entry_t;
8085
+/* ---------------------------- local variables ---------------------------- */
8087
+__attribute__ ((aligned(256))) static struct __htm_tdb local_tdb256;
8088
+static struct __htm_tdb local_tdb;
8089
+static int do_dump_tdb = 0;
8091
+/* ---------------------------- exported variables (globals) --------------- */
8093
+__attribute__ ((aligned(256))) struct
8098
+} global = { 1.0, 2.5, 0.0 };
8100
+__attribute__ ((aligned(256))) struct
8102
+ volatile uint64_t c1;
8103
+ volatile uint64_t c2;
8104
+ volatile uint64_t c3;
8105
+} counters = { 0, 0, 0 };
8107
+/* ---------------------------- local helper functions --------------------- */
8109
+static void dump_tdb (struct __htm_tdb *tdb)
8115
+ if (do_dump_tdb == 0)
8119
+ p = (unsigned char *)tdb;
8120
+ for (i = 0; i < 16; i++)
8122
+ fprintf (stderr, "0x%02x ", i * 16);
8123
+ for (j = 0; j < 16; j++)
8125
+ fprintf (stderr, "%02x", (int)p[i * 16 + j]);
8128
+ fprintf (stderr, " ");
8132
+ fprintf (stderr, " ");
8135
+ fprintf (stderr, "\n");
8141
+/* ---------------------------- local test functions ----------------------- */
8143
+/* Check values of the constants defined in htmintrin.h. */
8144
+static int test_constants (void)
8146
+ if (_HTM_TBEGIN_STARTED != 0)
8148
+ return 100 * _HTM_TBEGIN_STARTED + 1;
8150
+ if (_HTM_TBEGIN_INDETERMINATE != 1)
8152
+ return 100 * _HTM_TBEGIN_INDETERMINATE + 2;
8154
+ if (_HTM_TBEGIN_TRANSIENT != 2)
8156
+ return 100 * _HTM_TBEGIN_TRANSIENT + 3;
8158
+ if (_HTM_TBEGIN_PERSISTENT != 3)
8160
+ return 100 * _HTM_TBEGIN_PERSISTENT + 4;
8166
+static int test_tbegin_ntstg_tend (void)
8172
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8174
+ __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
8176
+ rc = __builtin_tend ();
8179
+ return 100 * rc + 5;
8181
+ if (counters.c1 != 1)
8183
+ return 100 * counters.c1 + 2;
8185
+ if (counters.c2 != 2)
8187
+ return 100 * counters.c2 + 3;
8192
+ return 100 * rc + 4;
8198
+static int test_tbegin_ntstg_tabort (void)
8205
+ if (__builtin_tbegin ((void *)0) == 0)
8207
+ __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
8210
+ __builtin_tabort (256);
8213
+ if (counters.c1 != 1)
8215
+ return 100 * counters.c1 + 2;
8217
+ if (counters.c2 != 0)
8219
+ return 100 * counters.c2 + 3;
8223
+ return 100 * f + 4;
8229
+static int test_tbegin_nofloat (void)
8235
+ if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
8237
+ __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
8239
+ rc = __builtin_tend ();
8242
+ return 100 * rc + 5;
8244
+ if (counters.c1 != 1)
8246
+ return 100 * counters.c1 + 2;
8248
+ if (counters.c2 != 2)
8250
+ return 100 * counters.c2 + 3;
8255
+ return 100 * rc + 4;
8261
+static int test_tbegin_retry (void)
8268
+ if ((rc = __builtin_tbegin_retry ((void *)0, 5)) == 0)
8272
+ do_abort = (counters.c1 == 0) ? 1 : 0;
8273
+ __builtin_non_tx_store (
8274
+ (uint64_t *)&counters.c1, counters.c1 + 1);
8275
+ if (do_abort == 1)
8277
+ __builtin_tabort (256);
8279
+ counters.c2 = counters.c2 + 10;
8280
+ __builtin_non_tx_store ((uint64_t *)&counters.c3, 3);
8281
+ rc = __builtin_tend ();
8284
+ return 100 * rc + 5;
8286
+ if (counters.c1 != 2)
8288
+ return 100 * counters.c1 + 2;
8290
+ if (counters.c2 != 10)
8292
+ return 100 * counters.c2 + 3;
8294
+ if (counters.c3 != 3)
8296
+ return 100 * counters.c3 + 6;
8301
+ return 100 * rc + 4;
8307
+static int test_tbegin_retry_nofloat (void)
8314
+ if ((rc = __builtin_tbegin_retry_nofloat ((void *)0, 5)) == 0)
8318
+ do_abort = (counters.c1 == 0) ? 1 : 0;
8319
+ __builtin_non_tx_store (
8320
+ (uint64_t *)&counters.c1, counters.c1 + 1);
8321
+ if (do_abort == 1)
8323
+ __builtin_tabort (256);
8325
+ counters.c2 = counters.c2 + 10;
8326
+ __builtin_non_tx_store ((uint64_t *)&counters.c3, 3);
8327
+ rc = __builtin_tend ();
8330
+ return 100 * rc + 5;
8332
+ if (counters.c1 != 2)
8334
+ return 100 * counters.c1 + 2;
8336
+ if (counters.c2 != 10)
8338
+ return 100 * counters.c2 + 3;
8340
+ if (counters.c3 != 3)
8342
+ return 100 * counters.c3 + 6;
8347
+ return 100 * rc + 4;
8353
+static int test_tbegin_aborts (void)
8359
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8362
+ __builtin_tabort (256);
8374
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8377
+ __builtin_tabort (257);
8382
+ return 100 * rc + 6;
8386
+ return 100 * f + 7;
8388
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8390
+ global.float_3 = global.float_1 + global.float_2;
8391
+ rc = __builtin_tend ();
8394
+ return 100 * rc + 8;
8399
+ return 100 * rc + 9;
8401
+ if (global.float_3 != global.float_1 + global.float_2)
8403
+ return 100 * rc + 10;
8409
+static __attribute__((noinline)) void indirect_abort(int abort_code)
8411
+ __builtin_tabort (abort_code);
8416
+static int test_tbegin_indirect_aborts (void)
8422
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8425
+ indirect_abort(256);
8430
+ return 100 * rc + 3;
8434
+ return 100 * rc + 4;
8437
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8440
+ indirect_abort(257);
8445
+ return 100 * rc + 6;
8449
+ return 100 * f + 7;
8455
+static int test_tbegin_nofloat_aborts (void)
8459
+ if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
8461
+ __builtin_tabort (256);
8464
+ if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
8466
+ __builtin_tabort (257);
8471
+ return 1000 * rc + 6;
8477
+static int test_tbegin_nofloat_indirect_aborts (void)
8481
+ if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
8483
+ indirect_abort (256);
8486
+ if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
8488
+ indirect_abort (257);
8493
+ return 1000 * rc + 6;
8500
+int _test_tbegin_retry_aborts (int retries, uint64_t abort_code)
8505
+ if ((rc = __builtin_tbegin_retry ((void *)0, retries)) == 0)
8507
+ __builtin_non_tx_store ((uint64_t *)&counters.c1, counters.c1 + 1);
8508
+ __builtin_tabort (abort_code);
8513
+ if ((abort_code & 1) == 0)
8517
+ return 100 * rc + 2003;
8519
+ else if (counters.c1 != (uint64_t)retries + 1)
8521
+ return 1000 * counters.c1 + 100 * retries + 4;
8528
+ return 100 * rc + 3005;
8530
+ else if (counters.c1 != 1)
8532
+ return 1000 * counters.c1 + 100 * retries + 6;
8540
+static int test_tbegin_retry_aborts (void)
8545
+ for (retries = 1; retries <= 3; retries++)
8547
+ rc = _test_tbegin_retry_aborts (retries, 256);
8550
+ return 10000 + rc;
8553
+ for (retries = 1; retries <= 3; retries++)
8555
+ rc = _test_tbegin_retry_aborts (retries, 257);
8558
+ return 20000 + rc;
8561
+ if ((rc = __builtin_tbegin_retry ((void *)0, 5)) == 0)
8563
+ global.float_3 = global.float_1 + global.float_2;
8564
+ rc = __builtin_tend ();
8567
+ return 30000 + 100 * rc + 6;
8572
+ return 30000 + 100 * rc + 7;
8578
+static int _test_tbegin_retry_nofloat_aborts (int retries, uint64_t abort_code)
8583
+ if ((rc = __builtin_tbegin_retry_nofloat ((void *)0, retries)) == 0)
8585
+ __builtin_non_tx_store ((uint64_t *)&counters.c1, counters.c1 + 1);
8586
+ __builtin_tabort (abort_code);
8591
+ if ((abort_code & 1) == 0)
8595
+ return 100 * rc + 2003;
8597
+ else if (counters.c1 != (uint64_t)retries + 1)
8599
+ return 1000 * counters.c1 + 100 * retries + 4;
8606
+ return 100 * rc + 3005;
8608
+ else if (counters.c1 != 1)
8610
+ return 1000 * counters.c1 + 100 * retries + 6;
8618
+static int test_tbegin_retry_nofloat_aborts (void)
8623
+ for (retries = 1; retries <= 3; retries++)
8625
+ rc = _test_tbegin_retry_nofloat_aborts (retries, 256);
8628
+ return 10 * retries + rc;
8631
+ for (retries = 1; retries <= 3; retries++)
8633
+ rc = _test_tbegin_retry_nofloat_aborts (retries, 257);
8636
+ return 10000 + 10 * retries + rc;
8643
+static int test_tbegin_tdb (void)
8647
+ local_tdb.format = 0;
8648
+ if ((rc = __builtin_tbegin (&local_tdb)) == 0)
8650
+ rc = __builtin_tend ();
8653
+ return 100 * rc + 1;
8655
+ if (local_tdb.format != 0)
8657
+ dump_tdb (&local_tdb);
8658
+ return 100 * local_tdb.format + 2;
8663
+ return 100 * rc + 3;
8665
+ local_tdb.format = 0;
8666
+ if ((rc = __builtin_tbegin (&local_tdb)) == 0)
8668
+ __builtin_tabort (257);
8675
+ return 100 * rc + 5;
8677
+ if (local_tdb.format != 1)
8679
+ dump_tdb (&local_tdb);
8680
+ return 100 * local_tdb.format + 6;
8683
+ local_tdb256.format = 0;
8684
+ if ((rc = __builtin_tbegin (&local_tdb256)) == 0)
8686
+ rc = __builtin_tend ();
8689
+ return 1100 * rc + 1;
8691
+ if (local_tdb256.format != 0)
8693
+ dump_tdb (&local_tdb256);
8694
+ return 1100 * local_tdb256.format + 2;
8699
+ return 1100 * rc + 3;
8701
+ local_tdb256.format = 0;
8702
+ if ((rc = __builtin_tbegin (&local_tdb256)) == 0)
8704
+ __builtin_tabort (257);
8711
+ return 2100 * rc + 5;
8713
+ if (local_tdb256.format != 1)
8715
+ dump_tdb (&local_tdb256);
8716
+ return 2100 * local_tdb256.format + 6;
8723
+static int test_tbegin_nofloat_tdb (void)
8727
+ local_tdb.format = 0;
8728
+ if ((rc = __builtin_tbegin_nofloat (&local_tdb)) == 0)
8730
+ rc = __builtin_tend ();
8733
+ return 100 * rc + 1;
8735
+ if (local_tdb.format != 0)
8737
+ dump_tdb (&local_tdb);
8738
+ return 100 * local_tdb.format + 2;
8745
+ local_tdb.format = 0;
8746
+ if ((rc = __builtin_tbegin_nofloat (&local_tdb)) == 0)
8748
+ __builtin_tabort (257);
8755
+ return 100 * rc + 5;
8757
+ if (local_tdb.format != 1)
8759
+ dump_tdb (&local_tdb);
8760
+ return 100 * local_tdb.format + 6;
8763
+ local_tdb256.format = 0;
8764
+ if ((rc = __builtin_tbegin_nofloat (&local_tdb256)) == 0)
8766
+ rc = __builtin_tend ();
8769
+ return 1100 * rc + 1;
8771
+ if (local_tdb256.format != 0)
8773
+ dump_tdb (&local_tdb256);
8774
+ return 1100 * local_tdb256.format + 2;
8781
+ local_tdb256.format = 0;
8782
+ if ((rc = __builtin_tbegin_nofloat (&local_tdb256)) == 0)
8784
+ __builtin_tabort (257);
8791
+ return 2100 * rc + 5;
8793
+ if (local_tdb256.format != 1)
8795
+ dump_tdb (&local_tdb256);
8796
+ return 2100 * local_tdb256.format + 6;
8803
+static int test_tbegin_retry_tdb (void)
8807
+ local_tdb256.format = 0;
8808
+ if ((rc = __builtin_tbegin_retry (&local_tdb256, 2)) == 0)
8810
+ rc = __builtin_tend ();
8813
+ return 1100 * rc + 1;
8815
+ if (local_tdb256.format != 0)
8817
+ dump_tdb (&local_tdb256);
8818
+ return 1100 * local_tdb256.format + 2;
8825
+ local_tdb256.format = 0;
8826
+ if ((rc = __builtin_tbegin_retry (&local_tdb256, 2)) == 0)
8828
+ __builtin_tabort (257);
8835
+ return 2100 * rc + 5;
8837
+ if (local_tdb256.format != 1)
8839
+ dump_tdb (&local_tdb256);
8840
+ return 2100 * local_tdb256.format + 6;
8847
+static int test_tbegin_retry_nofloat_tdb (void)
8851
+ local_tdb.format = 0;
8852
+ if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb, 2)) == 0)
8854
+ rc = __builtin_tend ();
8857
+ return 100 * rc + 1;
8859
+ if (local_tdb.format != 0)
8861
+ dump_tdb (&local_tdb);
8862
+ return 100 * local_tdb.format + 2;
8867
+ return 100 * rc + 3;
8869
+ local_tdb.format = 0;
8870
+ if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb, 2)) == 0)
8872
+ __builtin_tabort (257);
8879
+ return 100 * rc + 5;
8881
+ if (local_tdb.format != 1)
8883
+ dump_tdb (&local_tdb);
8884
+ return 100 * local_tdb.format + 6;
8887
+ local_tdb256.format = 0;
8888
+ if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb256, 2)) == 0)
8890
+ rc = __builtin_tend ();
8893
+ return 1100 * rc + 1;
8895
+ if (local_tdb256.format != 0)
8897
+ dump_tdb (&local_tdb256);
8898
+ return 1100 * local_tdb256.format + 2;
8903
+ return 1100 * rc + 3;
8905
+ local_tdb256.format = 0;
8906
+ if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb256, 2)) == 0)
8908
+ __builtin_tabort (257);
8915
+ return 2100 * rc + 5;
8917
+ if (local_tdb256.format != 1)
8919
+ dump_tdb (&local_tdb256);
8920
+ return 2100 * local_tdb256.format + 6;
8927
+static int test_etnd (void)
8934
+ if ((rc = __builtin_tbegin ((void *)0)) == 0)
8936
+ counters.c1 = __builtin_tx_nesting_depth ();
8937
+ if (__builtin_tbegin ((void *)0) == 0)
8939
+ counters.c2 = __builtin_tx_nesting_depth ();
8940
+ if (__builtin_tbegin ((void *)0) == 0)
8942
+ counters.c3 = __builtin_tx_nesting_depth ();
8943
+ __builtin_tend ();
8945
+ __builtin_tend ();
8947
+ __builtin_tend ();
8951
+ return 100 * rc + 1;
8953
+ if (counters.c1 != 1)
8955
+ return 100 * counters.c1 + 2;
8957
+ if (counters.c2 != 2)
8959
+ return 100 * counters.c2 + 3;
8961
+ if (counters.c3 != 3)
8963
+ return 100 * counters.c3 + 4;
8969
+static int test_tbeginc (void)
8974
+ __builtin_tbeginc ();
8976
+ rc = __builtin_tend ();
8979
+ return 10000 * rc + 1;
8981
+ if (counters.c1 != 1)
8983
+ return 100000 * counters.c1 + 3;
8989
+/* ---------------------------- local testing framework functions ---------- */
8991
+static int run_one_test (const test_table_entry_t *test_entry)
8993
+ int do_print_passes;
8998
+ /* Warmup run to get all necessary data and instruction pages into the page
9004
+ for (run = 0; run < NUM_WARMUP_RUNS; run++)
9006
+ test_entry->test_func ();
9010
+ do_print_passes = (
9011
+ test_entry->required_quorum != 1 ||
9012
+ test_entry->max_repetitions != 1);
9013
+ printf ("RRR RUN %s\n", test_entry->name);
9014
+ if (do_print_passes == 1)
9017
+ " (requires %d successful out of %d runs)\n",
9018
+ test_entry->required_quorum,
9019
+ test_entry->max_repetitions);
9023
+ for (rc = 0, i = 0; i < test_entry->max_repetitions; i++)
9025
+ if (do_print_passes == 1)
9036
+ rc = test_entry->test_func ();
9039
+ if (do_print_passes == 1)
9041
+ printf (" success");
9044
+ if (succeeded >= test_entry->required_quorum)
9051
+ printf (" failed (rc = %d)", rc);
9054
+ if (do_print_passes == 1 || rc != 0)
9058
+ if (succeeded >= test_entry->required_quorum)
9060
+ printf ("+++ OK %s\n", test_entry->name);
9066
+ printf ("--- FAIL %s\n", test_entry->name);
9068
+ return (rc != 0) ? rc : -1;
9072
+static int run_all_tests (const test_table_entry_t *test_table)
9074
+ const test_table_entry_t *test;
9078
+ rc = 0, test = &test_table[0];
9079
+ test->test_func != NULL && rc == 0; test++)
9081
+ rc = run_one_test (test);
9087
+/* ---------------------------- interface functions ------------------------ */
9091
+ const test_table_entry_t test_table[] = {
9092
+ TEST_NO_REP (test_constants),
9093
+ TEST_DF_REP (test_tbegin_ntstg_tend),
9094
+ TEST_DF_REP (test_tbegin_ntstg_tabort),
9095
+ TEST_DF_REP (test_tbegin_nofloat),
9096
+ TEST_NO_REP (test_tbegin_retry),
9097
+ TEST_NO_REP (test_tbegin_retry_nofloat),
9098
+ TEST_DF_REP (test_tbegin_aborts),
9099
+ TEST_DF_REP (test_tbegin_indirect_aborts),
9100
+ TEST_DF_REP (test_tbegin_nofloat_aborts),
9101
+ TEST_DF_REP (test_tbegin_nofloat_indirect_aborts),
9102
+ TEST_NO_REP (test_tbegin_retry_aborts),
9103
+ TEST_NO_REP (test_tbegin_retry_nofloat_aborts),
9104
+ TEST_DF_REP (test_tbegin_tdb),
9105
+ TEST_DF_REP (test_tbegin_nofloat_tdb),
9106
+ TEST_NO_REP (test_tbegin_retry_tdb),
9107
+ TEST_NO_REP (test_tbegin_retry_nofloat_tdb),
9108
+ TEST_DF_REP (test_etnd),
9109
+ TEST_DF_REP (test_tbeginc),
9110
+ { (void *)0, 0, 0 }
9116
+ rc = run_all_tests (test_table);
9121
Index: gcc/testsuite/gcc.target/s390/hotpatch-7.c
9122
===================================================================
9123
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-7.c (.../tags/gcc_4_8_2_release)
9124
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-7.c (.../branches/gcc-4_8-branch)
9126
+/* Functional tests for the function hotpatching feature. */
9128
+/* { dg-do run } */
9129
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
9133
+__attribute__ ((hotpatch(0)))
9136
+ printf("hello, world!\n");
9144
+/* Check number of occurences of certain instructions. */
9145
+/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
9146
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
9147
Index: gcc/testsuite/gcc.target/s390/htm-builtins-2.c
9148
===================================================================
9149
--- a/src/gcc/testsuite/gcc.target/s390/htm-builtins-2.c (.../tags/gcc_4_8_2_release)
9150
+++ b/src/gcc/testsuite/gcc.target/s390/htm-builtins-2.c (.../branches/gcc-4_8-branch)
9152
+/* Functional tests of the htm __TM_... macros. */
9154
+/* { dg-do run } */
9155
+/* { dg-require-effective-target htm } */
9156
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
9158
+/* ---------------------------- included header files ---------------------- */
9161
+#include <string.h>
9162
+#include <inttypes.h>
9163
+#include <htmxlintrin.h>
9165
+/* ---------------------------- local definitions -------------------------- */
9167
+#define DEFAULT_MAX_REPETITIONS 5
9168
+#define DEFAULT_REQUIRED_QUORUM ((DEFAULT_MAX_REPETITIONS) - 1)
9169
+#define DEFAULT_ABORT_ADDRESS (0x12345678u)
9171
+/* ---------------------------- local macros ------------------------------- */
9173
+#define TEST_DF_REP(name) \
9174
+ { #name, name, DEFAULT_MAX_REPETITIONS, DEFAULT_REQUIRED_QUORUM }
9175
+#define TEST_NO_REP(name) { #name, name, 1, 1 }
9177
+/* ---------------------------- local types -------------------------------- */
9179
+typedef int (*test_func_t)(void);
9184
+ test_func_t test_func;
9185
+ int max_repetitions;
9186
+ int required_quorum;
9187
+} test_table_entry_t;
9191
+ ABORT_T_SYSTEM = 0,
9199
+ ABORT_T_FOOTPRINT_EXCEEDED,
9200
+ ABORT_T_NESTED_TOO_DEEP,
9203
+ ABORT_T_INVALID_ABORT_CODE
9206
+/* ---------------------------- local variables ---------------------------- */
9208
+__attribute__ ((aligned(256))) static struct __htm_tdb local_tdb256;
9209
+static struct __htm_tdb local_tdb;
9211
+static abort_t const abort_classes[] =
9213
+ ABORT_T_INVALID_ABORT_CODE,
9221
+ ABORT_T_FOOTPRINT_EXCEEDED,
9223
+ ABORT_T_FOOTPRINT_EXCEEDED,
9229
+ ABORT_T_NESTED_TOO_DEEP,
9236
+static size_t num_abort_classes = sizeof(abort_classes) / sizeof(abort_t);
9238
+/* ---------------------------- exported variables (globals) --------------- */
9240
+int global_int = 0;
9241
+uint64_t global_u64 = 0;
9242
+float global_float_1 = 1.0;
9243
+float global_float_2 = 2.5;
9244
+float global_float_3 = 0.0;
9245
+__attribute__ ((aligned(256))) struct
9247
+ volatile uint64_t c1;
9248
+ volatile uint64_t c2;
9249
+ volatile uint64_t c3;
9250
+} counters = { 0, 0, 0 };
9252
+/* ---------------------------- local helper functions --------------------- */
9254
+static void dump_tdb(struct __htm_tdb *tdb)
9260
+ p = (unsigned char *)tdb;
9261
+ for (i = 0; i < 16; i++)
9263
+ fprintf(stderr, "0x%02x ", i * 16);
9264
+ for (j = 0; j < 16; j++)
9266
+ fprintf(stderr, "%02x", (int)p[i * 16 + j]);
9269
+ fprintf(stderr, " ");
9273
+ fprintf(stderr, " ");
9276
+ fprintf(stderr, "\n");
9282
+static void make_fake_tdb(struct __htm_tdb *tdb)
9284
+ memset(tdb, 0, sizeof(*tdb));
9286
+ tdb->nesting_depth = 1;
9287
+ tdb->atia = DEFAULT_ABORT_ADDRESS;
9288
+ tdb->abort_code = 11;
9293
+static int check_abort_code_in_tdb(struct __htm_tdb *tdb, uint64_t abort_code)
9298
+ if (abort_code != 0)
9302
+ addr = __TM_failure_address(&local_tdb);
9303
+ if (addr != DEFAULT_ABORT_ADDRESS)
9309
+ long long tdb_abort_code;
9311
+ tdb_abort_code = __TM_failure_code(tdb);
9312
+ if ((uint64_t)tdb_abort_code != abort_code)
9315
+ stderr, "tm_ac %" PRIu64 ", ac %" PRIu64
9316
+ ", tdb_ac %" PRIu64 "\n",
9317
+ (uint64_t)tdb_abort_code, abort_code,
9318
+ (uint64_t)tdb->abort_code);
9322
+ expect_rc = (abort_code >= 256) ? 1 : 0;
9323
+ rc = __TM_is_user_abort(tdb);
9324
+ if (rc != expect_rc)
9326
+ fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
9330
+ unsigned char code;
9333
+ rc = __TM_is_named_user_abort(tdb, &code);
9334
+ if (rc != expect_rc)
9337
+ stderr, "rc %ld, expect_rc %ld\n", rc,
9341
+ if (expect_rc == 1 && code != abort_code - 256)
9346
+ if (abort_code > (uint64_t)num_abort_classes)
9348
+ abort_code = (uint64_t)num_abort_classes;
9350
+ expect_rc = (abort_classes[abort_code] == ABORT_T_ILLEGAL) ? 1 : 0;
9351
+ rc = __TM_is_illegal(tdb);
9352
+ if (rc != expect_rc)
9355
+ fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
9359
+ (abort_classes[abort_code] == ABORT_T_FOOTPRINT_EXCEEDED) ?
9361
+ rc = __TM_is_footprint_exceeded(tdb);
9362
+ if (rc != expect_rc)
9365
+ fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
9369
+ (abort_classes[abort_code] == ABORT_T_NESTED_TOO_DEEP) ? 1 : 0;
9370
+ rc = __TM_is_nested_too_deep(tdb);
9371
+ if (rc != expect_rc)
9374
+ fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
9377
+ expect_rc = (abort_classes[abort_code] == ABORT_T_CONFLICT) ? 1 : 0;
9378
+ rc = __TM_is_conflict(tdb);
9379
+ if (rc != expect_rc)
9382
+ fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
9389
+/* ---------------------------- local test functions ----------------------- */
9391
+/* Not a test; make sure that the involved global cachelines are reserved for
9393
+static int init_cache(void)
9395
+ make_fake_tdb(&local_tdb);
9396
+ make_fake_tdb(&local_tdb256);
9399
+ global_float_1 = 1.0;
9400
+ global_float_2 = 2.5;
9401
+ global_float_3 = 0.0;
9409
+static int test_abort_classification(void)
9413
+ make_fake_tdb(&local_tdb);
9414
+ for (i = 0; i <= 256; i++)
9418
+ local_tdb.abort_code = (uint64_t)i;
9419
+ rc = check_abort_code_in_tdb(&local_tdb, (uint64_t)i);
9422
+ return 100 * i + rc;
9429
+static int test_cc_classification(void)
9433
+ rc = __TM_is_failure_persistent(0);
9438
+ rc = __TM_is_failure_persistent(1);
9443
+ rc = __TM_is_failure_persistent(2);
9448
+ rc = __TM_is_failure_persistent(3);
9457
+static int test_tbegin_ntstg_tend(void)
9463
+ if ((rc = __TM_simple_begin()) == 0)
9465
+ __TM_non_transactional_store((uint64_t *)&counters.c1, 1);
9470
+ return 100 * rc + 5;
9472
+ if (counters.c1 != 1)
9474
+ return 100 * counters.c1 + 2;
9476
+ if (counters.c2 != 2)
9478
+ return 100 * counters.c2 + 3;
9483
+ return 100 * rc + 4;
9489
+static int test_tbegin_ntstg_tabort(void)
9496
+ if (__TM_simple_begin() == 0)
9498
+ __TM_non_transactional_store((uint64_t *)&counters.c1, 1);
9501
+ __TM_named_abort(0);
9504
+ if (counters.c1 != 1)
9506
+ return 100 * counters.c1 + 2;
9508
+ if (counters.c2 != 0)
9510
+ return 100 * counters.c2 + 3;
9514
+ return 100 * f + 4;
9520
+static int test_tbegin_aborts(void)
9526
+ if ((rc = __TM_simple_begin()) == 0)
9541
+ if ((rc = __TM_simple_begin()) == 0)
9544
+ __TM_named_abort(3);
9549
+ return 100 * rc + 6;
9553
+ return 100 * f + 7;
9555
+ if ((rc = __TM_simple_begin()) == 0)
9557
+ global_float_3 = global_float_1 + global_float_2;
9561
+ return 100 * rc + 8;
9566
+ return 100 * rc + 9;
9568
+ if (global_float_3 != global_float_1 + global_float_2)
9570
+ return 100 * rc + 10;
9576
+static int test_tbegin_tdb(void)
9580
+ local_tdb.format = 0;
9581
+ if ((rc = __TM_begin(&local_tdb)) == 0)
9586
+ return 100 * rc + 1;
9588
+ if (local_tdb.format != 0)
9590
+ dump_tdb(&local_tdb);
9591
+ return 100 * local_tdb.format + 2;
9596
+ return 100 * rc + 3;
9598
+ local_tdb.format = 0;
9599
+ if ((rc = __TM_begin(&local_tdb)) == 0)
9601
+ __TM_named_abort(1);
9608
+ return 100 * rc + 5;
9610
+ if (local_tdb.format != 1)
9612
+ dump_tdb(&local_tdb);
9613
+ return 100 * local_tdb.format + 6;
9616
+ local_tdb256.format = 0;
9617
+ if ((rc = __TM_begin(&local_tdb256)) == 0)
9622
+ return 1100 * rc + 1;
9624
+ if (local_tdb256.format != 0)
9626
+ dump_tdb(&local_tdb256);
9627
+ return 1100 * local_tdb256.format + 2;
9632
+ return 1100 * rc + 3;
9634
+#if 1 /*!!!does not work*/
9635
+ local_tdb256.format = 0;
9636
+ if ((rc = __TM_begin(&local_tdb256)) == 0)
9638
+ __TM_named_abort(1);
9645
+ return 2100 * rc + 5;
9647
+ if (local_tdb256.format != 1)
9649
+ dump_tdb(&local_tdb256);
9650
+ return 2100 * local_tdb256.format + 6;
9658
+static int test_etnd(void)
9665
+ make_fake_tdb(&local_tdb);
9666
+ local_tdb.nesting_depth = 0;
9667
+ nd = __TM_nesting_depth(&local_tdb);
9672
+ local_tdb.nesting_depth = 7;
9673
+ nd = __TM_nesting_depth(&local_tdb);
9678
+ local_tdb.format = 0;
9679
+ nd = __TM_nesting_depth(&local_tdb);
9689
+ if ((rc = __TM_simple_begin()) == 0)
9691
+ counters.c1 = __TM_nesting_depth(0);
9692
+ if (__TM_simple_begin() == 0)
9694
+ counters.c2 = __TM_nesting_depth(0);
9695
+ if (__TM_simple_begin() == 0)
9697
+ counters.c3 = __TM_nesting_depth(0);
9706
+ return 100 * rc + 1;
9708
+ if (counters.c1 != 1)
9710
+ return 100 * counters.c1 + 2;
9712
+ if (counters.c2 != 2)
9714
+ return 100 * counters.c2 + 3;
9716
+ if (counters.c3 != 3)
9718
+ return 100 * counters.c3 + 4;
9724
+/* ---------------------------- local testing framework functions ---------- */
9726
+static int run_one_test(const test_table_entry_t *test_entry)
9728
+ int do_print_passes;
9733
+ do_print_passes = (
9734
+ test_entry->required_quorum != 1 ||
9735
+ test_entry->max_repetitions != 1);
9736
+ printf("RRR RUN %s\n", test_entry->name);
9737
+ if (do_print_passes == 1)
9740
+ " (requires %d successful out of %d runs)\n",
9741
+ test_entry->required_quorum,
9742
+ test_entry->max_repetitions);
9746
+ for (rc = 0, i = 0; i < test_entry->max_repetitions; i++)
9748
+ if (do_print_passes == 1)
9759
+ rc = test_entry->test_func();
9762
+ if (do_print_passes == 1)
9764
+ printf(" success");
9767
+ if (succeeded >= test_entry->required_quorum)
9774
+ printf(" failed (rc = %d)", rc);
9777
+ if (do_print_passes == 1 || rc != 0)
9781
+ if (succeeded >= test_entry->required_quorum)
9783
+ printf("+++ OK %s\n", test_entry->name);
9789
+ printf("--- FAIL %s\n", test_entry->name);
9791
+ return (rc != 0) ? rc : -1;
9795
+static int run_all_tests(const test_table_entry_t *test_table)
9797
+ const test_table_entry_t *test;
9801
+ rc = 0, test = &test_table[0];
9802
+ test->test_func != NULL && rc == 0; test++)
9804
+ rc = run_one_test(test);
9810
+/* ---------------------------- interface functions ------------------------ */
9814
+ const test_table_entry_t test_table[] = {
9815
+ TEST_NO_REP(init_cache),
9816
+ TEST_NO_REP(test_abort_classification),
9817
+ TEST_NO_REP(test_cc_classification),
9818
+ TEST_DF_REP(test_tbegin_ntstg_tend),
9819
+ TEST_DF_REP(test_tbegin_ntstg_tabort),
9820
+ TEST_DF_REP(test_tbegin_aborts),
9821
+ TEST_DF_REP(test_tbegin_tdb),
9822
+ TEST_DF_REP(test_etnd),
9823
+ { (void *)0, 0, 0 }
9829
+ rc = run_all_tests(test_table);
9834
Index: gcc/testsuite/gcc.target/s390/hotpatch-8.c
9835
===================================================================
9836
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-8.c (.../tags/gcc_4_8_2_release)
9837
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-8.c (.../branches/gcc-4_8-branch)
9839
+/* Functional tests for the function hotpatching feature. */
9841
+/* { dg-do run } */
9842
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
9846
+__attribute__ ((hotpatch))
9847
+inline void hp1(void)
9849
+ printf("hello, world!\n");
9852
+__attribute__ ((hotpatch))
9853
+__attribute__ ((always_inline))
9854
+void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */
9856
+ printf("hello, world!\n");
9857
+} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */
9864
+/* Check number of occurences of certain instructions. */
9865
+/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
9866
+/* { dg-final { scan-assembler-not "nop\t0" } } */
9867
Index: gcc/testsuite/gcc.target/s390/hotpatch-9.c
9868
===================================================================
9869
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-9.c (.../tags/gcc_4_8_2_release)
9870
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-9.c (.../branches/gcc-4_8-branch)
9872
+/* Functional tests for the function hotpatching feature. */
9874
+/* { dg-do run } */
9875
+/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */
9879
+__attribute__ ((hotpatch(2)))
9882
+ printf("hello, world!\n");
9890
+/* Check number of occurences of certain instructions. */
9891
+/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */
9892
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
9893
Index: gcc/testsuite/gcc.target/s390/hotpatch-10.c
9894
===================================================================
9895
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-10.c (.../tags/gcc_4_8_2_release)
9896
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-10.c (.../branches/gcc-4_8-branch)
9898
+/* Functional tests for the function hotpatching feature. */
9900
+/* { dg-do run } */
9901
+/* { dg-options "-O3 -mzarch -mno-hotpatch --save-temps" } */
9905
+__attribute__ ((hotpatch(2)))
9908
+ printf("hello, world!\n");
9916
+/* Check number of occurences of certain instructions. */
9917
+/* { dg-final { scan-assembler-times "nopr\t%r7" 2 } } */
9918
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
9919
Index: gcc/testsuite/gcc.target/s390/hotpatch-11.c
9920
===================================================================
9921
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-11.c (.../tags/gcc_4_8_2_release)
9922
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-11.c (.../branches/gcc-4_8-branch)
9924
+/* Functional tests for the function hotpatching feature. */
9926
+/* { dg-do run } */
9927
+/* { dg-options "-O3 -mzarch -mhotpatch -mno-hotpatch --save-temps" } */
9933
+ printf("hello, world!\n");
9941
+/* Check number of occurences of certain instructions. */
9942
+/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
9943
+/* { dg-final { scan-assembler-not "nop\t0" } } */
9944
Index: gcc/testsuite/gcc.target/s390/hotpatch-12.c
9945
===================================================================
9946
--- a/src/gcc/testsuite/gcc.target/s390/hotpatch-12.c (.../tags/gcc_4_8_2_release)
9947
+++ b/src/gcc/testsuite/gcc.target/s390/hotpatch-12.c (.../branches/gcc-4_8-branch)
9949
+/* Functional tests for the function hotpatching feature. */
9951
+/* { dg-do run } */
9952
+/* { dg-options "-O3 -mzarch -mno-hotpatch -mhotpatch=1 --save-temps" } */
9958
+ printf("hello, world!\n");
9966
+/* Check number of occurences of certain instructions. */
9967
+/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
9968
+/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
9969
Index: gcc/testsuite/gcc.target/mips/bswap-1.c
9970
===================================================================
9971
--- a/src/gcc/testsuite/gcc.target/mips/bswap-1.c (.../tags/gcc_4_8_2_release)
9972
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-1.c (.../branches/gcc-4_8-branch)
9974
+/* { dg-options "isa_rev>=2" } */
9975
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
9977
+NOMIPS16 unsigned short
9978
+foo (unsigned short x)
9980
+ return ((x << 8) & 0xff00) | ((x >> 8) & 0xff);
9983
+/* { dg-final { scan-assembler "\twsbh\t" } } */
9984
Index: gcc/testsuite/gcc.target/mips/bswap-2.c
9985
===================================================================
9986
--- a/src/gcc/testsuite/gcc.target/mips/bswap-2.c (.../tags/gcc_4_8_2_release)
9987
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-2.c (.../branches/gcc-4_8-branch)
9989
+/* { dg-options "isa_rev>=2" } */
9991
+NOMIPS16 unsigned short
9992
+foo (unsigned short x)
9994
+ return __builtin_bswap16 (x);
9997
+/* { dg-final { scan-assembler "\twsbh\t" } } */
9998
Index: gcc/testsuite/gcc.target/mips/pr59137.c
9999
===================================================================
10000
--- a/src/gcc/testsuite/gcc.target/mips/pr59137.c (.../tags/gcc_4_8_2_release)
10001
+++ b/src/gcc/testsuite/gcc.target/mips/pr59137.c (.../branches/gcc-4_8-branch)
10003
+/* { dg-do run } */
10004
+/* { dg-options "-mno-plt" } */
10006
+extern void abort (void);
10014
+struct lispstruct Cnil_body;
10015
+struct lispstruct Ct_body;
10018
+struct lispstruct * __attribute__ ((noinline))
10019
+fLlistp (struct lispstruct *x0)
10021
+ if (x0 == &Cnil_body
10022
+ || (((unsigned long) x0 >= 0x80000000) ? 0
10023
+ : (!x0->e ? (x0 != &Cnil_body) : x0->t)))
10033
+ if (fLlistp ((struct lispstruct *) 0xa0000001) != &Cnil_body)
10037
Index: gcc/testsuite/gcc.target/mips/bswap-3.c
10038
===================================================================
10039
--- a/src/gcc/testsuite/gcc.target/mips/bswap-3.c (.../tags/gcc_4_8_2_release)
10040
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-3.c (.../branches/gcc-4_8-branch)
10042
+/* { dg-options "isa_rev>=2" } */
10043
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
10045
+NOMIPS16 unsigned int
10046
+foo (unsigned int x)
10048
+ return (((x << 24) & 0xff000000)
10049
+ | ((x << 8) & 0xff0000)
10050
+ | ((x >> 8) & 0xff00)
10051
+ | ((x >> 24) & 0xff));
10054
+/* { dg-final { scan-assembler "\twsbh\t" } } */
10055
+/* { dg-final { scan-assembler "\tror\t" } } */
10056
Index: gcc/testsuite/gcc.target/mips/bswap-4.c
10057
===================================================================
10058
--- a/src/gcc/testsuite/gcc.target/mips/bswap-4.c (.../tags/gcc_4_8_2_release)
10059
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-4.c (.../branches/gcc-4_8-branch)
10061
+/* { dg-options "isa_rev>=2" } */
10063
+NOMIPS16 unsigned int
10064
+foo (unsigned int x)
10066
+ return __builtin_bswap32 (x);
10069
+/* { dg-final { scan-assembler "\twsbh\t" } } */
10070
+/* { dg-final { scan-assembler "\tror\t" } } */
10071
Index: gcc/testsuite/gcc.target/mips/bswap-5.c
10072
===================================================================
10073
--- a/src/gcc/testsuite/gcc.target/mips/bswap-5.c (.../tags/gcc_4_8_2_release)
10074
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-5.c (.../branches/gcc-4_8-branch)
10076
+/* { dg-options "isa_rev>=2 -mgp64" } */
10077
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
10079
+typedef unsigned long long uint64_t;
10084
+ return (((x << 56) & 0xff00000000000000ull)
10085
+ | ((x << 40) & 0xff000000000000ull)
10086
+ | ((x << 24) & 0xff0000000000ull)
10087
+ | ((x << 8) & 0xff00000000ull)
10088
+ | ((x >> 8) & 0xff000000)
10089
+ | ((x >> 24) & 0xff0000)
10090
+ | ((x >> 40) & 0xff00)
10091
+ | ((x >> 56) & 0xff));
10094
+/* { dg-final { scan-assembler "\tdsbh\t" } } */
10095
+/* { dg-final { scan-assembler "\tdshd\t" } } */
10096
Index: gcc/testsuite/gcc.target/mips/bswap-6.c
10097
===================================================================
10098
--- a/src/gcc/testsuite/gcc.target/mips/bswap-6.c (.../tags/gcc_4_8_2_release)
10099
+++ b/src/gcc/testsuite/gcc.target/mips/bswap-6.c (.../branches/gcc-4_8-branch)
10101
+/* { dg-options "isa_rev>=2 -mgp64" } */
10103
+typedef unsigned long long uint64_t;
10108
+ return __builtin_bswap64 (x);
10111
+/* { dg-final { scan-assembler "\tdsbh\t" } } */
10112
+/* { dg-final { scan-assembler "\tdshd\t" } } */
10113
Index: gcc/testsuite/gcc.target/sh/pr51244-19.c
10114
===================================================================
10115
--- a/src/gcc/testsuite/gcc.target/sh/pr51244-19.c (.../tags/gcc_4_8_2_release)
10116
+++ b/src/gcc/testsuite/gcc.target/sh/pr51244-19.c (.../branches/gcc-4_8-branch)
10117
@@ -22,11 +22,16 @@
10118
unwanted sequences. Thus, if we see any movt insns, something is not
10119
working as expected. This test requires -O2 because the T bit stores
10120
in question will be eliminated in additional insn split passes after
10124
+ Notice: When this test case was initially added, the T bit optimization
10125
+ was buggy and this test case resulted in wrong code. The movt
10126
+ instructions actually have to be present in this case to get
10128
/* { dg-do compile { target "sh*-*-*" } } */
10129
/* { dg-options "-O2" } */
10130
/* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
10131
-/* { dg-final { scan-assembler-not "movt" } } */
10132
+/* { dg-final { scan-assembler "movt" } } */
10136
Index: gcc/testsuite/gcc.target/sh/pr54089-3.c
10137
===================================================================
10138
--- a/src/gcc/testsuite/gcc.target/sh/pr54089-3.c (.../tags/gcc_4_8_2_release)
10139
+++ b/src/gcc/testsuite/gcc.target/sh/pr54089-3.c (.../branches/gcc-4_8-branch)
10141
/* { dg-options "-O1" } */
10142
/* { dg-skip-if "" { "sh*-*-*" } { "*" } { "-m1*" "-m2" "-m2e*" } } */
10143
/* { dg-final { scan-assembler-not "and" } } */
10144
-/* { dg-final { scan-assembler-not "31" } } */
10145
+/* { dg-final { scan-assembler-not "#31" } } */
10148
test00 (unsigned int a, int* b, int c, int* d, unsigned int e)
10149
Index: gcc/testsuite/gfortran.dg/gomp/pr59467.f90
10150
===================================================================
10151
--- a/src/gcc/testsuite/gfortran.dg/gomp/pr59467.f90 (.../tags/gcc_4_8_2_release)
10152
+++ b/src/gcc/testsuite/gfortran.dg/gomp/pr59467.f90 (.../branches/gcc-4_8-branch)
10154
+! PR libgomp/59467
10155
+! { dg-do compile }
10156
+! { dg-options "-fopenmp" }
10158
+ INTEGER :: a, b, t
10161
+ !$OMP PARALLEL REDUCTION(+:b)
10162
+ !$OMP SINGLE ! { dg-error "is not threadprivate or private in outer context" }
10163
+ !$OMP ATOMIC WRITE
10165
+ !$OMP END SINGLE COPYPRIVATE (a)
10167
+ !$OMP END PARALLEL
10170
+ !$OMP PARALLEL REDUCTION(+:b)
10172
+ !$OMP ATOMIC WRITE
10174
+ !$OMP END SINGLE COPYPRIVATE (b)
10175
+ !$OMP END PARALLEL
10178
Index: gcc/testsuite/gfortran.dg/reshape_6.f90
10179
===================================================================
10180
--- a/src/gcc/testsuite/gfortran.dg/reshape_6.f90 (.../tags/gcc_4_8_2_release)
10181
+++ b/src/gcc/testsuite/gfortran.dg/reshape_6.f90 (.../branches/gcc-4_8-branch)
10183
+! { dg-do compile }
10184
+! PR fortran/58989
10188
+ real(8), dimension(4,4) :: fluxes
10189
+ real(8), dimension(2,2,2,2) :: f
10190
+ integer, dimension(3) :: dmmy
10191
+ integer, parameter :: indx(4)=(/2,2,2,2/)
10197
+ f = reshape(fluxes,(/dmmy,2/)) ! Caused an ICE
10198
+ f = reshape(fluxes,(/2,2,2,2/)) ! Works as expected
10199
+ f = reshape(fluxes,indx) ! Works as expected
10202
Index: gcc/testsuite/gfortran.dg/derived_external_function_1.f90
10203
===================================================================
10204
--- a/src/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 (.../tags/gcc_4_8_2_release)
10205
+++ b/src/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 (.../branches/gcc-4_8-branch)
10209
+! PR fortran/58771
10211
+! Contributed by Vittorio Secca <zeccav@gmail.com>
10213
+! ICEd on the write statement with f() because the derived type backend
10214
+! declaration not built.
10222
+type(t) function f() result(ff)
10228
+ character (20) :: line1, line2
10230
+ write (line1, *) f()
10231
+ write (line2, *) 42_4
10232
+ if (line1 .ne. line2) call abort
10234
Index: gcc/testsuite/gfortran.dg/constructor_9.f90
10235
===================================================================
10236
--- a/src/gcc/testsuite/gfortran.dg/constructor_9.f90 (.../tags/gcc_4_8_2_release)
10237
+++ b/src/gcc/testsuite/gfortran.dg/constructor_9.f90 (.../branches/gcc-4_8-branch)
10239
+! { dg-do compile }
10240
+! { dg-options "-Wall" }
10242
+! PR 58471: [4.8/4.9 Regression] ICE on invalid with missing type constructor and -Wall
10244
+! Contributed by Andrew Benson <abensonca@gmail.com>
10251
+ module procedure mdedc ! { dg-error "is neither function nor subroutine" }
10255
+ type(cfmde), pointer :: cfd
10256
+ cfd=cfmde() ! { dg-error "Can't convert" }
10260
+! { dg-final { cleanup-modules "cf" } }
10261
Index: gcc/testsuite/gfortran.dg/generic_28.f90
10262
===================================================================
10263
--- a/src/gcc/testsuite/gfortran.dg/generic_28.f90 (.../tags/gcc_4_8_2_release)
10264
+++ b/src/gcc/testsuite/gfortran.dg/generic_28.f90 (.../branches/gcc-4_8-branch)
10266
+! { dg-do compile }
10268
+! PR 58998: [4.8/4.9 Regression] Generic interface problem with gfortran
10270
+! Contributed by Paul van Delst
10273
+ procedure iargc_8
10278
+ integer(8) function iargc_8()
10280
+ iargc_8 = iargc()
10284
Index: gcc/testsuite/gfortran.dg/proc_ptr_43.f90
10285
===================================================================
10286
--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_43.f90 (.../tags/gcc_4_8_2_release)
10287
+++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_43.f90 (.../branches/gcc-4_8-branch)
10289
+! { dg-do compile }
10291
+! PR 58099: [4.8/4.9 Regression] [F03] over-zealous procedure-pointer error checking
10293
+! Contributed by Daniel Price <daniel.price@monash.edu>
10296
+ procedure(real), pointer :: wfunc
10302
+ pure real function w_cubic(q2)
10303
+ real, intent(in) :: q2
10308
Index: gcc/testsuite/gfortran.dg/extends_15.f90
10309
===================================================================
10310
--- a/src/gcc/testsuite/gfortran.dg/extends_15.f90 (.../tags/gcc_4_8_2_release)
10311
+++ b/src/gcc/testsuite/gfortran.dg/extends_15.f90 (.../branches/gcc-4_8-branch)
10313
+! { dg-do compile }
10315
+! PR 58355: [4.7/4.8/4.9 Regression] [F03] ICE with TYPE, EXTENDS before parent TYPE defined
10317
+! Contributed by Andrew Benson <abensonca@gmail.com>
10322
+ type, extends(t1) :: t2 ! { dg-error "has not been previously defined" }
10328
+! { dg-final { cleanup-modules "ct" } }
10329
Index: gcc/testsuite/gfortran.dg/optional_class_1.f90
10330
===================================================================
10331
--- a/src/gcc/testsuite/gfortran.dg/optional_class_1.f90 (.../tags/gcc_4_8_2_release)
10332
+++ b/src/gcc/testsuite/gfortran.dg/optional_class_1.f90 (.../branches/gcc-4_8-branch)
10336
+! PR fortran/57445
10338
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
10340
+! Spurious assert was added at revision 192495
10348
+ subroutine opt(xa, xc, xaa, xca)
10349
+ type(t), allocatable, intent(out), optional :: xa
10350
+ class(t), allocatable, intent(out), optional :: xc
10351
+ type(t), allocatable, intent(out), optional :: xaa(:)
10352
+ class(t), allocatable, intent(out), optional :: xca(:)
10353
+ if (present (xca)) call foo_opt(xca=xca)
10354
+ end subroutine opt
10355
+ subroutine foo_opt(xa, xc, xaa, xca)
10356
+ type(t), allocatable, intent(out), optional :: xa
10357
+ class(t), allocatable, intent(out), optional :: xc
10358
+ type(t), allocatable, intent(out), optional :: xaa(:)
10359
+ class(t), allocatable, intent(out), optional :: xca(:)
10360
+ if (present (xca)) then
10361
+ if (allocated (xca)) deallocate (xca)
10362
+ allocate (xca(3), source = [t(9),t(99),t(999)])
10364
+ end subroutine foo_opt
10367
+ class(t), allocatable :: xca(:)
10368
+ allocate (xca(1), source = t(42))
10369
+ select type (xca)
10371
+ if (any (xca%i .ne. [42])) call abort
10373
+ call opt (xca = xca)
10374
+ select type (xca)
10376
+ if (any (xca%i .ne. [9,99,999])) call abort
10379
Index: gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90
10380
===================================================================
10381
--- a/src/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 (.../tags/gcc_4_8_2_release)
10382
+++ b/src/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 (.../branches/gcc-4_8-branch)
10386
+! PR 59654: [4.8/4.9 Regression] [OOP] Broken function table with complex OO use case
10388
+! Contributed by Thomas Clune <Thomas.L.Clune@nasa.gov>
10390
+module TestResult_mod
10394
+ integer :: numRun = 0
10397
+ procedure, nopass :: getNumRun
10402
+ subroutine run (this)
10403
+ class (TestResult) :: this
10404
+ this%numRun = this%numRun + 1
10407
+ subroutine getNumRun()
10413
+module BaseTestRunner_mod
10416
+ type :: BaseTestRunner
10418
+ procedure, nopass :: norun
10423
+ function norun () result(result)
10424
+ use TestResult_mod, only: TestResult
10425
+ type (TestResult) :: result
10431
+module TestRunner_mod
10432
+ use BaseTestRunner_mod, only: BaseTestRunner
10438
+ use TestRunner_mod, only: BaseTestRunner
10439
+ use TestResult_mod, only: TestResult
10442
+ type (TestResult) :: result
10444
+ call runtest (result)
10448
+ subroutine runtest (result)
10449
+ use TestResult_mod, only: TestResult
10450
+ class (TestResult) :: result
10451
+ call result%run()
10452
+ if (result%numRun /= 1) call abort()
10457
+! { dg-final { cleanup-modules "TestResult_mod BaseTestRunner_mod TestRunner_mod" } }
10458
Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90
10459
===================================================================
10460
--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 (.../tags/gcc_4_8_2_release)
10461
+++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_15.f90 (.../branches/gcc-4_8-branch)
10463
+! { dg-do compile }
10465
+! PR 59493: [OOP] ICE: Segfault on Class(*) pointer association
10467
+! Contributed by Hossein Talebi <talebi.hossein@gmail.com>
10474
+ class(ty_mytype1), allocatable, target:: cla1
10475
+ class(*), pointer :: ptr
10480
Index: gcc/testsuite/gcc.c-torture/execute/pr58984.c
10481
===================================================================
10482
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr58984.c (.../tags/gcc_4_8_2_release)
10483
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr58984.c (.../branches/gcc-4_8-branch)
10485
+/* PR tree-optimization/58984 */
10487
+struct S { int f0 : 8; int : 6; int f1 : 5; };
10488
+struct T { char f0; int : 6; int f1 : 5; };
10490
+int a, *c = &a, e, n, b, m;
10495
+ const unsigned short *f[36];
10496
+ for (; e < 2; e++)
10498
+ const unsigned short **i = &f[0];
10512
+ const unsigned short *f[36];
10513
+ for (; e < 2; e++)
10515
+ const unsigned short **i = &f[0];
10529
+ struct S o = { 1, 1 };
10533
+ __builtin_abort ();
10535
+ struct T p = { 1, 1 };
10539
+ __builtin_abort ();
10542
Index: gcc/testsuite/gcc.c-torture/execute/20131127-1.c
10543
===================================================================
10544
--- a/src/gcc/testsuite/gcc.c-torture/execute/20131127-1.c (.../tags/gcc_4_8_2_release)
10545
+++ b/src/gcc/testsuite/gcc.c-torture/execute/20131127-1.c (.../branches/gcc-4_8-branch)
10547
+/* PR middle-end/59138 */
10548
+/* Testcase by John Regehr <regehr@cs.utah.edu> */
10550
+extern void abort (void);
10563
+struct S0 b = { 1 }, c, d, e;
10565
+struct S0 fn1() { return c; }
10581
Index: gcc/testsuite/gcc.c-torture/execute/pr59358.c
10582
===================================================================
10583
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr59358.c (.../tags/gcc_4_8_2_release)
10584
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr59358.c (.../branches/gcc-4_8-branch)
10586
+/* PR tree-optimization/59358 */
10588
+__attribute__((noinline, noclone)) int
10589
+foo (int *x, int y)
10592
+ if (y > z && y <= 16)
10602
+ for (i = 1; i < 17; i++)
10604
+ int j = foo (&i, 16);
10606
+ if (i >= 8 && i <= 15)
10607
+ k = 16 + (i - 8) * 2;
10608
+ else if (i >= 4 && i <= 7)
10609
+ k = 16 + (i - 4) * 4;
10615
+ __builtin_abort ();
10620
+ k = 8 + (i - 4) * 2;
10626
+ __builtin_abort ();
10630
Index: gcc/testsuite/gcc.c-torture/execute/pr59014-2.c
10631
===================================================================
10632
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c (.../tags/gcc_4_8_2_release)
10633
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c (.../branches/gcc-4_8-branch)
10635
+/* PR tree-optimization/59014 */
10637
+__attribute__((noinline, noclone)) long long int
10638
+foo (long long int x, long long int y)
10640
+ if (((int) x | (int) y) != 0)
10648
+ if (sizeof (long long) == sizeof (int))
10650
+ int shift_half = sizeof (int) * __CHAR_BIT__ / 2;
10651
+ long long int x = (3LL << shift_half) << shift_half;
10652
+ long long int y = (5LL << shift_half) << shift_half;
10653
+ long long int z = foo (x, y);
10654
+ if (z != ((8LL << shift_half) << shift_half))
10655
+ __builtin_abort ();
10658
Index: gcc/testsuite/gcc.c-torture/execute/pr59101.c
10659
===================================================================
10660
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr59101.c (.../tags/gcc_4_8_2_release)
10661
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr59101.c (.../branches/gcc-4_8-branch)
10663
+/* PR target/59101 */
10665
+__attribute__((noinline, noclone)) int
10668
+ return (~a & 4102790424LL) > 0 | 6;
10674
+ if (foo (0) != 7)
10675
+ __builtin_abort ();
10678
Index: gcc/testsuite/gcc.c-torture/execute/pr58831.c
10679
===================================================================
10680
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr58831.c (.../tags/gcc_4_8_2_release)
10681
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr58831.c (.../branches/gcc-4_8-branch)
10683
+#include <assert.h>
10685
+int a, *b, c, d, f, **i, p, q, *r;
10688
+static int __attribute__((noinline, noclone))
10689
+fn1 (int *p1, int **p2)
10701
+static int ** __attribute__((noinline, noclone))
10704
+ for (f = 0; f != 42; f++)
10706
+ int *g[3] = {0, 0, 0};
10707
+ for (o = 0; o; o--)
10710
+ int **h[1] = { &g[2] };
10723
Index: gcc/testsuite/gcc.c-torture/execute/pr58726.c
10724
===================================================================
10725
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr58726.c (.../tags/gcc_4_8_2_release)
10726
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr58726.c (.../branches/gcc-4_8-branch)
10728
+/* PR rtl-optimization/58726 */
10731
+union { int f1; int f2 : 1; } b;
10736
+ return p < 0 ? p : a;
10742
+ if (sizeof (short) * __CHAR_BIT__ != 16
10743
+ || sizeof (int) * __CHAR_BIT__ != 32)
10746
+ unsigned short d;
10748
+ d = e == 0 ? b.f1 : 0;
10750
+ if (c != (short) 56374)
10751
+ __builtin_abort ();
10754
Index: gcc/testsuite/gcc.c-torture/execute/pr59014.c
10755
===================================================================
10756
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr59014.c (.../tags/gcc_4_8_2_release)
10757
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr59014.c (.../branches/gcc-4_8-branch)
10759
+/* PR tree-optimization/59014 */
10761
+int a = 2, b, c, d;
10767
+ if ((b > 0) | (a & 1))
10781
+ __builtin_abort ();
10784
Index: gcc/testsuite/gcc.c-torture/execute/pr59388.c
10785
===================================================================
10786
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr59388.c (.../tags/gcc_4_8_2_release)
10787
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr59388.c (.../branches/gcc-4_8-branch)
10789
+/* PR tree-optimization/59388 */
10792
+struct S { unsigned int f:1; } b;
10797
+ a = (0 < b.f) | b.f;
10800
Index: gcc/testsuite/gcc.c-torture/compile/pr58970-1.c
10801
===================================================================
10802
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr58970-1.c (.../tags/gcc_4_8_2_release)
10803
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr58970-1.c (.../branches/gcc-4_8-branch)
10805
+/* PR middle-end/58970 */
10807
+struct T { int b : 1; };
10808
+struct S { struct T t[1]; };
10811
+foo (int x, struct S *s)
10816
Index: gcc/testsuite/gcc.c-torture/compile/pr59803.c
10817
===================================================================
10818
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr59803.c (.../tags/gcc_4_8_2_release)
10819
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr59803.c (.../branches/gcc-4_8-branch)
10821
+/* PR target/59803 */
10823
+extern void baz (void) __attribute__ ((__noreturn__));
10824
+struct A { int g, h; };
10825
+extern struct A a;
10826
+struct B { unsigned char i, j, k, l, m; };
10844
+ if (x->i != e) baz ();
10845
+ if (x->k != c) baz ();
10846
+ if (x->j != a.h) baz ();
10848
Index: gcc/testsuite/gcc.c-torture/compile/pr58997.c
10849
===================================================================
10850
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr58997.c (.../tags/gcc_4_8_2_release)
10851
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr58997.c (.../branches/gcc-4_8-branch)
10853
+/* PR rtl-optimization/58997 */
10864
+ d = a ? c : 1 % a;
10872
Index: gcc/testsuite/gcc.c-torture/compile/pr58970-2.c
10873
===================================================================
10874
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr58970-2.c (.../tags/gcc_4_8_2_release)
10875
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr58970-2.c (.../branches/gcc-4_8-branch)
10877
+/* PR middle-end/58970 */
10879
+struct T { char a : 8; char b : 1; };
10880
+struct S { char x; struct T t[1]; };
10883
+foo (int x, struct S *s)
10888
Index: gcc/testsuite/gcc.c-torture/compile/pr59362.c
10889
===================================================================
10890
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr59362.c (.../tags/gcc_4_8_2_release)
10891
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr59362.c (.../branches/gcc-4_8-branch)
10893
+/* PR tree-optimization/59362 */
10896
+foo (char *r, int s)
10898
+ r = __builtin___stpcpy_chk (r, "abc", __builtin_object_size (r, 1));
10900
+ r = __builtin___stpcpy_chk (r, "d", __builtin_object_size (r, 1));
10910
+ b = __builtin_object_size (0, 0);
10911
+ a = __builtin___stpcpy_chk (0, "", b);
10912
+ b = __builtin_object_size (a, 0);
10914
Index: gcc/testsuite/gcc.dg/pr58668.c
10915
===================================================================
10916
--- a/src/gcc/testsuite/gcc.dg/pr58668.c (.../tags/gcc_4_8_2_release)
10917
+++ b/src/gcc/testsuite/gcc.dg/pr58668.c (.../branches/gcc-4_8-branch)
10919
+/* PR rtl-optimization/58668 */
10920
+/* { dg-do compile } */
10921
+/* { dg-options "-O2" } */
10922
+/* { dg-additional-options "-mthumb" { target { { arm*-*-* } && arm_thumb2_ok } } } */
10924
+void *fn1 (void *);
10925
+void *fn2 (void *, const char *);
10926
+void fn3 (void *);
10927
+void fn4 (void *, int);
10933
+ if (!(a = fn1 (x)))
10934
+ return (void *) 0;
10935
+ if (!(b = fn2 (a, "w")))
10938
+ return (void *) 0;
10944
Index: gcc/testsuite/gcc.dg/pr57518.c
10945
===================================================================
10946
--- a/src/gcc/testsuite/gcc.dg/pr57518.c (.../tags/gcc_4_8_2_release)
10947
+++ b/src/gcc/testsuite/gcc.dg/pr57518.c (.../branches/gcc-4_8-branch)
10949
-/* PR rtl-optimization/57130 */
10950
+/* PR rtl-optimization/57518 */
10952
/* { dg-do compile } */
10953
/* { dg-options "-O2 -fdump-rtl-ira" } */
10954
-/* { dg-final { scan-rtl-dump-not "REG_EQUIV.*mem.*\"ip\"" "ira" } } */
10955
+/* { dg-final { scan-rtl-dump-not "REG_EQUIV\[^\n\]*mem\[^\n\]*\"ip\".*subreg" "ira" } } */
10959
Index: gcc/testsuite/gcc.dg/builtin-object-size-14.c
10960
===================================================================
10961
--- a/src/gcc/testsuite/gcc.dg/builtin-object-size-14.c (.../tags/gcc_4_8_2_release)
10962
+++ b/src/gcc/testsuite/gcc.dg/builtin-object-size-14.c (.../branches/gcc-4_8-branch)
10964
+/* { dg-do run } */
10965
+/* { dg-options "-O2" } */
10967
+extern void abort (void);
10968
+extern char *strncpy(char *, const char *, __SIZE_TYPE__);
10975
+ char all[8+16+4];
10978
+void __attribute__((noinline,noclone))
10982
+ __builtin_strncpy(vi, u->vi, sizeof(u->vi));
10983
+ if (__builtin_object_size (u->all, 1) != -1)
10992
Index: gcc/testsuite/gcc.dg/20050922-1.c
10993
===================================================================
10994
--- a/src/gcc/testsuite/gcc.dg/20050922-1.c (.../tags/gcc_4_8_2_release)
10995
+++ b/src/gcc/testsuite/gcc.dg/20050922-1.c (.../branches/gcc-4_8-branch)
10997
/* { dg-do run } */
10998
/* { dg-options "-O1 -std=c99" } */
11000
-#include <stdlib.h>
11001
+extern void abort (void);
11003
#if __INT_MAX__ == 2147483647
11004
typedef unsigned int uint32_t;
11005
Index: gcc/testsuite/gcc.dg/pr46309.c
11006
===================================================================
11007
--- a/src/gcc/testsuite/gcc.dg/pr46309.c (.../tags/gcc_4_8_2_release)
11008
+++ b/src/gcc/testsuite/gcc.dg/pr46309.c (.../branches/gcc-4_8-branch)
11010
/* PR tree-optimization/46309 */
11011
-/* { dg-do compile } */
11012
+/* { dg-do compile { target { ! { cris*-*-* } } } } */
11013
/* { dg-options "-O2 -fdump-tree-reassoc-details" } */
11014
/* The transformation depends on BRANCH_COST being greater than 1
11015
(see the notes in the PR), so try to force that. */
11016
Index: gcc/testsuite/gcc.dg/atomic-store-6.c
11017
===================================================================
11018
--- a/src/gcc/testsuite/gcc.dg/atomic-store-6.c (.../tags/gcc_4_8_2_release)
11019
+++ b/src/gcc/testsuite/gcc.dg/atomic-store-6.c (.../branches/gcc-4_8-branch)
11021
+/* { dg-do run } */
11022
+/* { dg-require-effective-target sync_int_128_runtime } */
11023
+/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
11029
+ __atomic_store_16(&i, -1, 0);
11031
+ __builtin_abort();
11034
Index: gcc/testsuite/gcc.dg/pr59827.c
11035
===================================================================
11036
--- a/src/gcc/testsuite/gcc.dg/pr59827.c (.../tags/gcc_4_8_2_release)
11037
+++ b/src/gcc/testsuite/gcc.dg/pr59827.c (.../branches/gcc-4_8-branch)
11039
+/* PR middle-end/59827 */
11040
+/* { dg-do compile } */
11043
+foo (int p[2][]) /* { dg-error "array type has incomplete element type" } */
11052
+ foo (p); /* { dg-error "type of formal parameter 1 is incomplete" } */
11054
Index: gcc/testsuite/gcc.dg/strlenopt-4gf.c
11055
===================================================================
11056
--- a/src/gcc/testsuite/gcc.dg/strlenopt-4gf.c (.../tags/gcc_4_8_2_release)
11057
+++ b/src/gcc/testsuite/gcc.dg/strlenopt-4gf.c (.../branches/gcc-4_8-branch)
11059
#include "strlenopt-4.c"
11061
/* { dg-final { scan-tree-dump-times "strlen \\(" 1 "strlen" } } */
11062
-/* { dg-final { scan-tree-dump-times "__memcpy_chk \\(" 4 "strlen" } } */
11063
-/* { dg-final { scan-tree-dump-times "__strcpy_chk \\(" 1 "strlen" } } */
11064
+/* { dg-final { scan-tree-dump-times "__memcpy_chk \\(" 0 "strlen" } } */
11065
+/* { dg-final { scan-tree-dump-times "__strcpy_chk \\(" 0 "strlen" } } */
11066
/* { dg-final { scan-tree-dump-times "__strcat_chk \\(" 0 "strlen" } } */
11067
/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
11068
-/* { dg-final { scan-tree-dump-times "__stpcpy_chk \\(" 5 "strlen" } } */
11069
-/* { dg-final { scan-tree-dump-times "memcpy \\(" 0 "strlen" } } */
11070
-/* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
11071
+/* { dg-final { scan-tree-dump-times "__stpcpy_chk \\(" 0 "strlen" } } */
11072
+/* { dg-final { scan-tree-dump-times "memcpy \\(" 4 "strlen" } } */
11073
+/* { dg-final { scan-tree-dump-times "strcpy \\(" 1 "strlen" } } */
11074
/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
11075
-/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
11076
+/* { dg-final { scan-tree-dump-times "stpcpy \\(" 5 "strlen" } } */
11077
/* { dg-final { cleanup-tree-dump "strlen" } } */
11078
Index: gcc/testsuite/gcc.dg/pr59351.c
11079
===================================================================
11080
--- a/src/gcc/testsuite/gcc.dg/pr59351.c (.../tags/gcc_4_8_2_release)
11081
+++ b/src/gcc/testsuite/gcc.dg/pr59351.c (.../branches/gcc-4_8-branch)
11083
+/* { dg-do compile } */
11084
+/* { dg-options "-std=c99 -Wpedantic" } */
11089
+ return sizeof ((int[]) {}); /* { dg-warning "ISO C forbids empty initializer braces" } */
11091
Index: gcc/testsuite/gcc.dg/builtin-object-size-8.c
11092
===================================================================
11093
--- a/src/gcc/testsuite/gcc.dg/builtin-object-size-8.c (.../tags/gcc_4_8_2_release)
11094
+++ b/src/gcc/testsuite/gcc.dg/builtin-object-size-8.c (.../branches/gcc-4_8-branch)
11096
-/* { dg-do run { xfail *-*-* } } */
11097
+/* { dg-do run } */
11098
/* { dg-options "-O2" } */
11100
typedef __SIZE_TYPE__ size_t;
11101
Index: gcc/testsuite/gcc.dg/20050922-2.c
11102
===================================================================
11103
--- a/src/gcc/testsuite/gcc.dg/20050922-2.c (.../tags/gcc_4_8_2_release)
11104
+++ b/src/gcc/testsuite/gcc.dg/20050922-2.c (.../branches/gcc-4_8-branch)
11106
/* { dg-do run } */
11107
/* { dg-options "-O1 -std=c99" } */
11109
-#include <stdlib.h>
11110
+extern void abort (void);
11111
+extern void exit (int);
11113
#if __INT_MAX__ == 2147483647
11114
typedef unsigned int uint32_t;
11115
Index: gcc/testsuite/gcc.dg/pr59011.c
11116
===================================================================
11117
--- a/src/gcc/testsuite/gcc.dg/pr59011.c (.../tags/gcc_4_8_2_release)
11118
+++ b/src/gcc/testsuite/gcc.dg/pr59011.c (.../branches/gcc-4_8-branch)
11120
+/* PR middle-end/59011 */
11121
+/* { dg-do compile } */
11122
+/* { dg-options "-std=gnu99" } */
11142
Index: gcc/testsuite/gcc.dg/pr58805.c
11143
===================================================================
11144
--- a/src/gcc/testsuite/gcc.dg/pr58805.c (.../tags/gcc_4_8_2_release)
11145
+++ b/src/gcc/testsuite/gcc.dg/pr58805.c (.../branches/gcc-4_8-branch)
11147
+/* { dg-do compile } */
11148
+/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */
11150
+/* Type that matches the 'p' constraint. */
11151
+#define TYPE void *
11154
+void bar (TYPE *r)
11157
+ __asm__ ("" : "=&p" (t), "=p" (*r));
11161
+foo (int n, TYPE *x, TYPE *y)
11169
+/* { dg-final { scan-tree-dump-times "__asm__" 2 "pre"} } */
11170
+/* { dg-final { cleanup-tree-dump "pre" } } */
11171
Index: gcc/testsuite/gcc.dg/strlenopt-14gf.c
11172
===================================================================
11173
--- a/src/gcc/testsuite/gcc.dg/strlenopt-14gf.c (.../tags/gcc_4_8_2_release)
11174
+++ b/src/gcc/testsuite/gcc.dg/strlenopt-14gf.c (.../branches/gcc-4_8-branch)
11175
@@ -11,14 +11,14 @@
11177
/* { dg-final { scan-tree-dump-times "strlen \\(" 4 "strlen" } } */
11178
/* { dg-final { scan-tree-dump-times "__memcpy_chk \\(" 0 "strlen" } } */
11179
-/* { dg-final { scan-tree-dump-times "__mempcpy_chk \\(" 2 "strlen" } } */
11180
+/* { dg-final { scan-tree-dump-times "__mempcpy_chk \\(" 0 "strlen" } } */
11181
/* { dg-final { scan-tree-dump-times "__strcpy_chk \\(" 0 "strlen" } } */
11182
/* { dg-final { scan-tree-dump-times "__strcat_chk \\(" 0 "strlen" } } */
11183
/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
11184
-/* { dg-final { scan-tree-dump-times "__stpcpy_chk \\(" 3 "strlen" } } */
11185
-/* { dg-final { scan-tree-dump-times "memcpy \\(" 0 "strlen" } } */
11186
-/* { dg-final { scan-tree-dump-times "mempcpy \\(" 0 "strlen" } } */
11187
+/* { dg-final { scan-tree-dump-times "__stpcpy_chk \\(" 0 "strlen" } } */
11188
+/* { dg-final { scan-tree-dump-times "memcpy \\(" 1 "strlen" } } */
11189
+/* { dg-final { scan-tree-dump-times "mempcpy \\(" 2 "strlen" } } */
11190
/* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
11191
/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
11192
-/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
11193
+/* { dg-final { scan-tree-dump-times "stpcpy \\(" 2 "strlen" } } */
11194
/* { dg-final { cleanup-tree-dump "strlen" } } */
11195
Index: gcc/testsuite/gcc.dg/torture/pr59047.c
11196
===================================================================
11197
--- a/src/gcc/testsuite/gcc.dg/torture/pr59047.c (.../tags/gcc_4_8_2_release)
11198
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59047.c (.../branches/gcc-4_8-branch)
11200
+/* { dg-do run } */
11202
+extern void abort (void);
11211
+int b, c, *d, e, f;
11216
+ for (; b < 1; ++b)
11218
+ for (e = 0; e < 1; e = 1)
11239
Index: gcc/testsuite/gcc.dg/torture/pr58956.c
11240
===================================================================
11241
--- a/src/gcc/testsuite/gcc.dg/torture/pr58956.c (.../tags/gcc_4_8_2_release)
11242
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58956.c (.../branches/gcc-4_8-branch)
11244
+/* { dg-do run } */
11246
+extern void abort (void);
11251
+} a = {1}, b, g, *c = &b, **f = &c;
11253
+int *d, **e = &d, h;
11260
+ __builtin_unreachable ();
11274
Index: gcc/testsuite/gcc.dg/torture/pr57517.c
11275
===================================================================
11276
--- a/src/gcc/testsuite/gcc.dg/torture/pr57517.c (.../tags/gcc_4_8_2_release)
11277
+++ b/src/gcc/testsuite/gcc.dg/torture/pr57517.c (.../branches/gcc-4_8-branch)
11279
+/* { dg-do compile } */
11281
+int x[1024], y[1024], z[1024], w[1024];
11285
+ for (i = 1; i < 1024; ++i)
11292
+ z[i] = (a + b) + (c + d);
11295
Index: gcc/testsuite/gcc.dg/torture/pr59164.c
11296
===================================================================
11297
--- a/src/gcc/testsuite/gcc.dg/torture/pr59164.c (.../tags/gcc_4_8_2_release)
11298
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59164.c (.../branches/gcc-4_8-branch)
11300
+/* { dg-do compile } */
11314
+ for (a=1; a <= 4; a++)
11316
+ f = fn1(0 < c[a][0]);
11321
Index: gcc/testsuite/gcc.dg/torture/pr58779.c
11322
===================================================================
11323
--- a/src/gcc/testsuite/gcc.dg/torture/pr58779.c (.../tags/gcc_4_8_2_release)
11324
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58779.c (.../branches/gcc-4_8-branch)
11326
+/* { dg-do run } */
11333
+ short d = (c <= 0) ^ e;
11334
+ if ((unsigned int) a - (a || d) <= (unsigned int) a)
11335
+ __builtin_abort ();
11338
Index: gcc/testsuite/gcc.dg/torture/pr59139.c
11339
===================================================================
11340
--- a/src/gcc/testsuite/gcc.dg/torture/pr59139.c (.../tags/gcc_4_8_2_release)
11341
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59139.c (.../branches/gcc-4_8-branch)
11343
+/* { dg-do compile } */
11345
+int a, b, c, d, e;
11346
+int fn1(p1, p2) { return p2 == 0 ? p1 : 1 % p2; }
11351
+ for (;; c = (unsigned short)c)
11356
+ e = fn1(2, c && 1);
11357
+ d = c == 0 ? e : c;
11363
Index: gcc/testsuite/gcc.dg/torture/pr58079.c
11364
===================================================================
11365
--- a/src/gcc/testsuite/gcc.dg/torture/pr58079.c (.../tags/gcc_4_8_2_release)
11366
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58079.c (.../branches/gcc-4_8-branch)
11368
+/* { dg-options "-mlong-calls" { target mips*-*-* } } */
11370
+typedef unsigned char u8;
11371
+typedef unsigned short u16;
11372
+typedef unsigned int __kernel_size_t;
11373
+typedef __kernel_size_t size_t;
11374
+struct list_head {
11375
+ struct list_head *next;
11378
+struct dmx_ts_feed {
11379
+ int is_filtering;
11381
+struct dmx_section_feed {
11387
+typedef int (*dmx_ts_cb) (
11388
+ const u8 * buffer1,
11389
+ size_t buffer1_length,
11390
+ const u8 * buffer2,
11391
+ size_t buffer2_length
11394
+struct dvb_demux_feed {
11396
+ struct dmx_ts_feed ts;
11397
+ struct dmx_section_feed sec;
11405
+ struct list_head list_head;
11408
+struct dvb_demux {
11409
+ int (*stop_feed)(struct dvb_demux_feed *feed);
11410
+ struct list_head feed_list;
11416
+__attribute__((always_inline))
11418
+payload(const u8 *tsp)
11420
+ if (tsp[3] & 0x20) {
11421
+ return 184 - 1 - tsp[4];
11428
+__attribute__((always_inline))
11430
+dvb_dmx_swfilter_payload(struct dvb_demux_feed *feed, const u8 *buf)
11432
+ int count = payload(buf);
11436
+ return feed->cb.ts(&buf[p], count, ((void *)0), 0);
11441
+__attribute__((always_inline))
11443
+dvb_dmx_swfilter_packet_type(struct dvb_demux_feed *feed, const u8 *buf)
11445
+ switch (feed->type) {
11447
+ if (feed->ts_type & 1) {
11448
+ dvb_dmx_swfilter_payload(feed, buf);
11450
+ if (dvb_dmx_swfilter_section_packet(feed, buf) < 0)
11451
+ feed->feed.sec.seclen = feed->feed.sec.secbufp = 0;
11457
+dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)
11459
+ struct dvb_demux_feed *feed;
11460
+ int dvr_done = 0;
11462
+ for (feed = ({ const typeof( ((typeof(*feed) *)0)->list_head ) *__mptr = ((&demux->feed_list)->next); (typeof(*feed) *)( (char *)__mptr - __builtin_offsetof(typeof(*feed),list_head) );}); __builtin_prefetch(feed->list_head.next), &feed->list_head != (&demux->feed_list); feed = ({ const typeof( ((typeof(*feed) *)0)->list_head ) *__mptr = (feed->list_head.next); (typeof(*feed) *)( (char *)__mptr - __builtin_offsetof(typeof(*feed),list_head) );})) {
11463
+ if (((((feed)->type == 0) && ((feed)->feed.ts.is_filtering) && (((feed)->ts_type & (1 | 8)) == 1))) && (dvr_done++))
11464
+ dvb_dmx_swfilter_packet_type(feed, buf);
11465
+ else if (feed->pid == 0x2000)
11466
+ feed->cb.ts(buf, 188, ((void *)0), 0);
11469
+void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, size_t count)
11471
+ while (count--) {
11472
+ dvb_dmx_swfilter_packet(demux, buf);
11475
Index: gcc/testsuite/gcc.dg/torture/pr58830.c
11476
===================================================================
11477
--- a/src/gcc/testsuite/gcc.dg/torture/pr58830.c (.../tags/gcc_4_8_2_release)
11478
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58830.c (.../branches/gcc-4_8-branch)
11480
+/* { dg-do run } */
11481
+/* { dg-additional-options "-ftree-pre -ftree-partial-pre" } */
11483
+extern void abort (void);
11485
+int b, c, d, f, g, h, i, j[6], *l = &b, *m, n, *o, r;
11497
+ h = c || (r = 0);
11499
+ for (f = 0; f < 2; f++)
11507
+ for (q = -8; q >= 5; q++)
11518
+ if (j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ^ (k & 15)] != 0)
11522
Index: gcc/testsuite/gcc.dg/torture/pr59715.c
11523
===================================================================
11524
--- a/src/gcc/testsuite/gcc.dg/torture/pr59715.c (.../tags/gcc_4_8_2_release)
11525
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59715.c (.../branches/gcc-4_8-branch)
11527
+/* { dg-do run } */
11529
+extern void abort (void);
11540
+ c = a == 0 ? 1 : 1 % a;
11548
Index: gcc/testsuite/gcc.dg/torture/pr58143-1.c
11549
===================================================================
11550
--- a/src/gcc/testsuite/gcc.dg/torture/pr58143-1.c (.../tags/gcc_4_8_2_release)
11551
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58143-1.c (.../branches/gcc-4_8-branch)
11553
+/* { dg-do run } */
11554
+/* { dg-additional-options "-fstrict-overflow" } */
11556
+extern void abort (void);
11558
+int a, b, c, d, e, f, g, h = 1, i;
11562
+ return p < 0 && a < - __INT_MAX__ - 1 - p ? 0 : 1;
11568
+ i = h ? 0 : 1 % h;
11569
+ for (j = 0; j < 1; j++)
11570
+ for (d = 0; d; d++)
11578
+ for (; b >= 0; b--)
11579
+ for (c = 1; c >= 0; c--)
11584
+ for (f = 0; f < 1; f++)
11604
Index: gcc/testsuite/gcc.dg/torture/pr58143-2.c
11605
===================================================================
11606
--- a/src/gcc/testsuite/gcc.dg/torture/pr58143-2.c (.../tags/gcc_4_8_2_release)
11607
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58143-2.c (.../branches/gcc-4_8-branch)
11609
+/* { dg-do run } */
11610
+/* { dg-additional-options "-fstrict-overflow" } */
11612
+int a, b, d, e, f, *g, h, i;
11615
+char foo (unsigned char p)
11622
+ for (h = 0; h < 3; h = foo (h))
11625
+ for (f = 0; f < 1; f++)
11627
+ i = a && 0 < -__INT_MAX__ - h ? 0 : 1;
11643
Index: gcc/testsuite/gcc.dg/torture/pr58941.c
11644
===================================================================
11645
--- a/src/gcc/testsuite/gcc.dg/torture/pr58941.c (.../tags/gcc_4_8_2_release)
11646
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58941.c (.../branches/gcc-4_8-branch)
11648
+/* { dg-do run } */
11650
+extern void abort (void);
11654
+ unsigned char data[1000];
11662
+int condition = 3;
11667
+ SData *pData = (SData*)(msg.data);
11668
+ unsigned int i = 0;
11669
+ for (i = 0; i < 1; i++)
11672
+ if(condition & 1)
11673
+ pData->d[i] |= 0x55;
11674
+ if(condition & 2)
11675
+ pData->d[i] |= 0xaa;
11677
+ if (pData->d[0] != 0xff)
11681
Index: gcc/testsuite/gcc.dg/torture/pr57488.c
11682
===================================================================
11683
--- a/src/gcc/testsuite/gcc.dg/torture/pr57488.c (.../tags/gcc_4_8_2_release)
11684
+++ b/src/gcc/testsuite/gcc.dg/torture/pr57488.c (.../branches/gcc-4_8-branch)
11686
+/* { dg-do run } */
11688
+extern void abort (void);
11690
+int i, j, *pj = &j, **ppj = &pj;
11693
+short s, *ps = &s, k;
11695
+unsigned short u, *pu = &u, **ppu = &pu;
11699
+unsigned char v = 48;
11712
+void __attribute__((noinline))
11715
+ for (; i <= 3; i++)
11720
+ for (k = 1; k >= 0; k--)
11724
+ for (l = 1; l < 5; l++)
11727
+ for (m = 6; m; m--)
11744
Index: gcc/testsuite/gcc.dg/torture/pr58143-3.c
11745
===================================================================
11746
--- a/src/gcc/testsuite/gcc.dg/torture/pr58143-3.c (.../tags/gcc_4_8_2_release)
11747
+++ b/src/gcc/testsuite/gcc.dg/torture/pr58143-3.c (.../branches/gcc-4_8-branch)
11749
+/* { dg-do run } */
11750
+/* { dg-additional-options "-fstrict-overflow" } */
11752
+int a, b, c, d, e;
11757
+ for (b = 4; b > -30; b--)
11761
+ e = a > __INT_MAX__ - b;
11767
Index: gcc/testsuite/gcc.dg/torture/pr59288.c
11768
===================================================================
11769
--- a/src/gcc/testsuite/gcc.dg/torture/pr59288.c (.../tags/gcc_4_8_2_release)
11770
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59288.c (.../branches/gcc-4_8-branch)
11772
+/* { dg-do compile } */
11777
+ long int i, j, k;
11778
+ for (i = 0, j = 0, k = 0; i < 512; i = (int) i + 1, j = (int) j + 1, k = (int) k + 3)
11779
+ d[i] = j ^ (i * 3) ^ (2 * k + 2);
11781
Index: gcc/testsuite/gcc.dg/torture/pr59330.c
11782
===================================================================
11783
--- a/src/gcc/testsuite/gcc.dg/torture/pr59330.c (.../tags/gcc_4_8_2_release)
11784
+++ b/src/gcc/testsuite/gcc.dg/torture/pr59330.c (.../branches/gcc-4_8-branch)
11786
+/* { dg-do run } */
11788
+void free(void *ptr)
11803
Index: gcc/testsuite/gcc.dg/tree-ssa/predcom-6.c
11804
===================================================================
11805
--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-6.c (.../tags/gcc_4_8_2_release)
11806
+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-6.c (.../branches/gcc-4_8-branch)
11808
+/* { dg-do run } */
11809
+/* { dg-options "-O3" } */
11811
+int a, c, e[5][2];
11817
+ for (d = 0; d < 2; d++)
11818
+ if (a ? 0 : e[c + 3][d] & e[c + 4][d])
11822
Index: gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c
11823
===================================================================
11824
--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c (.../tags/gcc_4_8_2_release)
11825
+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c (.../branches/gcc-4_8-branch)
11827
+/* { dg-do run } */
11828
+/* { dg-options "-O3 -fdump-tree-pcom-details" } */
11830
+int b, f, d[5][2];
11836
+ for (c = 0; c < 2; c++)
11837
+ if (d[b + 3][c] & d[b + 4][c])
11843
+/* { dg-final { scan-tree-dump "Executing predictive commoning" "pcom" } } */
11844
+/* { dg-final { cleanup-tree-dump "pcom" } } */
11845
Index: gcc/testsuite/gcc.dg/ipa/pr59610.c
11846
===================================================================
11847
--- a/src/gcc/testsuite/gcc.dg/ipa/pr59610.c (.../tags/gcc_4_8_2_release)
11848
+++ b/src/gcc/testsuite/gcc.dg/ipa/pr59610.c (.../branches/gcc-4_8-branch)
11850
+/* { dg-do compile } */
11851
+/* { dg-options "-O2" } */
11853
+struct A { int a; };
11856
+__attribute__((optimize (0))) void
11857
+foo (void *p, struct A x)
11861
Index: gcc/testsuite/gcc.dg/strlenopt-1f.c
11862
===================================================================
11863
--- a/src/gcc/testsuite/gcc.dg/strlenopt-1f.c (.../tags/gcc_4_8_2_release)
11864
+++ b/src/gcc/testsuite/gcc.dg/strlenopt-1f.c (.../branches/gcc-4_8-branch)
11866
#include "strlenopt-1.c"
11868
/* { dg-final { scan-tree-dump-times "strlen \\(" 2 "strlen" } } */
11869
-/* { dg-final { scan-tree-dump-times "__memcpy_chk \\(" 3 "strlen" } } */
11870
-/* { dg-final { scan-tree-dump-times "__strcpy_chk \\(" 1 "strlen" } } */
11871
+/* { dg-final { scan-tree-dump-times "__memcpy_chk \\(" 0 "strlen" } } */
11872
+/* { dg-final { scan-tree-dump-times "__strcpy_chk \\(" 0 "strlen" } } */
11873
/* { dg-final { scan-tree-dump-times "__strcat_chk \\(" 0 "strlen" } } */
11874
/* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
11875
/* { dg-final { scan-tree-dump-times "__stpcpy_chk \\(" 0 "strlen" } } */
11876
-/* { dg-final { scan-tree-dump-times "memcpy \\(" 0 "strlen" } } */
11877
-/* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
11878
+/* { dg-final { scan-tree-dump-times "memcpy \\(" 3 "strlen" } } */
11879
+/* { dg-final { scan-tree-dump-times "strcpy \\(" 1 "strlen" } } */
11880
/* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
11881
/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
11882
/* { dg-final { cleanup-tree-dump "strlen" } } */
11883
Index: gcc/testsuite/ChangeLog
11884
===================================================================
11885
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_2_release)
11886
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch)
11888
+2014-01-15 Kugan Vivekanandarajah <kuganv@linaro.org>
11890
+ Backport from mainline
11891
+ 2014-01-15 Matthew Gretton-Dann <matthew.gretton-dann@linaro.org>
11892
+ Kugan Vivekanandarajah <kuganv@linaro.org>
11895
+ * g++.dg/pr59695.C: New testcase.
11897
+2014-01-17 Terry Guo <terry.guo@arm.com>
11899
+ * gcc.target/arm/pr59826.c: New test.
11901
+2014-01-16 Jakub Jelinek <jakub@redhat.com>
11904
+ * gcc.target/i386/pr59839.c: New test.
11907
+ * gcc.target/i386/pr9771-1.c (main): Rename to...
11908
+ (real_main): ... this. Add __asm name "main".
11909
+ (ASMNAME, ASMNAME2, STRING): Define.
11911
+2014-01-16 Marek Polacek <polacek@redhat.com>
11913
+ Backported from mainline
11914
+ 2014-01-16 Marek Polacek <polacek@redhat.com>
11916
+ PR middle-end/59827
11917
+ * gcc.dg/pr59827.c: New test.
11919
+2014-01-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
11922
+ * gcc.c-torture/compile/pr59803.c: New testcase.
11924
+2014-01-10 Yufeng Zhang <yufeng.zhang@arm.com>
11926
+ * gcc.target/arm/neon/vst1Q_laneu64-1.c: New test.
11928
+2014-01-10 Hans-Peter Nilsson <hp@axis.com>
11930
+ * gcc.dg/pr46309.c: Disable for cris*-*-*.
11932
+2014-01-10 Paolo Carlini <paolo.carlini@oracle.com>
11936
+ * g++.dg/cpp0x/variadic144.C: New.
11937
+ * g++.dg/cpp0x/variadic145.C: Likewise.
11939
+2014-01-10 Richard Biener <rguenther@suse.de>
11941
+ PR tree-optimization/59715
11942
+ * gcc.dg/torture/pr59715.c: New testcase.
11944
+2014-01-09 Richard Sandiford <rdsandiford@googlemail.com>
11946
+ * gcc.target/mips/bswap-1.c, gcc.target/mips/bswap-2.c,
11947
+ gcc.target/mips/bswap-3.c, gcc.target/mips/bswap-4.c,
11948
+ gcc.target/mips/bswap-5.c, gcc.target/mips/bswap-6.c: New tests.
11950
+2014-01-09 Richard Sandiford <rdsandiford@googlemail.com>
11952
+ PR rtl-optimization/59137
11953
+ * gcc.target/mips/pr59137.c: New test.
11955
+2014-01-09 Richard Biener <rguenther@suse.de>
11957
+ Backport from mainline
11958
+ 2013-11-18 Richard Biener <rguenther@suse.de>
11960
+ PR tree-optimization/59125
11961
+ PR tree-optimization/54570
11962
+ * gcc.dg/builtin-object-size-8.c: Un-xfail.
11963
+ * gcc.dg/builtin-object-size-14.c: New testcase.
11964
+ * gcc.dg/strlenopt-14gf.c: Adjust.
11965
+ * gcc.dg/strlenopt-1f.c: Likewise.
11966
+ * gcc.dg/strlenopt-4gf.c: Likewise.
11968
+ 2013-12-03 Jakub Jelinek <jakub@redhat.com>
11970
+ PR tree-optimization/59362
11971
+ * gcc.c-torture/compile/pr59362.c: New test.
11973
+2014-01-09 Richard Earnshaw <rearnsha@arm.com>
11975
+ PR rtl-optimization/54300
11976
+ * gcc.target/arm/pr54300.C: New test.
11978
+2014-01-08 Martin Jambor <mjambor@suse.cz>
11981
+ * gcc.dg/ipa/pr59610.c: New test.
11983
+2014-01-07 Jakub Jelinek <jakub@redhat.com>
11985
+ PR rtl-optimization/58668
11986
+ * gcc.dg/pr58668.c: New test.
11988
+ Backported from mainline
11989
+ 2013-12-16 Jakub Jelinek <jakub@redhat.com>
11991
+ PR middle-end/58956
11992
+ PR middle-end/59470
11993
+ * gcc.target/i386/pr59470.c: New test.
11995
+2014-01-04 Janus Weil <janus@gcc.gnu.org>
11997
+ Backport from mainline
11998
+ 2014-01-02 Janus Weil <janus@gcc.gnu.org>
12001
+ * gfortran.dg/dynamic_dispatch_12.f90: New.
12003
+2014-01-03 Joseph Myers <joseph@codesourcery.com>
12005
+ * gcc.target/powerpc/rs6000-ldouble-3.c: New test.
12007
+2014-01-03 Jakub Jelinek <jakub@redhat.com>
12010
+ * gcc.target/i386/pr59625.c: New test.
12012
+2014-01-01 Jakub Jelinek <jakub@redhat.com>
12014
+ PR rtl-optimization/59647
12015
+ * g++.dg/opt/pr59647.C: New test.
12017
+2013-12-31 Janus Weil <janus@gcc.gnu.org>
12019
+ Backport from mainline
12020
+ 2013-12-30 Janus Weil <janus@gcc.gnu.org>
12023
+ * gfortran.dg/generic_28.f90: New.
12025
+2013-12-20 Jakub Jelinek <jakub@redhat.com>
12028
+ * g++.dg/tree-prof/pr59255.C: New test.
12030
+2013-12-19 James Greenhalgh <james.greenhalgh@arm.com>
12032
+ Backport from Mainline
12033
+ 2013-05-01 James Greenhalgh <james.greenhalgh@arm.com>
12035
+ * gcc.target/aarch64/scalar_intrinsics.c (force_simd): New.
12036
+ (test_vceqd_s64): Force arguments to SIMD registers.
12037
+ (test_vceqzd_s64): Likewise.
12038
+ (test_vcged_s64): Likewise.
12039
+ (test_vcled_s64): Likewise.
12040
+ (test_vcgezd_s64): Likewise.
12041
+ (test_vcged_u64): Likewise.
12042
+ (test_vcgtd_s64): Likewise.
12043
+ (test_vcltd_s64): Likewise.
12044
+ (test_vcgtzd_s64): Likewise.
12045
+ (test_vcgtd_u64): Likewise.
12046
+ (test_vclezd_s64): Likewise.
12047
+ (test_vcltzd_s64): Likewise.
12048
+ (test_vtst_s64): Likewise.
12049
+ (test_vtst_u64): Likewise.
12051
+2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
12052
+ Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
12054
+ Backport from mainline
12055
+ 2013-12-19 Dominik Vogt <vogt@linux.vnet.ibm.com>
12056
+ * gcc/testsuite/gcc.target/s390/hotpatch-1.c: New test
12057
+ * gcc/testsuite/gcc.target/s390/hotpatch-2.c: New test
12058
+ * gcc/testsuite/gcc.target/s390/hotpatch-3.c: New test
12059
+ * gcc/testsuite/gcc.target/s390/hotpatch-4.c: New test
12060
+ * gcc/testsuite/gcc.target/s390/hotpatch-5.c: New test
12061
+ * gcc/testsuite/gcc.target/s390/hotpatch-6.c: New test
12062
+ * gcc/testsuite/gcc.target/s390/hotpatch-7.c: New test
12063
+ * gcc/testsuite/gcc.target/s390/hotpatch-8.c: New test
12064
+ * gcc/testsuite/gcc.target/s390/hotpatch-9.c: New test
12065
+ * gcc/testsuite/gcc.target/s390/hotpatch-10.c: New test
12066
+ * gcc/testsuite/gcc.target/s390/hotpatch-11.c: New test
12067
+ * gcc/testsuite/gcc.target/s390/hotpatch-12.c: New test
12068
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-1.c: New test
12069
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-2.c: New test
12070
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-3.c: New test
12071
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-4.c: New test
12072
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-5.c: New test
12073
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-6.c: New test
12074
+ * gcc/testsuite/gcc.target/s390/hotpatch-compile-7.c: New test
12076
+2013-12-18 Janus Weil <janus@gcc.gnu.org>
12078
+ Backport from mainline
12079
+ 2013-12-15 Janus Weil <janus@gcc.gnu.org>
12082
+ * gfortran.dg/unlimited_polymorphic_15.f90: New.
12084
+2013-12-15 Uros Bizjak <ubizjak@gmail.com>
12086
+ PR testsuite/58630
12087
+ * gcc.target/i386/pr43662.c (dg-options):
12088
+ Add -maccumulate-outgoing-args.
12089
+ * gcc.target/i386/pr43869.c (dg-options): Ditto.
12090
+ * gcc.target/i386/pr57003.c (dg-options): Ditto.
12091
+ * gcc.target/i386/avx-vzeroupper-16.c (dg-options):
12092
+ Remove -mtune=generic and add -maccumulate-outgoing-args instead.
12093
+ * gcc.target/i386/avx-vzeroupper-17.c (dg-options): Ditto.
12094
+ * gcc.target/i386/avx-vzeroupper-18.c (dg-options): Ditto.
12095
+ * gcc.target/x86_64/abi/callabi/func-1.c (dg-options):
12096
+ Add -maccumulate-outgoing-args.
12097
+ * gcc.target/x86_64/abi/callabi/func-2a.c (dg-options): Ditto.
12098
+ * gcc.target/x86_64/abi/callabi/func-2b.c (dg-options): Ditto.
12099
+ * gcc.target/x86_64/abi/callabi/func-indirect.c (dg-options): Ditto.
12100
+ * gcc.target/x86_64/abi/callabi/func-indirect-2a.c (dg-options): Ditto.
12101
+ * gcc.target/x86_64/abi/callabi/func-indirect-2b.c (dg-options): Ditto.
12102
+ * gcc.target/x86_64/abi/callabi/leaf-1.c (dg-options): Ditto.
12103
+ * gcc.target/x86_64/abi/callabi/leaf-2.c (dg-options): Ditto.
12104
+ * gcc.target/x86_64/abi/callabi/pr38891.c (dg-options): Ditto.
12105
+ * gcc.target/x86_64/abi/callabi/vaarg-1.c (dg-options): Ditto.
12106
+ * gcc.target/x86_64/abi/callabi/vaarg-2.c (dg-options): Ditto.
12107
+ * gcc.target/x86_64/abi/callabi/vaarg-3.c (dg-options): Ditto.
12108
+ * gcc.target/x86_64/abi/callabi/vaarg-4a.c (dg-options): Ditto.
12109
+ * gcc.target/x86_64/abi/callabi/vaarg-4b.c (dg-options): Ditto.
12110
+ * gcc.target/x86_64/abi/callabi/vaarg-5a.c (dg-options): Ditto.
12111
+ * gcc.target/x86_64/abi/callabi/vaarg-5b.c (dg-options): Ditto.
12113
+2013-12-12 Jakub Jelinek <jakub@redhat.com>
12115
+ PR middle-end/59470
12116
+ * g++.dg/opt/pr59470.C: New test.
12119
+ * gfortran.dg/gomp/pr59467.f90: New test.
12120
+ * c-c++-common/gomp/pr59467.c: New test.
12122
+2013-12-12 Uros Bizjak <ubizjak@gmail.com>
12124
+ Backport from mainline
12125
+ 2013-12-12 Ryan Mansfield <rmansfield@qnx.com>
12127
+ PR testsuite/59442
12128
+ * gcc.target/i386/sse2-movapd-1.c: Fix alignment attributes.
12129
+ * gcc.target/i386/sse2-movapd-2.c: Likewise.
12130
+ * gcc.target/i386/avx-vmovapd-256-1.c: Likewise.
12131
+ * gcc.target/i386/avx-vmovapd-256-2.c: Likewise.
12133
+2013-12-08 Uros Bizjak <ubizjak@gmail.com>
12135
+ Backport from mainline
12136
+ 2013-12-06 Uros Bizjak <ubizjak@gmail.com>
12139
+ * gcc.target/i386/pr59405.c: New test.
12141
+2013-12-06 Jakub Jelinek <jakub@redhat.com>
12143
+ PR tree-optimization/59388
12144
+ * gcc.c-torture/execute/pr59388.c: New test.
12146
+2013-12-06 Richard Biener <rguenther@suse.de>
12148
+ Backport from mainline
12149
+ 2013-11-28 Richard Biener <rguenther@suse.de>
12151
+ PR tree-optimization/59330
12152
+ * gcc.dg/torture/pr59330.c: New testcase.
12154
+2013-12-06 Richard Biener <rguenther@suse.de>
12156
+ Backport from mainline
12157
+ 2013-11-27 Richard Biener <rguenther@suse.de>
12159
+ PR tree-optimization/59288
12160
+ * gcc.dg/torture/pr59288.c: New testcase.
12162
+ 2013-11-19 Richard Biener <rguenther@suse.de>
12164
+ PR tree-optimization/59164
12165
+ * gcc.dg/torture/pr59164.c: New testcase.
12167
+ 2013-09-05 Richard Biener <rguenther@suse.de>
12169
+ PR tree-optimization/58137
12170
+ * gcc.target/i386/pr58137.c: New testcase.
12172
+2013-12-06 Oleg Endo <olegendo@gcc.gnu.org>
12176
+ * gcc.target/sh/pr51244-19.c: Adjust test case.
12178
+2013-12-05 Richard Biener <rguenther@suse.de>
12180
+ Backport from mainline
12181
+ 2013-11-19 Richard Biener <rguenther@suse.de>
12183
+ PR middle-end/58956
12184
+ * gcc.dg/torture/pr58956.c: New testcase.
12186
+2013-12-04 Jakub Jelinek <jakub@redhat.com>
12189
+ * g++.dg/cpp0x/constexpr-template6.C: New test.
12191
+ PR rtl-optimization/58726
12192
+ * gcc.c-torture/execute/pr58726.c: New test.
12195
+ * g++.dg/torture/pr59163.C: New test.
12197
+2013-12-03 Marek Polacek <polacek@redhat.com>
12199
+ Backport from mainline
12200
+ 2013-12-03 Marek Polacek <polacek@redhat.com>
12203
+ * gcc.dg/pr59351.c: New test.
12205
+2013-12-03 Jakub Jelinek <jakub@redhat.com>
12207
+ PR middle-end/59011
12208
+ * gcc.dg/pr59011.c: New test.
12211
+ * g++.dg/opt/pr58864.C: New test.
12213
+2013-12-02 Jakub Jelinek <jakub@redhat.com>
12215
+ PR tree-optimization/59358
12216
+ * gcc.c-torture/execute/pr59358.c: New test.
12218
+2013-12-02 Richard Biener <rguenther@suse.de>
12220
+ PR tree-optimization/59139
12221
+ * gcc.dg/torture/pr59139.c: New testcase.
12223
+2013-11-27 Tom de Vries <tom@codesourcery.com>
12224
+ Marc Glisse <marc.glisse@inria.fr>
12227
+ * c-c++-common/pr59032.c: New testcase.
12229
+2013-11-27 Tom de Vries <tom@codesourcery.com>
12230
+ Marc Glisse <marc.glisse@inria.fr>
12232
+ PR middle-end/59037
12233
+ * c-c++-common/pr59037.c: New testcase.
12235
+2013-11-30 Paul Thomas <pault@gcc.gnu.org>
12237
+ Backport from mainline
12238
+ 2013-11-04 Paul Thomas <pault@gcc.gnu.org>
12241
+ * gfortran.dg/optional_class_1.f90 : New test
12243
+2013-11-29 Jakub Jelinek <jakub@redhat.com>
12246
+ * c-c++-common/pr59280.c: New test.
12248
+2013-11-28 Jakub Jelinek <jakub@redhat.com>
12251
+ * g++.dg/gomp/pr59297.C: New test.
12253
+2013-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12255
+ Backport from mainline
12256
+ 2013-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12258
+ * gcc.target/arm/vrinta-ce.c: New testcase.
12260
+2013-11-28 Uros Bizjak <ubizjak@gmail.com>
12262
+ Backport from mainline
12263
+ 2013-11-23 Uros Bizjak <ubizjak@gmail.com>
12266
+ * config/i386/i386.c (bdesc_multi_arg) <IX86_BUILTIN_VFRCZSS>:
12267
+ Declare as MULTI_ARG_1_SF instruction.
12268
+ <IX86_BUILTIN_VFRCZSD>: Decleare as MULTI_ARG_1_DF instruction.
12269
+ * config/i386/sse.md (*xop_vmfrcz<mode>2): Rename
12270
+ from *xop_vmfrcz_<mode>.
12271
+ * config/i386/xopintrin.h (_mm_frcz_ss): Use __builtin_ia32_movss
12272
+ to merge scalar result with __A.
12273
+ (_mm_frcz_sd): Use __builtin_ia32_movsd to merge scalar
12276
+2013-11-28 Terry Guo <terry.guo@arm.com>
12278
+ Backport mainline r205391
12279
+ 2013-11-26 Terry Guo <terry.guo@arm.com>
12281
+ * gcc.target/arm/thumb1-pic-high-reg.c: New case.
12282
+ * gcc.target/arm/thumb1-pic-single-base.c: New case.
12284
+2013-11-27 Jakub Jelinek <jakub@redhat.com>
12286
+ Backported from mainline
12287
+ 2013-11-27 Jakub Jelinek <jakub@redhat.com>
12289
+ PR tree-optimization/59014
12290
+ * gcc.c-torture/execute/pr59014-2.c: New test.
12292
+ 2013-11-26 Jakub Jelinek <jakub@redhat.com>
12294
+ PR tree-optimization/59014
12295
+ * gcc.c-torture/execute/pr59014.c: New test.
12297
+2013-11-27 Eric Botcazou <ebotcazou@adacore.com>
12299
+ * gcc.c-torture/execute/20131127-1.c: New test.
12301
+2013-11-25 Vidya Praveen <vidyapraveen@arm.com>
12303
+ Backport from mainline
12304
+ 2013-10-21 Vidya Praveen <vidyapraveen@arm.com>
12306
+ * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort().
12307
+ * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort() and exit().
12309
+2013-11-20 Dominik Vogt <vogt@linux.vnet.ibm.com>
12311
+ Backport from mainline
12312
+ * gcc.target/s390/htm-1.c: Rename to ...
12313
+ * gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c: ... this
12315
+ * gcc.target/s390/htm-xl-intrin-1.c: Rename to ...
12316
+ * gcc.target/s390/htm-builtins-compile-3.c: ... this one.
12317
+ * gcc.target/s390/htm-builtins-compile-2.c: New testcase.
12318
+ * gcc.target/s390/htm-builtins-1.c: New testcase.
12319
+ * gcc.target/s390/htm-builtins-2.c: New testcase.
12320
+ * gcc.target/s390/s390.exp: Add check for htm machine.
12322
+2013-11-19 Richard Biener <rguenther@suse.de>
12324
+ PR tree-optimization/57517
12325
+ * gfortran.fortran-torture/compile/pr57517.f90: New testcase.
12326
+ * gcc.dg/torture/pr57517.c: Likewise.
12328
+2013-11-19 Richard Biener <rguenther@suse.de>
12330
+ Backport from mainline
12331
+ 2013-11-05 Richard Biener <rguenther@suse.de>
12333
+ PR middle-end/58941
12334
+ * gcc.dg/torture/pr58941.c: New testcase.
12336
+2013-11-18 Richard Biener <rguenther@suse.de>
12338
+ Backport from mainline
12339
+ 2013-10-21 Richard Biener <rguenther@suse.de>
12341
+ PR tree-optimization/58794
12342
+ * c-c++-common/torture/pr58794-1.c: New testcase.
12343
+ * c-c++-common/torture/pr58794-2.c: Likewise.
12345
+ 2013-10-21 Richard Biener <rguenther@suse.de>
12347
+ PR middle-end/58742
12348
+ * c-c++-common/fold-divmul-1.c: New testcase.
12350
+ 2013-11-06 Richard Biener <rguenther@suse.de>
12352
+ PR tree-optimization/58653
12353
+ * gcc.dg/tree-ssa/predcom-6.c: New testcase.
12354
+ * gcc.dg/tree-ssa/predcom-7.c: Likewise.
12356
+ PR tree-optimization/59047
12357
+ * gcc.dg/torture/pr59047.c: New testcase.
12359
+ 2013-10-15 Richard Biener <rguenther@suse.de>
12361
+ PR tree-optimization/58143
12362
+ * gcc.dg/torture/pr58143-1.c: New testcase.
12363
+ * gcc.dg/torture/pr58143-2.c: Likewise.
12364
+ * gcc.dg/torture/pr58143-3.c: Likewise.
12366
+2013-11-17 Janus Weil <janus@gcc.gnu.org>
12368
+ Backport from mainline
12369
+ 2013-11-07 Janus Weil <janus@gcc.gnu.org>
12372
+ * gfortran.dg/constructor_9.f90: New.
12374
+2013-11-16 Janus Weil <janus@gcc.gnu.org>
12376
+ Backport from mainline
12377
+ 2013-09-20 Janus Weil <janus@gcc.gnu.org>
12380
+ * gfortran.dg/proc_ptr_43.f90: New.
12382
+2013-11-16 Paul Thomas <pault@gcc.gnu.org>
12385
+ * gfortran.dg/derived_external_function_1.f90 : New test
12387
+2013-11-14 Uros Bizjak <ubizjak@gmail.com>
12389
+ Backport from mainline
12390
+ 2013-11-06 Uros Bizjak <ubizjak@gmail.com>
12393
+ * gcc.target/i386/pr59021.c: New test.
12395
+2013-11-14 Jakub Jelinek <jakub@redhat.com>
12398
+ * gcc.c-torture/execute/pr59101.c: New test.
12400
+2013-11-11 Jakub Jelinek <jakub@redhat.com>
12402
+ Backported from mainline
12403
+ 2013-11-06 Jakub Jelinek <jakub@redhat.com>
12405
+ PR middle-end/58970
12406
+ * gcc.c-torture/compile/pr58970-1.c: New test.
12407
+ * gcc.c-torture/compile/pr58970-2.c: New test.
12409
+ 2013-11-05 Jakub Jelinek <jakub@redhat.com>
12411
+ PR rtl-optimization/58997
12412
+ * gcc.c-torture/compile/pr58997.c: New test.
12414
+2013-11-10 Wei Mi <wmi@google.com>
12416
+ * gcc.dg/pr57518.c: Backport regex fix from r200720.
12418
+2013-11-07 H.J. Lu <hongjiu.lu@intel.com>
12420
+ Backport from mainline
12421
+ 2013-11-07 H.J. Lu <hongjiu.lu@intel.com>
12424
+ * gcc.target/i386/pr59034-1.c: New test.
12425
+ * gcc.target/i386/pr59034-2.c: Likewise.
12427
+2013-11-06 Wei Mi <wmi@google.com>
12429
+ PR regression/58985
12430
+ * gcc.dg/pr57518.c: Add subreg in regexp pattern.
12432
+2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
12435
+ * gfortran.dg/reshape_6.f90: New test.
12437
+2013-11-05 Jakub Jelinek <jakub@redhat.com>
12439
+ PR tree-optimization/58984
12440
+ * gcc.c-torture/execute/pr58984.c: New test.
12442
+2013-11-04 Marek Polacek <polacek@redhat.com>
12444
+ Backport from mainline
12445
+ 2013-11-04 Marek Polacek <polacek@redhat.com>
12448
+ * g++.dg/diagnostic/pr58979.C: New test.
12450
+2013-11-03 H.J. Lu <hongjiu.lu@intel.com>
12452
+ Backport from mainline
12453
+ 2013-10-12 H.J. Lu <hongjiu.lu@intel.com>
12456
+ * gcc.target/i386/pr58690.c: New test
12458
+2013-11-02 Janus Weil <janus@gcc.gnu.org>
12460
+ Backport from mainline
12461
+ 2013-09-23 Janus Weil <janus@gcc.gnu.org>
12464
+ * gfortran.dg/extends_15.f90: New.
12466
+2013-10-29 Uros Bizjak <ubizjak@gmail.com>
12468
+ Backport from mainline
12469
+ 2013-08-08 Richard Sandiford <rdsandiford@googlemail.com>
12471
+ PR rtl-optimization/58079
12472
+ * gcc.dg/torture/pr58079.c: New test.
12474
+2013-10-28 Tom de Vries <tom@codesourcery.com>
12476
+ * gcc.target/arm/require-pic-register-loc.c: New test.
12478
+2013-10-26 Uros Bizjak <ubizjak@gmail.com>
12480
+ Backport from mainline
12481
+ 2013-10-22 Uros Bizjak <ubizjak@gmail.com>
12484
+ * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY
12485
+ and MINUSCCZEXT defines. Update scan-assembler dg directive.
12486
+ * gcc.dg/torture/pr58779.c: New test.
12488
+2013-10-25 Richard Henderson <rth@redhat.com>
12491
+ * gcc.dg/atomic-store-6.c: New.
12493
+2013-10-25 Tom de Vries <tom@codesourcery.com>
12496
+ * g++.dg/tm/noexcept-6.C: New test.
12498
+2013-10-25 Eric Botcazou <ebotcazou@adacore.com>
12500
+ * gcc.c-torture/execute/pr58831.c: New test.
12502
+2013-10-23 Tom de Vries <tom@codesourcery.com>
12504
+ PR tree-optimization/58805
12505
+ * gcc.dg/pr58805.c: New test.
12507
+2013-10-23 Richard Biener <rguenther@suse.de>
12509
+ * gcc.dg/torture/pr58830.c: New testcase.
12511
+ Backport from mainline
12512
+ 2013-06-24 Richard Biener <rguenther@suse.de>
12514
+ PR tree-optimization/57488
12515
+ * gcc.dg/torture/pr57488.c: New testcase.
12517
+2013-10-19 Oleg Endo <olegendo@gcc.gnu.org>
12519
+ * gcc.target/sh/pr54089-3.c: Fix test for load of constant 31.
12521
+2013-10-17 Paolo Carlini <paolo.carlini@oracle.com>
12524
+ * g++.dg/cpp0x/lambda/lambda-nsdmi5.C: New
12526
+2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
12529
+ * g++.dg/cpp0x/decltype57.C: New.
12530
+ * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
12532
2013-10-16 Release Manager
12534
* GCC 4.8.2 released.
12536
Backport from mainline
12537
2013-06-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
12539
- * gcc.target/s390/htm-1.c: New file.
12540
- * gcc.target/s390/htm-nofloat-1.c: New file.
12541
- * gcc.target/s390/htm-xl-intrin-1.c: New file.
12542
+ * gcc.target/s390/htm-1.c: New file.
12543
+ * gcc.target/s390/htm-nofloat-1.c: New file.
12544
+ * gcc.target/s390/htm-xl-intrin-1.c: New file.
12546
2013-10-04 Tobias Burnus <burnus@net-b.de>
12548
@@ -307,8 +951,8 @@
12549
Backport from mainline
12550
2013-08-12 Perez Read <netfirewall@gmail.com>
12553
- * gcc.target/i386/movabs-1.c: New test.
12555
+ * gcc.target/i386/movabs-1.c: New test.
12557
2013-08-11 Janus Weil <janus@gcc.gnu.org>
12559
@@ -494,7 +1138,7 @@
12560
2013-06-19 Wei Mi <wmi@google.com>
12562
PR rtl-optimization/57518
12563
- * testsuite/gcc.dg/pr57518.c: New test.
12564
+ * gcc.dg/pr57518.c: New test.
12566
2013-06-11 Tobias Burnus <burnus@net-b.de>
12568
@@ -623,8 +1267,8 @@
12570
2013-05-09 Martin Jambor <mjambor@suse.cz>
12572
- PR middle-end/56988
12573
- * gcc.dg/ipa/pr56988.c: New test.
12574
+ PR middle-end/56988
12575
+ * gcc.dg/ipa/pr56988.c: New test.
12577
2013-05-08 Marc Glisse <marc.glisse@inria.fr>
12579
@@ -701,7 +1345,7 @@
12580
2013-04-25 Marek Polacek <polacek@redhat.com>
12582
PR tree-optimization/57066
12583
- * gcc.dg/torture/builtin-logb-1.c: Adjust testcase.
12584
+ * gcc.dg/torture/builtin-logb-1.c: Adjust testcase.
12586
2013-05-02 Jakub Jelinek <jakub@redhat.com>
12588
@@ -727,32 +1371,32 @@
12589
Backport from mainline
12590
2013-04-24 Vladimir Makarov <vmakarov@redhat.com>
12592
- PR rtl-optimizations/57046
12593
- * gcc.target/i386/pr57046.c: New test.
12594
+ PR rtl-optimizations/57046
12595
+ * gcc.target/i386/pr57046.c: New test.
12597
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
12599
Backport from mainline
12600
2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
12603
- * gcc.target/i386/pr57018.c: New test.
12605
+ * gcc.target/i386/pr57018.c: New test.
12607
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
12609
Backport from mainline
12610
2013-04-18 Jakub Jelinek <jakub@redhat.com>
12612
- PR rtl-optimization/56999
12613
- * g++.dg/opt/pr56999.C: New test.
12614
+ PR rtl-optimization/56999
12615
+ * g++.dg/opt/pr56999.C: New test.
12617
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
12619
Backport from mainline
12620
2013-04-19 Vladimir Makarov <vmakarov@redhat.com>
12622
- PR rtl-optimization/56847
12623
- * gcc.dg/pr56847.c: New test.
12624
+ PR rtl-optimization/56847
12625
+ * gcc.dg/pr56847.c: New test.
12627
2013-05-02 Ian Bolton <ian.bolton@arm.com>
12629
@@ -1102,7 +1746,7 @@
12630
2013-03-29 Tobias Burnus <burnus@net-b.de>
12633
- * testsuite/gfortran.dg/fmt_cache_3.f90: New.
12634
+ * gfortran.dg/fmt_cache_3.f90: New.
12636
2013-04-02 Richard Biener <rguenther@suse.de>
12638
@@ -1636,7 +2280,7 @@
12639
2013-02-20 Jan Hubicka <jh@suse.cz>
12641
PR tree-optimization/56265
12642
- * testsuite/g++.dg/ipa/devirt-11.C: New testcase.
12643
+ * g++.dg/ipa/devirt-11.C: New testcase.
12645
2013-02-20 Richard Biener <rguenther@suse.de>
12647
@@ -1823,11 +2467,9 @@
12649
Avoid instrumenting duplicated memory access in the same basic block
12650
* c-c++-common/asan/no-redundant-instrumentation-1.c: New test.
12651
- * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c:
12653
- * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c:
12655
- * testsuite/c-c++-common/asan/inc.c: Likewise.
12656
+ * c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise.
12657
+ * c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise.
12658
+ * c-c++-common/asan/inc.c: Likewise.
12660
2013-02-12 Vladimir Makarov <vmakarov@redhat.com>
12662
Index: gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90
12663
===================================================================
12664
--- a/src/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 (.../tags/gcc_4_8_2_release)
12665
+++ b/src/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 (.../branches/gcc-4_8-branch)
12667
+SUBROUTINE cal_helicity (uh, ph, phb, wavg, ims, ime, its, ite)
12668
+ INTEGER, INTENT( IN ) :: ims, ime, its, ite
12669
+ REAL, DIMENSION( ims:ime), INTENT( IN ) :: ph, phb, wavg
12670
+ REAL, DIMENSION( ims:ime), INTENT( INOUT ) :: uh
12674
+ zu = (ph(i ) + phb(i)) + (ph(i-1) + phb(i-1))
12675
+ IF (wavg(i) .GT. 0) THEN
12676
+ uh(i) = uh(i) + zu
12679
+END SUBROUTINE cal_helicity
12680
Index: gcc/testsuite/g++.dg/opt/pr59647.C
12681
===================================================================
12682
--- a/src/gcc/testsuite/g++.dg/opt/pr59647.C (.../tags/gcc_4_8_2_release)
12683
+++ b/src/gcc/testsuite/g++.dg/opt/pr59647.C (.../branches/gcc-4_8-branch)
12685
+// PR rtl-optimization/59647
12686
+// { dg-do compile }
12687
+// { dg-options "-O2 -fno-tree-vrp" }
12688
+// { dg-additional-options "-msse2 -mfpmath=sse" { target { { i?86-*-* x86_64-*-* } && ia32 } } }
12714
+ unsigned b = x->f5 ();
12715
+ f1 (b - 1 - f3 (x->f5 () - 1U));
12717
Index: gcc/testsuite/g++.dg/opt/pr59470.C
12718
===================================================================
12719
--- a/src/gcc/testsuite/g++.dg/opt/pr59470.C (.../tags/gcc_4_8_2_release)
12720
+++ b/src/gcc/testsuite/g++.dg/opt/pr59470.C (.../branches/gcc-4_8-branch)
12722
+// PR middle-end/59470
12724
+// { dg-options "-O2 -fstack-protector" }
12725
+// { dg-additional-options "-fPIC" { target fpic } }
12726
+// { dg-require-effective-target fstack_protector }
12731
+ A () throw () : a1 (0) {}
12736
+ unsigned int b1 () throw ();
12739
+__attribute__((noinline, noclone)) unsigned int
12742
+ asm volatile ("" : : : "memory");
12749
+ void c2 (const A *, unsigned int);
12752
+__attribute__((noinline, noclone)) void
12753
+C::c2 (const A *, unsigned int)
12755
+ asm volatile ("" : : : "memory");
12772
+ virtual int f1 (const char * s, int n);
12779
+ G & g3 (const char * ws, int len)
12781
+ if (__builtin_expect (!g2, true)
12782
+ && __builtin_expect (this->g1->f1 (ws, len) != len, false))
12788
+struct H : public A
12798
+ H () : h1 (0), h2 (0), h4 (0), h5 (0), h6 (0), h8 (false) {}
12799
+ void h9 (const D &) __attribute__((noinline, noclone));
12806
+ __builtin_memset (h7, 0, sizeof (h7));
12807
+ asm volatile ("" : : : "memory");
12815
+ const unsigned int i = b.b1 ();
12816
+ const A **j = x.d1->c1;
12830
+ return static_cast <const H *>(j[i]);
12833
+__attribute__((noinline, noclone)) int
12834
+bar (char *x, unsigned long v, const char *y, int z, bool w)
12836
+ asm volatile ("" : : "r" (x), "r" (v), "r" (y) : "memory");
12837
+ asm volatile ("" : : "r" (z), "r" (w) : "memory");
12841
+__attribute__((noinline, noclone)) void
12842
+baz (void *z, const char *g, unsigned int h, char s, E &e, char *n, char *c, int &l)
12844
+ asm volatile ("" : : "r" (z), "r" (g), "r" (h) : "memory");
12845
+ asm volatile ("" : : "r" (s), "r" (&e), "r" (n) : "memory");
12846
+ asm volatile ("" : : "r" (c), "r" (&l) : "memory");
12848
+ __builtin_abort ();
12850
+ asm ("" : "+r" (i));
12852
+ __builtin_exit (0);
12855
+__attribute__((noinline, noclone)) G
12856
+test (void *z, G s, E &x, char, long v)
12858
+ const D &d = x.e3;
12859
+ const H *h = foo (d);
12860
+ const char *q = h->h7;
12861
+ const int f = x.e2;
12862
+ const int i = 5 * sizeof (long);
12863
+ char *c = static_cast <char *>(__builtin_alloca (i));
12864
+ const int b = f & 74;
12865
+ const bool e = (b != 64 && b != 8);
12866
+ const unsigned long u = ((v > 0 || !e) ? (unsigned long) v : -(unsigned long) v);
12867
+ int l = bar (c + i, u, q, f, e);
12871
+ char *c2 = static_cast <char *>(__builtin_alloca ((l + 1) * 2));
12872
+ baz (z, h->h1, h->h2, h->h6, x, c2 + 2, c, l);
12875
+ if (__builtin_expect (e, true))
12878
+ else if ((f & 4096) && v)
12881
+ const bool m = f & 176;
12886
+ const int w = x.e1;
12889
+ char * c3 = static_cast <char *>(__builtin_alloca (w));
12892
+ return s.g3 (c, l);
12907
+ test (0, g, e, 0, 0);
12908
+ __builtin_abort ();
12910
Index: gcc/testsuite/g++.dg/opt/pr58864.C
12911
===================================================================
12912
--- a/src/gcc/testsuite/g++.dg/opt/pr58864.C (.../tags/gcc_4_8_2_release)
12913
+++ b/src/gcc/testsuite/g++.dg/opt/pr58864.C (.../branches/gcc-4_8-branch)
12915
+// PR target/58864
12916
+// { dg-do compile }
12917
+// { dg-options "-Os" }
12918
+// { dg-additional-options "-march=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } }
12920
+struct A { A (); ~A (); };
12921
+struct B { B (); };
12936
Index: gcc/testsuite/g++.dg/tree-prof/pr59255.C
12937
===================================================================
12938
--- a/src/gcc/testsuite/g++.dg/tree-prof/pr59255.C (.../tags/gcc_4_8_2_release)
12939
+++ b/src/gcc/testsuite/g++.dg/tree-prof/pr59255.C (.../branches/gcc-4_8-branch)
12942
+// { dg-options "-O2 -std=c++11" }
12946
+ __attribute__((noinline, noclone)) ~S () noexcept (true)
12951
+ void (*fn) (int);
12954
+__attribute__((noinline, noclone)) void
12964
+ for (int i = 0; i < 100; i++)
12970
Index: gcc/testsuite/g++.dg/gomp/pr59297.C
12971
===================================================================
12972
--- a/src/gcc/testsuite/g++.dg/gomp/pr59297.C (.../tags/gcc_4_8_2_release)
12973
+++ b/src/gcc/testsuite/g++.dg/gomp/pr59297.C (.../branches/gcc-4_8-branch)
12976
+// { dg-do compile }
12977
+// { dg-options "-fopenmp" }
12979
+template <typename T>
12983
+ const T &operator[] (int) const;
12988
+ int &operator () (A <int>);
12992
+foo (B &x, int &z)
12995
+ #pragma omp atomic
12997
+ #pragma omp atomic
13000
Index: gcc/testsuite/g++.dg/diagnostic/pr58979.C
13001
===================================================================
13002
--- a/src/gcc/testsuite/g++.dg/diagnostic/pr58979.C (.../tags/gcc_4_8_2_release)
13003
+++ b/src/gcc/testsuite/g++.dg/diagnostic/pr58979.C (.../branches/gcc-4_8-branch)
13006
+// { dg-do compile }
13008
+int i = 0->*0; // { dg-error "invalid type argument of" }
13009
Index: gcc/testsuite/g++.dg/tm/noexcept-6.C
13010
===================================================================
13011
--- a/src/gcc/testsuite/g++.dg/tm/noexcept-6.C (.../tags/gcc_4_8_2_release)
13012
+++ b/src/gcc/testsuite/g++.dg/tm/noexcept-6.C (.../branches/gcc-4_8-branch)
13014
+// { dg-do compile }
13015
+// { dg-options "-fno-exceptions -fgnu-tm -O -std=c++0x -fdump-tree-tmlower" }
13019
+ static constexpr bool v() { return true; }
13024
+template<typename T> int foo()
13026
+ return __transaction_atomic noexcept(T::v()) (global + 1);
13031
+ return foo<TrueFalse>();
13034
+/* { dg-final { scan-tree-dump-times "eh_must_not_throw" 0 "tmlower" } } */
13035
+/* { dg-final { scan-tree-dump-times "__transaction_atomic" 1 "tmlower" } } */
13036
+/* { dg-final { cleanup-tree-dump "tmlower" } } */
13037
Index: gcc/testsuite/g++.dg/pr59695.C
13038
===================================================================
13039
--- a/src/gcc/testsuite/g++.dg/pr59695.C (.../tags/gcc_4_8_2_release)
13040
+++ b/src/gcc/testsuite/g++.dg/pr59695.C (.../branches/gcc-4_8-branch)
13043
+/* PR target/59695 */
13044
+/* { dg-do run } */
13045
+/* { dg-options "-O0" } */
13047
+#define DEFINE_VIRTUALS_FNS(i) virtual void xxx##i () {} \
13048
+ virtual void foo1_##i () {}\
13049
+ virtual void foo2_##i () {}\
13050
+ virtual void foo3_##i () {}\
13051
+ virtual void foo4_##i () {}\
13052
+ virtual void foo5_##i () {}\
13053
+ virtual void foo6_##i () {}\
13054
+ virtual void foo7_##i () {}\
13055
+ virtual void foo8_##i () {}\
13056
+ virtual void foo9_##i () {}\
13057
+ virtual void foo10_##i () {}\
13058
+ virtual void foo11_##i () {}\
13059
+ virtual void foo12_##i () {}\
13060
+ virtual void foo13_##i () {}\
13061
+ virtual void foo14_##i () {}\
13062
+ virtual void foo15_##i () {}\
13063
+ virtual void foo16_##i () {}\
13064
+ virtual void foo17_##i () {}\
13065
+ virtual void foo18_##i () {}\
13066
+ virtual void foo19_##i () {}\
13067
+ virtual void foo20_##i () {}\
13068
+ virtual void foo21_##i () {}\
13069
+ virtual void foo22_##i () {}\
13071
+class base_class_2
13075
+ /* Define lots of virtual functions */
13076
+ DEFINE_VIRTUALS_FNS (1)
13077
+ DEFINE_VIRTUALS_FNS (2)
13078
+ DEFINE_VIRTUALS_FNS (3)
13079
+ DEFINE_VIRTUALS_FNS (4)
13080
+ DEFINE_VIRTUALS_FNS (5)
13081
+ DEFINE_VIRTUALS_FNS (6)
13082
+ DEFINE_VIRTUALS_FNS (7)
13083
+ DEFINE_VIRTUALS_FNS (8)
13084
+ DEFINE_VIRTUALS_FNS (9)
13085
+ DEFINE_VIRTUALS_FNS (10)
13086
+ DEFINE_VIRTUALS_FNS (11)
13087
+ DEFINE_VIRTUALS_FNS (12)
13088
+ DEFINE_VIRTUALS_FNS (13)
13089
+ DEFINE_VIRTUALS_FNS (14)
13090
+ DEFINE_VIRTUALS_FNS (15)
13091
+ DEFINE_VIRTUALS_FNS (16)
13092
+ DEFINE_VIRTUALS_FNS (17)
13093
+ DEFINE_VIRTUALS_FNS (18)
13094
+ DEFINE_VIRTUALS_FNS (19)
13095
+ DEFINE_VIRTUALS_FNS (20)
13098
+ virtual ~base_class_2 ();
13101
+base_class_2::base_class_2()
13105
+base_class_2::~base_class_2 ()
13109
+class base_class_1
13112
+ virtual ~base_class_1();
13116
+base_class_1::base_class_1()
13120
+base_class_1::~base_class_1()
13124
+class base_Impl_class :
13125
+ virtual public base_class_2, public base_class_1
13128
+ base_Impl_class ();
13129
+ virtual ~base_Impl_class ();
13132
+base_Impl_class::base_Impl_class ()
13136
+base_Impl_class::~base_Impl_class ()
13141
+class test_cls : public base_Impl_class
13145
+ virtual ~test_cls();
13148
+test_cls::test_cls()
13152
+test_cls::~test_cls()
13158
+ test_cls *test = new test_cls;
13159
+ base_class_2 *p1 = test;
13161
+ /* PR59695 destructor thunk offsets are not setup
13162
+ correctly resulting in crash. */
13167
Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi5.C
13168
===================================================================
13169
--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi5.C (.../tags/gcc_4_8_2_release)
13170
+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi5.C (.../branches/gcc-4_8-branch)
13173
+// { dg-do compile { target c++11 } }
13177
+ int i = [] { return decltype(i)(); }();
13179
Index: gcc/testsuite/g++.dg/cpp0x/variadic144.C
13180
===================================================================
13181
--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic144.C (.../tags/gcc_4_8_2_release)
13182
+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic144.C (.../branches/gcc-4_8-branch)
13185
+// { dg-do compile { target c++11 } }
13187
+template<typename T> struct baz { };
13188
+template<typename T> T bar();
13190
+template<typename T, typename ... U>
13191
+baz<decltype(bar<T>()(bar<U> ...))> // { dg-error "cannot be used" }
13196
+ foo<int>(); // { dg-error "no matching" }
13199
Index: gcc/testsuite/g++.dg/cpp0x/enum18.C
13200
===================================================================
13201
--- a/src/gcc/testsuite/g++.dg/cpp0x/enum18.C (.../tags/gcc_4_8_2_release)
13202
+++ b/src/gcc/testsuite/g++.dg/cpp0x/enum18.C (.../branches/gcc-4_8-branch)
13207
- ev.e::~e_u(); // { dg-error "e_u. has not been declared" }
13208
+ ev.e::~e_u(); // { dg-error "" }
13210
Index: gcc/testsuite/g++.dg/cpp0x/access02.C
13211
===================================================================
13212
--- a/src/gcc/testsuite/g++.dg/cpp0x/access02.C (.../tags/gcc_4_8_2_release)
13213
+++ b/src/gcc/testsuite/g++.dg/cpp0x/access02.C (.../branches/gcc-4_8-branch)
13216
+// { dg-require-effective-target c++11 }
13222
+struct foo_argument
13224
+ template<class Ret, class C, class Arg>
13225
+ static Arg test(Ret (C::*)(Arg));
13227
+ typedef decltype(test(&T::template foo<>)) type;
13230
+template<class T, class>
13231
+struct dependent { typedef T type; };
13236
+ template<class Ignore = void>
13237
+ auto foo(int i) -> decltype(declval<
13238
+ typename dependent<T&, Ignore>::type
13239
+ >().foo_impl(i));
13242
+struct derived : base<derived>
13244
+ friend struct base<derived>;
13246
+ int foo_impl(int i);
13251
+ foo_argument<derived>::type var = 0;
13254
Index: gcc/testsuite/g++.dg/cpp0x/constexpr-template6.C
13255
===================================================================
13256
--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-template6.C (.../tags/gcc_4_8_2_release)
13257
+++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-template6.C (.../branches/gcc-4_8-branch)
13260
+// { dg-do compile }
13261
+// { dg-options "-std=c++11" }
13263
+template <typename>
13266
+ constexpr A (int) {}
13267
+ virtual void foo ()
13269
+ constexpr A<void> a (0);
13279
Index: gcc/testsuite/g++.dg/cpp0x/nsdmi9.C
13280
===================================================================
13281
--- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C (.../tags/gcc_4_8_2_release)
13282
+++ b/src/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C (.../branches/gcc-4_8-branch)
13285
+// { dg-require-effective-target c++11 }
13297
Index: gcc/testsuite/g++.dg/cpp0x/variadic145.C
13298
===================================================================
13299
--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic145.C (.../tags/gcc_4_8_2_release)
13300
+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic145.C (.../branches/gcc-4_8-branch)
13303
+// { dg-do compile { target c++11 } }
13305
+template <typename> void declval();
13306
+template <typename> void forward();
13307
+template <typename> class D;
13308
+template <typename _Functor, typename... _Bound_args>
13309
+class D <_Functor(_Bound_args...)> {
13310
+ template <typename... _Args, decltype(declval<_Functor>)>
13311
+ void operator()(...) {
13312
+ 0(forward<_Args>...);
13315
Index: gcc/testsuite/g++.dg/cpp0x/decltype57.C
13316
===================================================================
13317
--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype57.C (.../tags/gcc_4_8_2_release)
13318
+++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype57.C (.../branches/gcc-4_8-branch)
13321
+// { dg-do compile { target c++11 } }
13326
+ decltype(i.I::~I())* p;
13328
Index: gcc/testsuite/g++.dg/inherit/virtual11.C
13329
===================================================================
13330
--- a/src/gcc/testsuite/g++.dg/inherit/virtual11.C (.../tags/gcc_4_8_2_release)
13331
+++ b/src/gcc/testsuite/g++.dg/inherit/virtual11.C (.../branches/gcc-4_8-branch)
13334
+// { dg-do compile }
13335
+// { dg-options "-fdump-tree-gimple " }
13338
+ virtual int add (int a, int b) {return a+ b;}
13341
+class D : public B {
13344
+int foo (int a, int b) {
13346
+ return d.add(a, b);
13348
+// { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "gimple" } }
13349
+// { dg-final { cleanup-tree-dump "gimple" } }
13350
Index: gcc/testsuite/g++.dg/torture/pr59163.C
13351
===================================================================
13352
--- a/src/gcc/testsuite/g++.dg/torture/pr59163.C (.../tags/gcc_4_8_2_release)
13353
+++ b/src/gcc/testsuite/g++.dg/torture/pr59163.C (.../branches/gcc-4_8-branch)
13355
+// PR target/59163
13358
+struct A { float a[4]; };
13359
+struct B { int b; A a; };
13361
+__attribute__((noinline, noclone)) void
13364
+ if (a.a[0] != 36.0f || a.a[1] != 42.0f || a.a[2] != 48.0f || a.a[3] != 54.0f)
13365
+ __builtin_abort ();
13368
+__attribute__((noinline, noclone)) void
13373
+ for (i = 0; i < 4; i++)
13382
+ B b = { 5, { 6, 7, 8, 9 } };
13385
Index: gcc/testsuite/g++.dg/template/partial14.C
13386
===================================================================
13387
--- a/src/gcc/testsuite/g++.dg/template/partial14.C (.../tags/gcc_4_8_2_release)
13388
+++ b/src/gcc/testsuite/g++.dg/template/partial14.C (.../branches/gcc-4_8-branch)
13392
+template <class T>
13395
+ template <T a, T b>
13396
+ struct Implementation {};
13398
+ typedef typename Implementation<0, 0>::Typedef Type;
13401
+template <class T>
13403
+struct C<T>::Implementation<0, b> { typedef void Typedef; };
13405
+template class C<unsigned>;
13406
Index: gcc/testsuite/c-c++-common/pr59037.c
13407
===================================================================
13408
--- a/src/gcc/testsuite/c-c++-common/pr59037.c (.../tags/gcc_4_8_2_release)
13409
+++ b/src/gcc/testsuite/c-c++-common/pr59037.c (.../branches/gcc-4_8-branch)
13411
+/* { dg-do compile } */
13412
+/* { dg-options "-O3" } */
13414
+typedef int v4si __attribute__ ((vector_size (16)));
13417
+main (int argc, char** argv)
13419
+ v4si x = {0,1,2,3};
13420
+ x = (v4si) {(x)[3], (x)[2], (x)[1], (x)[0]};
13423
Index: gcc/testsuite/c-c++-common/pr59280.c
13424
===================================================================
13425
--- a/src/gcc/testsuite/c-c++-common/pr59280.c (.../tags/gcc_4_8_2_release)
13426
+++ b/src/gcc/testsuite/c-c++-common/pr59280.c (.../branches/gcc-4_8-branch)
13429
+/* { dg-do compile } */
13431
+void bar (char *) __attribute__((constructor(foo))); /* { dg-error "constructor priorities must be integers|was not declared|constructor priorities are not supported" } */
13432
Index: gcc/testsuite/c-c++-common/fold-divmul-1.c
13433
===================================================================
13434
--- a/src/gcc/testsuite/c-c++-common/fold-divmul-1.c (.../tags/gcc_4_8_2_release)
13435
+++ b/src/gcc/testsuite/c-c++-common/fold-divmul-1.c (.../branches/gcc-4_8-branch)
13437
+/* { dg-do compile } */
13438
+/* { dg-options "-fdump-tree-original" } */
13441
+fx (int *b, int *e)
13443
+ return b + (e - b);
13446
+/* { dg-final { scan-tree-dump-not "/\\\[ex\\\]" "original" } } */
13447
+/* { dg-final { cleanup-tree-dump "original" } } */
13448
Index: gcc/testsuite/c-c++-common/torture/pr58794-1.c
13449
===================================================================
13450
--- a/src/gcc/testsuite/c-c++-common/torture/pr58794-1.c (.../tags/gcc_4_8_2_release)
13451
+++ b/src/gcc/testsuite/c-c++-common/torture/pr58794-1.c (.../branches/gcc-4_8-branch)
13453
+/* { dg-do compile } */
13471
+static int *c[1][2] = {{0, (int *)&a.g.f2}};
13477
+ for (d = 0; d < 1; d++)
13478
+ for (b.g.f1.f = 0; b.g.f1.f < 1; b.g.f1.f++)
13479
+ *c[b.g.f1.f][d + 1] = 0;
13482
Index: gcc/testsuite/c-c++-common/torture/pr58794-2.c
13483
===================================================================
13484
--- a/src/gcc/testsuite/c-c++-common/torture/pr58794-2.c (.../tags/gcc_4_8_2_release)
13485
+++ b/src/gcc/testsuite/c-c++-common/torture/pr58794-2.c (.../branches/gcc-4_8-branch)
13487
+/* { dg-do compile } */
13496
+static int *c[1][2] = {{0, (int *)&a.f}};
13497
+static unsigned int d;
13502
+ for (; d < 1; d++)
13503
+ for (; b < 1; b++)
13504
+ *c[b][d + 1] = 0;
13508
Index: gcc/testsuite/c-c++-common/gomp/pr59467.c
13509
===================================================================
13510
--- a/src/gcc/testsuite/c-c++-common/gomp/pr59467.c (.../tags/gcc_4_8_2_release)
13511
+++ b/src/gcc/testsuite/c-c++-common/gomp/pr59467.c (.../branches/gcc-4_8-branch)
13513
+/* PR libgomp/59467 */
13520
+ int x = 0, y = 0;
13521
+ #pragma omp parallel
13524
+ #pragma omp single copyprivate (x) /* { dg-error "is not threadprivate or private in outer context" } */
13526
+ #pragma omp atomic write
13529
+ #pragma omp atomic read
13531
+ #pragma omp atomic
13534
+ #pragma omp parallel
13537
+ #pragma omp single copyprivate (v) /* { dg-error "is not threadprivate or private in outer context" } */
13539
+ #pragma omp atomic write
13542
+ #pragma omp atomic read
13544
+ #pragma omp atomic
13547
+ #pragma omp parallel private (x)
13550
+ #pragma omp single copyprivate (x)
13552
+ #pragma omp atomic write
13555
+ #pragma omp atomic read
13557
+ #pragma omp atomic
13561
+ #pragma omp parallel reduction (+:x)
13563
+ #pragma omp single copyprivate (x)
13565
+ #pragma omp atomic write
13568
+ #pragma omp atomic
13571
+ #pragma omp single copyprivate (x)
13575
+ #pragma omp single copyprivate (v) /* { dg-error "is not threadprivate or private in outer context" } */
13577
+ #pragma omp atomic write
13581
Index: gcc/testsuite/c-c++-common/pr59032.c
13582
===================================================================
13583
--- a/src/gcc/testsuite/c-c++-common/pr59032.c (.../tags/gcc_4_8_2_release)
13584
+++ b/src/gcc/testsuite/c-c++-common/pr59032.c (.../branches/gcc-4_8-branch)
13586
+/* { dg-do compile } */
13587
+/* { dg-options "-O2" } */
13592
+ float v __attribute__((vector_size(8)));
13599
+ float v __attribute__((vector_size(8)));
13606
+ float v __attribute__((vector_size(8)));
13613
+ float v __attribute__((vector_size(8)));
13616
Index: gcc/cp/typeck.c
13617
===================================================================
13618
--- a/src/gcc/cp/typeck.c (.../tags/gcc_4_8_2_release)
13619
+++ b/src/gcc/cp/typeck.c (.../branches/gcc-4_8-branch)
13620
@@ -5588,7 +5588,9 @@
13621
inc = cxx_sizeof_nowarn (TREE_TYPE (argtype));
13624
- inc = integer_one_node;
13625
+ inc = (TREE_CODE (argtype) == VECTOR_TYPE
13626
+ ? build_one_cst (argtype)
13627
+ : integer_one_node);
13629
inc = cp_convert (argtype, inc, complain);
13631
@@ -7611,7 +7613,7 @@
13632
/* Handle null pointer to member function conversions. */
13633
if (null_ptr_cst_p (pfn))
13635
- pfn = build_c_cast (input_location, type, pfn);
13636
+ pfn = cp_build_c_cast (type, pfn, complain);
13637
return build_ptrmemfunc1 (to_type,
13640
Index: gcc/cp/except.c
13641
===================================================================
13642
--- a/src/gcc/cp/except.c (.../tags/gcc_4_8_2_release)
13643
+++ b/src/gcc/cp/except.c (.../branches/gcc-4_8-branch)
13644
@@ -380,6 +380,9 @@
13646
tree type = body ? TREE_TYPE (body) : void_type_node;
13648
+ if (!flag_exceptions)
13651
if (cond && !value_dependent_expression_p (cond))
13653
cond = cxx_constant_value (cond);
13654
Index: gcc/cp/ChangeLog
13655
===================================================================
13656
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_2_release)
13657
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch)
13659
+2014-01-10 Paolo Carlini <paolo.carlini@oracle.com>
13663
+ * pt.c (type_dependent_expression_p): Handle EXPR_PACK_EXPANSION.
13665
+2013-12-12 Jason Merrill <jason@redhat.com>
13668
+ * pt.c (resolve_overloaded_unification): Discard access checks.
13670
+2013-12-05 Jason Merrill <jason@redhat.com>
13674
+ * pt.c (most_specialized_class): Use the partially instantiated
13675
+ template for deduction. Drop the TMPL parameter.
13677
+2013-12-04 Jakub Jelinek <jakub@redhat.com>
13680
+ * pt.c (tsubst_copy_and_build): Handle POINTER_PLUS_EXPR.
13682
+2013-11-27 Tom de Vries <tom@codesourcery.com>
13683
+ Marc Glisse <marc.glisse@inria.fr>
13686
+ * typeck.c (cp_build_unary_op): Allow vector increment and decrement.
13688
+2013-11-27 Tom de Vries <tom@codesourcery.com>
13689
+ Marc Glisse <marc.glisse@inria.fr>
13691
+ PR middle-end/59037
13692
+ * semantics.c (cxx_fold_indirect_ref): Don't create out-of-bounds
13695
+2013-11-28 Jakub Jelinek <jakub@redhat.com>
13698
+ * semantics.c (finish_omp_atomic): Call finish_expr_stmt
13699
+ rather than add_stmt.
13701
+2013-11-23 Easwaran Raman <eraman@google.com>
13704
+ * call.c (build_new_method_call_1): Comnpare function context
13705
+ with BASELINK_BINFO type rather than instance type before
13706
+ marking the call with LOOKUP_NONVIRTUAL.
13708
+2013-10-31 Jason Merrill <jason@redhat.com>
13711
+ * parser.c (cp_parser_late_parse_one_default_arg): Set
13712
+ TARGET_EXPR_DIRECT_INIT_P.
13714
+2013-11-11 Paolo Carlini <paolo.carlini@oracle.com>
13716
+ * cvt.c (cp_convert_to_pointer): Call build_ptrmemfunc before
13717
+ maybe_warn_zero_as_null_pointer_constant to avoid duplicate
13718
+ -Wzero-as-null-pointer-constant diagnostics.
13720
+ * typeck.c (build_ptrmemfunc): Use cp_build_c_cast.
13722
+2013-10-25 Tom de Vries <tom@codesourcery.com>
13725
+ * except.c (build_must_not_throw_expr): Handle
13728
+2013-10-17 Paolo Carlini <paolo.carlini@oracle.com>
13731
+ * semantics.c (lambda_expr_this_capture): Handle NSDMIs in the
13732
+ cp_unevaluated_operand case.
13734
+2013-10-16 Paolo Carlini <paolo.carlini@oracle.com>
13737
+ * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.
13739
+2013-10-16 Jason Merrill <jason@redhat.com>
13742
+ * decl2.c (dump_tu): Split out from...
13743
+ (cp_write_global_declarations): ...here. Call it in PCH mode.
13745
2013-10-16 Release Manager
13747
* GCC 4.8.2 released.
13749
===================================================================
13750
--- a/src/gcc/cp/pt.c (.../tags/gcc_4_8_2_release)
13751
+++ b/src/gcc/cp/pt.c (.../branches/gcc-4_8-branch)
13752
@@ -170,7 +170,7 @@
13753
static tree tsubst_template_args (tree, tree, tsubst_flags_t, tree);
13754
static tree tsubst_template_parms (tree, tree, tsubst_flags_t);
13755
static void regenerate_decl_from_template (tree, tree);
13756
-static tree most_specialized_class (tree, tree, tsubst_flags_t);
13757
+static tree most_specialized_class (tree, tsubst_flags_t);
13758
static tree tsubst_aggr_type (tree, tree, tsubst_flags_t, tree, int);
13759
static tree tsubst_arg_types (tree, tree, tree, tsubst_flags_t, tree);
13760
static tree tsubst_function_type (tree, tree, tsubst_flags_t, tree);
13761
@@ -4261,7 +4261,7 @@
13762
if (COMPLETE_TYPE_P (inst_type)
13763
&& CLASSTYPE_IMPLICIT_INSTANTIATION (inst_type))
13765
- tree spec = most_specialized_class (inst_type, maintmpl, tf_none);
13766
+ tree spec = most_specialized_class (inst_type, tf_none);
13767
if (spec && TREE_TYPE (spec) == type)
13768
permerror (input_location,
13769
"partial specialization of %qT after instantiation "
13770
@@ -8572,7 +8572,7 @@
13772
/* Determine what specialization of the original template to
13774
- t = most_specialized_class (type, templ, tf_warning_or_error);
13775
+ t = most_specialized_class (type, tf_warning_or_error);
13776
if (t == error_mark_node)
13778
TYPE_BEING_DEFINED (type) = 1;
13779
@@ -13710,6 +13710,10 @@
13783
+ case POINTER_PLUS_EXPR:
13784
+ return fold_build_pointer_plus (RECUR (TREE_OPERAND (t, 0)),
13785
+ RECUR (TREE_OPERAND (t, 1)));
13788
RETURN (tsubst_qualified_id (t, args, complain, in_decl, /*done=*/true,
13789
/*address_p=*/false));
13790
@@ -15749,7 +15753,7 @@
13791
if (subargs != error_mark_node
13792
&& !any_dependent_template_arguments_p (subargs))
13794
- elem = tsubst (TREE_TYPE (fn), subargs, tf_none, NULL_TREE);
13795
+ elem = TREE_TYPE (instantiate_template (fn, subargs, tf_none));
13796
if (try_one_overload (tparms, targs, tempargs, parm,
13797
elem, strict, sub_strict, addr_p, explain_p)
13798
&& (!goodfn || !same_type_p (goodfn, elem)))
13799
@@ -17553,7 +17557,7 @@
13803
-/* Determine which of two partial specializations of MAIN_TMPL is more
13804
+/* Determine which of two partial specializations of TMPL is more
13807
PAT1 is a TREE_LIST whose TREE_TYPE is the _TYPE node corresponding
13808
@@ -17569,7 +17573,7 @@
13809
two templates is more specialized. */
13812
-more_specialized_class (tree main_tmpl, tree pat1, tree pat2)
13813
+more_specialized_class (tree tmpl, tree pat1, tree pat2)
13817
@@ -17584,7 +17588,7 @@
13818
types in the arguments, and we need our dependency check functions
13819
to behave correctly. */
13820
++processing_template_decl;
13821
- targs = get_class_bindings (main_tmpl, TREE_VALUE (pat1),
13822
+ targs = get_class_bindings (tmpl, TREE_VALUE (pat1),
13823
CLASSTYPE_TI_ARGS (tmpl1),
13824
CLASSTYPE_TI_ARGS (tmpl2));
13826
@@ -17593,7 +17597,7 @@
13827
any_deductions = true;
13830
- targs = get_class_bindings (main_tmpl, TREE_VALUE (pat2),
13831
+ targs = get_class_bindings (tmpl, TREE_VALUE (pat2),
13832
CLASSTYPE_TI_ARGS (tmpl2),
13833
CLASSTYPE_TI_ARGS (tmpl1));
13835
@@ -17673,7 +17677,7 @@
13838
/* Return the innermost template arguments that, when applied to a partial
13839
- specialization of MAIN_TMPL whose innermost template parameters are
13840
+ specialization of TMPL whose innermost template parameters are
13841
TPARMS, and whose specialization arguments are SPEC_ARGS, yield the
13844
@@ -17688,7 +17692,7 @@
13845
is bound to `double'. */
13848
-get_class_bindings (tree main_tmpl, tree tparms, tree spec_args, tree args)
13849
+get_class_bindings (tree tmpl, tree tparms, tree spec_args, tree args)
13851
int i, ntparms = TREE_VEC_LENGTH (tparms);
13853
@@ -17728,8 +17732,8 @@
13854
`T' is `A' but unify () does not check whether `typename T::X'
13856
spec_args = tsubst (spec_args, deduced_args, tf_none, NULL_TREE);
13857
- spec_args = coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (main_tmpl),
13858
- spec_args, main_tmpl,
13859
+ spec_args = coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (tmpl),
13861
tf_none, false, false);
13862
if (spec_args == error_mark_node
13863
/* We only need to check the innermost arguments; the other
13864
@@ -17877,30 +17881,30 @@
13867
/* Return the most specialized of the class template partial
13868
- specializations of TMPL which can produce TYPE, a specialization of
13869
- TMPL. The value returned is actually a TREE_LIST; the TREE_TYPE is
13870
+ specializations which can produce TYPE, a specialization of some class
13871
+ template. The value returned is actually a TREE_LIST; the TREE_TYPE is
13872
a _TYPE node corresponding to the partial specialization, while the
13873
TREE_PURPOSE is the set of template arguments that must be
13874
substituted into the TREE_TYPE in order to generate TYPE.
13876
If the choice of partial specialization is ambiguous, a diagnostic
13877
is issued, and the error_mark_node is returned. If there are no
13878
- partial specializations of TMPL matching TYPE, then NULL_TREE is
13880
+ partial specializations matching TYPE, then NULL_TREE is
13881
+ returned, indicating that the primary template should be used. */
13884
-most_specialized_class (tree type, tree tmpl, tsubst_flags_t complain)
13885
+most_specialized_class (tree type, tsubst_flags_t complain)
13887
tree list = NULL_TREE;
13893
tree outer_args = NULL_TREE;
13895
- tmpl = most_general_template (tmpl);
13896
- args = CLASSTYPE_TI_ARGS (type);
13897
+ tree tmpl = CLASSTYPE_TI_TEMPLATE (type);
13898
+ tree main_tmpl = most_general_template (tmpl);
13899
+ tree args = CLASSTYPE_TI_ARGS (type);
13901
/* For determining which partial specialization to use, only the
13902
innermost args are interesting. */
13903
@@ -17910,7 +17914,7 @@
13904
args = INNERMOST_TEMPLATE_ARGS (args);
13907
- for (t = DECL_TEMPLATE_SPECIALIZATIONS (tmpl); t; t = TREE_CHAIN (t))
13908
+ for (t = DECL_TEMPLATE_SPECIALIZATIONS (main_tmpl); t; t = TREE_CHAIN (t))
13910
tree partial_spec_args;
13912
@@ -17944,8 +17948,7 @@
13914
partial_spec_args =
13915
coerce_template_parms (DECL_INNERMOST_TEMPLATE_PARMS (tmpl),
13916
- add_to_template_args (outer_args,
13917
- partial_spec_args),
13918
+ partial_spec_args,
13920
/*require_all_args=*/true,
13921
/*use_default_args=*/true);
13922
@@ -19955,6 +19958,10 @@
13923
if (TREE_CODE (expression) == SCOPE_REF)
13926
+ /* Always dependent, on the number of arguments if nothing else. */
13927
+ if (TREE_CODE (expression) == EXPR_PACK_EXPANSION)
13930
if (BASELINK_P (expression))
13931
expression = BASELINK_FUNCTIONS (expression);
13933
Index: gcc/cp/semantics.c
13934
===================================================================
13935
--- a/src/gcc/cp/semantics.c (.../tags/gcc_4_8_2_release)
13936
+++ b/src/gcc/cp/semantics.c (.../branches/gcc-4_8-branch)
13937
@@ -5059,7 +5059,7 @@
13939
stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt);
13942
+ finish_expr_stmt (stmt);
13946
@@ -7543,7 +7543,7 @@
13947
unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
13948
tree index = bitsize_int (indexi);
13950
- if (offset/part_widthi <= TYPE_VECTOR_SUBPARTS (op00type))
13951
+ if (offset / part_widthi < TYPE_VECTOR_SUBPARTS (op00type))
13952
return fold_build3_loc (loc,
13953
BIT_FIELD_REF, type, op00,
13954
part_width, index);
13955
@@ -9481,7 +9481,14 @@
13956
/* In unevaluated context this isn't an odr-use, so just return the
13958
if (cp_unevaluated_operand)
13959
- return lookup_name (this_identifier);
13961
+ /* In an NSDMI the fake 'this' pointer that we're using for
13962
+ parsing is in scope_chain. */
13963
+ if (LAMBDA_EXPR_EXTRA_SCOPE (lambda)
13964
+ && TREE_CODE (LAMBDA_EXPR_EXTRA_SCOPE (lambda)) == FIELD_DECL)
13965
+ return scope_chain->x_current_class_ptr;
13966
+ return lookup_name (this_identifier);
13969
/* Try to default capture 'this' if we can. */
13971
Index: gcc/cp/decl2.c
13972
===================================================================
13973
--- a/src/gcc/cp/decl2.c (.../tags/gcc_4_8_2_release)
13974
+++ b/src/gcc/cp/decl2.c (.../branches/gcc-4_8-branch)
13975
@@ -3960,6 +3960,22 @@
13976
expand_or_defer_fn (finish_function (0));
13979
+/* The entire file is now complete. If requested, dump everything
13986
+ FILE *stream = dump_begin (TDI_tu, &flags);
13990
+ dump_node (global_namespace, flags & ~TDF_SLIM, stream);
13991
+ dump_end (TDI_tu, stream);
13995
/* This routine is called at the end of compilation.
13996
Its job is to create all the code needed to initialize and
13997
destroy the global aggregates. We do the destruction
13998
@@ -3990,6 +4006,7 @@
14001
c_common_write_pch ();
14006
@@ -4359,17 +4376,8 @@
14008
/* The entire file is now complete. If requested, dump everything
14012
- FILE *stream = dump_begin (TDI_tu, &flags);
14017
- dump_node (global_namespace, flags & ~TDF_SLIM, stream);
14018
- dump_end (TDI_tu, stream);
14022
if (flag_detailed_statistics)
14024
dump_tree_statistics ();
14025
Index: gcc/cp/parser.c
14026
===================================================================
14027
--- a/src/gcc/cp/parser.c (.../tags/gcc_4_8_2_release)
14028
+++ b/src/gcc/cp/parser.c (.../branches/gcc-4_8-branch)
14029
@@ -6421,10 +6421,6 @@
14030
/* Look for the `~'. */
14031
cp_parser_require (parser, CPP_COMPL, RT_COMPL);
14033
- /* Once we see the ~, this has to be a pseudo-destructor. */
14034
- if (!processing_template_decl && !cp_parser_error_occurred (parser))
14035
- cp_parser_commit_to_tentative_parse (parser);
14037
/* Look for the type-name again. We are not responsible for
14038
checking that it matches the first type-name. */
14039
*type = cp_parser_nonclass_name (parser);
14040
@@ -22576,6 +22572,9 @@
14041
&& CONSTRUCTOR_IS_DIRECT_INIT (parsed_arg))
14042
flags = LOOKUP_NORMAL;
14043
parsed_arg = digest_init_flags (TREE_TYPE (decl), parsed_arg, flags);
14044
+ if (TREE_CODE (parsed_arg) == TARGET_EXPR)
14045
+ /* This represents the whole initialization. */
14046
+ TARGET_EXPR_DIRECT_INIT_P (parsed_arg) = true;
14050
Index: gcc/cp/call.c
14051
===================================================================
14052
--- a/src/gcc/cp/call.c (.../tags/gcc_4_8_2_release)
14053
+++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch)
14054
@@ -7414,7 +7414,7 @@
14055
struct z_candidate *candidates = 0, *cand;
14056
tree explicit_targs = NULL_TREE;
14057
tree basetype = NULL_TREE;
14058
- tree access_binfo;
14059
+ tree access_binfo, binfo;
14061
tree first_mem_arg = NULL_TREE;
14063
@@ -7454,6 +7454,7 @@
14064
if (!conversion_path)
14065
conversion_path = BASELINK_BINFO (fns);
14066
access_binfo = BASELINK_ACCESS_BINFO (fns);
14067
+ binfo = BASELINK_BINFO (fns);
14068
optype = BASELINK_OPTYPE (fns);
14069
fns = BASELINK_FUNCTIONS (fns);
14070
if (TREE_CODE (fns) == TEMPLATE_ID_EXPR)
14071
@@ -7697,13 +7698,13 @@
14073
/* Optimize away vtable lookup if we know that this
14074
function can't be overridden. We need to check if
14075
- the context and the instance type are the same,
14076
+ the context and the type where we found fn are the same,
14077
actually FN might be defined in a different class
14078
type because of a using-declaration. In this case, we
14079
do not want to perform a non-virtual call. */
14080
if (DECL_VINDEX (fn) && ! (flags & LOOKUP_NONVIRTUAL)
14081
&& same_type_ignoring_top_level_qualifiers_p
14082
- (DECL_CONTEXT (fn), TREE_TYPE (instance))
14083
+ (DECL_CONTEXT (fn), BINFO_TYPE (binfo))
14084
&& resolves_to_fixed_type_p (instance, 0))
14085
flags |= LOOKUP_NONVIRTUAL;
14086
if (explicit_targs)
14087
Index: gcc/cp/cvt.c
14088
===================================================================
14089
--- a/src/gcc/cp/cvt.c (.../tags/gcc_4_8_2_release)
14090
+++ b/src/gcc/cp/cvt.c (.../branches/gcc-4_8-branch)
14091
@@ -203,13 +203,13 @@
14093
if (null_ptr_cst_p (expr))
14095
- if (complain & tf_warning)
14096
- maybe_warn_zero_as_null_pointer_constant (expr, loc);
14098
if (TYPE_PTRMEMFUNC_P (type))
14099
return build_ptrmemfunc (TYPE_PTRMEMFUNC_FN_TYPE (type), expr, 0,
14100
/*c_cast_p=*/false, complain);
14102
+ if (complain & tf_warning)
14103
+ maybe_warn_zero_as_null_pointer_constant (expr, loc);
14105
/* A NULL pointer-to-data-member is represented by -1, not by
14107
tree val = (TYPE_PTRDATAMEM_P (type)
14108
Index: gcc/cp/cp-tree.h
14109
===================================================================
14110
--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_4_8_2_release)
14111
+++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-4_8-branch)
14112
@@ -344,7 +344,8 @@
14113
/* Returns true iff NODE is a BASELINK. */
14114
#define BASELINK_P(NODE) \
14115
(TREE_CODE (NODE) == BASELINK)
14116
-/* The BINFO indicating the base from which the BASELINK_FUNCTIONS came. */
14117
+/* The BINFO indicating the base in which lookup found the
14118
+ BASELINK_FUNCTIONS. */
14119
#define BASELINK_BINFO(NODE) \
14120
(((struct tree_baselink*) BASELINK_CHECK (NODE))->binfo)
14121
/* The functions referred to by the BASELINK; either a FUNCTION_DECL,
14122
Index: gcc/mode-switching.c
14123
===================================================================
14124
--- a/src/gcc/mode-switching.c (.../tags/gcc_4_8_2_release)
14125
+++ b/src/gcc/mode-switching.c (.../branches/gcc-4_8-branch)
14126
@@ -568,12 +568,15 @@
14128
info[bb->index].computing = last_mode;
14129
/* Check for blocks without ANY mode requirements.
14130
- N.B. because of MODE_AFTER, last_mode might still be different
14132
+ N.B. because of MODE_AFTER, last_mode might still
14133
+ be different from no_mode, in which case we need to
14134
+ mark the block as nontransparent. */
14135
if (!any_set_required)
14137
ptr = new_seginfo (no_mode, BB_END (bb), bb->index, live_now);
14138
add_seginfo (info + bb->index, ptr);
14139
+ if (last_mode != no_mode)
14140
+ bitmap_clear_bit (transp[bb->index], j);
14143
#if defined (MODE_ENTRY) && defined (MODE_EXIT)
14144
Index: gcc/ipa-pure-const.c
14145
===================================================================
14146
--- a/src/gcc/ipa-pure-const.c (.../tags/gcc_4_8_2_release)
14147
+++ b/src/gcc/ipa-pure-const.c (.../branches/gcc-4_8-branch)
14148
@@ -588,7 +588,7 @@
14149
/* Wrapper around check_decl for loads in local more. */
14152
-check_load (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
14153
+check_load (gimple, tree op, tree, void *data)
14156
check_decl ((funct_state)data, op, false, false);
14157
@@ -600,7 +600,7 @@
14158
/* Wrapper around check_decl for stores in local more. */
14161
-check_store (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
14162
+check_store (gimple, tree op, tree, void *data)
14165
check_decl ((funct_state)data, op, true, false);
14166
@@ -612,7 +612,7 @@
14167
/* Wrapper around check_decl for loads in ipa mode. */
14170
-check_ipa_load (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
14171
+check_ipa_load (gimple, tree op, tree, void *data)
14174
check_decl ((funct_state)data, op, false, true);
14175
@@ -624,7 +624,7 @@
14176
/* Wrapper around check_decl for stores in ipa mode. */
14179
-check_ipa_store (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
14180
+check_ipa_store (gimple, tree op, tree, void *data)
14183
check_decl ((funct_state)data, op, true, true);
14185
===================================================================
14186
--- a/src/gcc/cse.c (.../tags/gcc_4_8_2_release)
14187
+++ b/src/gcc/cse.c (.../branches/gcc-4_8-branch)
14188
@@ -6082,6 +6082,18 @@
14192
+ case UNSIGNED_FLOAT:
14194
+ rtx new_rtx = cse_process_notes (XEXP (x, 0), object, changed);
14195
+ /* We don't substitute negative VOIDmode constants into these rtx,
14196
+ since they would impede folding. */
14197
+ if (GET_MODE (new_rtx) != VOIDmode
14198
+ || (CONST_INT_P (new_rtx) && INTVAL (new_rtx) >= 0)
14199
+ || (CONST_DOUBLE_P (new_rtx) && CONST_DOUBLE_HIGH (new_rtx) >= 0))
14200
+ validate_change (object, &XEXP (x, 0), new_rtx, 0);
14205
i = REG_QTY (REGNO (x));
14207
Index: gcc/gimple-low.c
14208
===================================================================
14209
--- a/src/gcc/gimple-low.c (.../tags/gcc_4_8_2_release)
14210
+++ b/src/gcc/gimple-low.c (.../branches/gcc-4_8-branch)
14211
@@ -238,6 +238,7 @@
14213
arg = gimple_call_arg (stmt, i);
14214
if (p == error_mark_node
14215
+ || DECL_ARG_TYPE (p) == error_mark_node
14216
|| arg == error_mark_node
14217
|| (!types_compatible_p (DECL_ARG_TYPE (p), TREE_TYPE (arg))
14218
&& !fold_convertible_p (DECL_ARG_TYPE (p), arg)))
14219
Index: gcc/tree-ssa-sink.c
14220
===================================================================
14221
--- a/src/gcc/tree-ssa-sink.c (.../tags/gcc_4_8_2_release)
14222
+++ b/src/gcc/tree-ssa-sink.c (.../branches/gcc-4_8-branch)
14223
@@ -559,7 +559,7 @@
14224
execute_sink_code (void)
14226
loop_optimizer_init (LOOPS_NORMAL);
14228
+ split_critical_edges ();
14229
connect_infinite_loops_to_exit ();
14230
memset (&sink_stats, 0, sizeof (sink_stats));
14231
calculate_dominance_info (CDI_DOMINATORS);
14232
Index: gcc/config.in
14233
===================================================================
14234
--- a/src/gcc/config.in (.../tags/gcc_4_8_2_release)
14235
+++ b/src/gcc/config.in (.../branches/gcc-4_8-branch)
14236
@@ -375,6 +375,12 @@
14240
+/* Define if your assembler supports LEON instructions. */
14241
+#ifndef USED_FOR_TARGET
14242
+#undef HAVE_AS_LEON
14246
/* Define if the assembler won't complain about a line such as # 0 "" 2. */
14247
#ifndef USED_FOR_TARGET
14248
#undef HAVE_AS_LINE_ZERO
14250
===================================================================
14251
--- a/src/gcc/ifcvt.c (.../tags/gcc_4_8_2_release)
14252
+++ b/src/gcc/ifcvt.c (.../branches/gcc-4_8-branch)
14253
@@ -115,7 +115,11 @@
14257
- if (CALL_P (insn) || NONJUMP_INSN_P (insn))
14258
+ if ((CALL_P (insn) || NONJUMP_INSN_P (insn))
14259
+ /* Don't count USE/CLOBBER insns, flow_find_cross_jump etc.
14260
+ don't count them either and we need consistency. */
14261
+ && GET_CODE (PATTERN (insn)) != USE
14262
+ && GET_CODE (PATTERN (insn)) != CLOBBER)
14265
if (insn == BB_END (bb))
14266
@@ -505,7 +509,10 @@
14267
n_insns -= 2 * n_matching;
14270
- if (then_start && else_start)
14273
+ && then_n_insns > n_matching
14274
+ && else_n_insns > n_matching)
14276
int longest_match = MIN (then_n_insns - n_matching,
14277
else_n_insns - n_matching);
14279
===================================================================
14280
--- a/src/gcc/expr.c (.../tags/gcc_4_8_2_release)
14281
+++ b/src/gcc/expr.c (.../branches/gcc-4_8-branch)
14282
@@ -1994,12 +1994,14 @@
14283
HOST_WIDE_INT bytepos = INTVAL (XEXP (XVECEXP (src, 0, i), 1));
14284
enum machine_mode mode = GET_MODE (tmps[i]);
14285
unsigned int bytelen = GET_MODE_SIZE (mode);
14286
- unsigned int adj_bytelen = bytelen;
14287
+ unsigned int adj_bytelen;
14290
/* Handle trailing fragments that run over the size of the struct. */
14291
if (ssize >= 0 && bytepos + (HOST_WIDE_INT) bytelen > ssize)
14292
adj_bytelen = ssize - bytepos;
14294
+ adj_bytelen = bytelen;
14296
if (GET_CODE (dst) == CONCAT)
14298
@@ -2040,6 +2042,7 @@
14302
+ /* Handle trailing fragments that run over the size of the struct. */
14303
if (ssize >= 0 && bytepos + (HOST_WIDE_INT) bytelen > ssize)
14305
/* store_bit_field always takes its value from the lsb.
14306
@@ -2057,16 +2060,22 @@
14307
tmps[i] = expand_shift (RSHIFT_EXPR, mode, tmps[i],
14308
shift, tmps[i], 0);
14310
- bytelen = adj_bytelen;
14312
+ /* Make sure not to write past the end of the struct. */
14313
+ store_bit_field (dest,
14314
+ adj_bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT,
14315
+ bytepos * BITS_PER_UNIT, ssize * BITS_PER_UNIT - 1,
14316
+ VOIDmode, tmps[i]);
14319
/* Optimize the access just a bit. */
14321
- && (! SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (dest))
14322
- || MEM_ALIGN (dest) >= GET_MODE_ALIGNMENT (mode))
14323
- && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0
14324
- && bytelen == GET_MODE_SIZE (mode))
14325
+ else if (MEM_P (dest)
14326
+ && (!SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (dest))
14327
+ || MEM_ALIGN (dest) >= GET_MODE_ALIGNMENT (mode))
14328
+ && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0
14329
+ && bytelen == GET_MODE_SIZE (mode))
14330
emit_move_insn (adjust_address (dest, mode, bytepos), tmps[i]);
14333
store_bit_field (dest, bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT,
14334
0, 0, mode, tmps[i]);
14335
@@ -4551,19 +4560,19 @@
14336
- tree_low_cst (DECL_FIELD_BIT_OFFSET (repr), 1));
14338
/* If the adjustment is larger than bitpos, we would have a negative bit
14339
- position for the lower bound and this may wreak havoc later. This can
14340
- occur only if we have a non-null offset, so adjust offset and bitpos
14341
- to make the lower bound non-negative. */
14342
+ position for the lower bound and this may wreak havoc later. Adjust
14343
+ offset and bitpos to make the lower bound non-negative in that case. */
14344
if (bitoffset > *bitpos)
14346
HOST_WIDE_INT adjust = bitoffset - *bitpos;
14348
gcc_assert ((adjust % BITS_PER_UNIT) == 0);
14349
- gcc_assert (*offset != NULL_TREE);
14353
- = size_binop (MINUS_EXPR, *offset, size_int (adjust / BITS_PER_UNIT));
14354
+ if (*offset == NULL_TREE)
14355
+ *offset = size_int (-adjust / BITS_PER_UNIT);
14358
+ = size_binop (MINUS_EXPR, *offset, size_int (adjust / BITS_PER_UNIT));
14362
@@ -4668,8 +4677,7 @@
14363
expand_insn (icode, 2, ops);
14366
- store_bit_field (mem, GET_MODE_BITSIZE (mode),
14367
- 0, 0, 0, mode, reg);
14368
+ store_bit_field (mem, GET_MODE_BITSIZE (mode), 0, 0, 0, mode, reg);
14372
@@ -4698,6 +4706,15 @@
14373
tem = get_inner_reference (to, &bitsize, &bitpos, &offset, &mode1,
14374
&unsignedp, &volatilep, true);
14376
+ /* Make sure bitpos is not negative, it can wreak havoc later. */
14379
+ gcc_assert (offset == NULL_TREE);
14380
+ offset = size_int (bitpos >> (BITS_PER_UNIT == 8
14381
+ ? 3 : exact_log2 (BITS_PER_UNIT)));
14382
+ bitpos &= BITS_PER_UNIT - 1;
14385
if (TREE_CODE (to) == COMPONENT_REF
14386
&& DECL_BIT_FIELD_TYPE (TREE_OPERAND (to, 1)))
14387
get_bit_range (&bitregion_start, &bitregion_end, to, &bitpos, &offset);
14388
Index: gcc/go/go-gcc.cc
14389
===================================================================
14390
--- a/src/gcc/go/go-gcc.cc (.../tags/gcc_4_8_2_release)
14391
+++ b/src/gcc/go/go-gcc.cc (.../branches/gcc-4_8-branch)
14392
@@ -232,6 +232,9 @@
14394
convert_expression(Btype* type, Bexpression* expr, Location);
14397
+ function_code_expression(Bfunction*, Location);
14402
@@ -334,6 +337,17 @@
14404
label_address(Blabel*, Location);
14410
+ { return this->make_function(error_mark_node); }
14413
+ function(Btype* fntype, const std::string& name, const std::string& asm_name,
14414
+ bool is_visible, bool is_declaration, bool is_inlinable,
14415
+ bool disable_split_stack, bool in_unique_section, Location);
14418
// Make a Bexpression from a tree.
14420
@@ -350,6 +364,10 @@
14422
{ return new Btype(t); }
14425
+ make_function(tree t)
14426
+ { return new Bfunction(t); }
14429
fill_in_struct(Btype*, const std::vector<Btyped_identifier>&);
14431
@@ -966,6 +984,19 @@
14432
return tree_to_expr(ret);
14435
+// Get the address of a function.
14438
+Gcc_backend::function_code_expression(Bfunction* bfunc, Location location)
14440
+ tree func = bfunc->get_tree();
14441
+ if (func == error_mark_node)
14442
+ return this->error_expression();
14444
+ tree ret = build_fold_addr_expr_loc(location.gcc_location(), func);
14445
+ return this->make_expression(ret);
14448
// An expression as a statement.
14451
@@ -1724,6 +1755,56 @@
14452
return this->make_expression(ret);
14455
+// Declare or define a new function.
14458
+Gcc_backend::function(Btype* fntype, const std::string& name,
14459
+ const std::string& asm_name, bool is_visible,
14460
+ bool is_declaration, bool is_inlinable,
14461
+ bool disable_split_stack, bool in_unique_section,
14462
+ Location location)
14464
+ tree functype = fntype->get_tree();
14465
+ if (functype != error_mark_node)
14467
+ gcc_assert(FUNCTION_POINTER_TYPE_P(functype));
14468
+ functype = TREE_TYPE(functype);
14470
+ tree id = get_identifier_from_string(name);
14471
+ if (functype == error_mark_node || id == error_mark_node)
14472
+ return this->error_function();
14474
+ tree decl = build_decl(location.gcc_location(), FUNCTION_DECL, id, functype);
14475
+ if (!asm_name.empty())
14476
+ SET_DECL_ASSEMBLER_NAME(decl, get_identifier_from_string(asm_name));
14478
+ TREE_PUBLIC(decl) = 1;
14479
+ if (is_declaration)
14480
+ DECL_EXTERNAL(decl) = 1;
14483
+ tree restype = TREE_TYPE(functype);
14485
+ build_decl(location.gcc_location(), RESULT_DECL, NULL_TREE, restype);
14486
+ DECL_ARTIFICIAL(resdecl) = 1;
14487
+ DECL_IGNORED_P(resdecl) = 1;
14488
+ DECL_CONTEXT(resdecl) = decl;
14489
+ DECL_RESULT(decl) = resdecl;
14491
+ if (!is_inlinable)
14492
+ DECL_UNINLINABLE(decl) = 1;
14493
+ if (disable_split_stack)
14495
+ tree attr = get_identifier("__no_split_stack__");
14496
+ DECL_ATTRIBUTES(decl) = tree_cons(attr, NULL_TREE, NULL_TREE);
14498
+ if (in_unique_section)
14499
+ resolve_unique_section(decl, 0, 1);
14501
+ go_preserve_from_gc(decl);
14502
+ return new Bfunction(decl);
14505
// The single backend.
14507
static Gcc_backend gcc_backend;
14508
@@ -1799,3 +1880,9 @@
14510
return bv->get_tree();
14514
+function_to_tree(Bfunction* bf)
14516
+ return bf->get_tree();
14518
Index: gcc/go/ChangeLog
14519
===================================================================
14520
--- a/src/gcc/go/ChangeLog (.../tags/gcc_4_8_2_release)
14521
+++ b/src/gcc/go/ChangeLog (.../branches/gcc-4_8-branch)
14523
+2013-12-11 Ian Lance Taylor <iant@google.com>
14525
+ * go-lang.c (go_langhook_post_options): Disable sibling calls by
14528
+2013-10-16 Ian Lance Taylor <iant@google.com>
14530
+ Bring in from mainline:
14532
+ 2013-10-11 Chris Manghane <cmang@google.com>
14533
+ * go-gcc.cc (Gcc_backend::function_code_expression): New
14536
+ 2013-10-10 Chris Manghane <cmang@google.com>
14537
+ * go-gcc.cc (Backend::error_function): New function.
14538
+ (Backend::function): New function.
14539
+ (Backend::make_function): New function.
14540
+ (function_to_tree): New function.
14542
2013-10-16 Release Manager
14544
* GCC 4.8.2 released.
14545
Index: gcc/go/go-lang.c
14546
===================================================================
14547
--- a/src/gcc/go/go-lang.c (.../tags/gcc_4_8_2_release)
14548
+++ b/src/gcc/go/go-lang.c (.../branches/gcc-4_8-branch)
14549
@@ -269,6 +269,10 @@
14550
if (flag_excess_precision_cmdline == EXCESS_PRECISION_DEFAULT)
14551
flag_excess_precision_cmdline = EXCESS_PRECISION_STANDARD;
14553
+ /* Tail call optimizations can confuse uses of runtime.Callers. */
14554
+ if (!global_options_set.x_flag_optimize_sibling_calls)
14555
+ global_options.x_flag_optimize_sibling_calls = 0;
14557
/* Returning false means that the backend should be used. */
14560
Index: gcc/go/gofrontend/gogo.cc
14561
===================================================================
14562
--- a/src/gcc/go/gofrontend/gogo.cc (.../tags/gcc_4_8_2_release)
14563
+++ b/src/gcc/go/gofrontend/gogo.cc (.../branches/gcc-4_8-branch)
14564
@@ -2822,7 +2822,10 @@
14565
if (orig_fntype->is_varargs())
14566
new_fntype->set_is_varargs();
14568
- std::string name = orig_no->name() + "$recover";
14569
+ std::string name = orig_no->name();
14570
+ if (orig_fntype->is_method())
14571
+ name += "$" + orig_fntype->receiver()->type()->mangled_name(gogo);
14572
+ name += "$recover";
14573
Named_object *new_no = gogo->start_function(name, new_fntype, false,
14575
Function *new_func = new_no->func_value();
14576
@@ -2916,7 +2919,25 @@
14577
&& !orig_rec_no->var_value()->is_receiver());
14578
orig_rec_no->var_value()->set_is_receiver();
14580
- const std::string& new_receiver_name(orig_fntype->receiver()->name());
14581
+ std::string new_receiver_name(orig_fntype->receiver()->name());
14582
+ if (new_receiver_name.empty())
14584
+ // Find the receiver. It was named "r.NNN" in
14585
+ // Gogo::start_function.
14586
+ for (Bindings::const_definitions_iterator p =
14587
+ new_bindings->begin_definitions();
14588
+ p != new_bindings->end_definitions();
14591
+ const std::string& pname((*p)->name());
14592
+ if (pname[0] == 'r' && pname[1] == '.')
14594
+ new_receiver_name = pname;
14598
+ go_assert(!new_receiver_name.empty());
14600
Named_object* new_rec_no = new_bindings->lookup_local(new_receiver_name);
14601
if (new_rec_no == NULL)
14602
go_assert(saw_errors());
14603
@@ -3320,7 +3341,8 @@
14604
closure_var_(NULL), block_(block), location_(location), labels_(),
14605
local_type_count_(0), descriptor_(NULL), fndecl_(NULL), defer_stack_(NULL),
14606
is_sink_(false), results_are_named_(false), nointerface_(false),
14607
- calls_recover_(false), is_recover_thunk_(false), has_recover_thunk_(false),
14608
+ is_unnamed_type_stub_method_(false), calls_recover_(false),
14609
+ is_recover_thunk_(false), has_recover_thunk_(false),
14610
in_unique_section_(false)
14613
@@ -3819,6 +3841,81 @@
14614
*presults = results;
14617
+// Get the backend representation.
14620
+Function::get_or_make_decl(Gogo* gogo, Named_object* no)
14622
+ if (this->fndecl_ == NULL)
14624
+ std::string asm_name;
14625
+ bool is_visible = false;
14626
+ if (no->package() != NULL)
14628
+ else if (this->enclosing_ != NULL || Gogo::is_thunk(no))
14630
+ else if (Gogo::unpack_hidden_name(no->name()) == "init"
14631
+ && !this->type_->is_method())
14633
+ else if (Gogo::unpack_hidden_name(no->name()) == "main"
14634
+ && gogo->is_main_package())
14635
+ is_visible = true;
14636
+ // Methods have to be public even if they are hidden because
14637
+ // they can be pulled into type descriptors when using
14638
+ // anonymous fields.
14639
+ else if (!Gogo::is_hidden_name(no->name())
14640
+ || this->type_->is_method())
14642
+ if (!this->is_unnamed_type_stub_method_)
14643
+ is_visible = true;
14644
+ std::string pkgpath = gogo->pkgpath_symbol();
14645
+ if (this->type_->is_method()
14646
+ && Gogo::is_hidden_name(no->name())
14647
+ && Gogo::hidden_name_pkgpath(no->name()) != gogo->pkgpath())
14649
+ // This is a method we created for an unexported
14650
+ // method of an imported embedded type. We need to
14651
+ // use the pkgpath of the imported package to avoid
14652
+ // a possible name collision. See bug478 for a test
14654
+ pkgpath = Gogo::hidden_name_pkgpath(no->name());
14655
+ pkgpath = Gogo::pkgpath_for_symbol(pkgpath);
14658
+ asm_name = pkgpath;
14659
+ asm_name.append(1, '.');
14660
+ asm_name.append(Gogo::unpack_hidden_name(no->name()));
14661
+ if (this->type_->is_method())
14663
+ asm_name.append(1, '.');
14664
+ Type* rtype = this->type_->receiver()->type();
14665
+ asm_name.append(rtype->mangled_name(gogo));
14669
+ // If a function calls the predeclared recover function, we
14670
+ // can't inline it, because recover behaves differently in a
14671
+ // function passed directly to defer. If this is a recover
14672
+ // thunk that we built to test whether a function can be
14673
+ // recovered, we can't inline it, because that will mess up
14674
+ // our return address comparison.
14675
+ bool is_inlinable = !(this->calls_recover_ || this->is_recover_thunk_);
14677
+ // If this is a thunk created to call a function which calls
14678
+ // the predeclared recover function, we need to disable
14679
+ // stack splitting for the thunk.
14680
+ bool disable_split_stack = this->is_recover_thunk_;
14682
+ Btype* functype = this->type_->get_backend_fntype(gogo);
14684
+ gogo->backend()->function(functype, no->get_id(gogo), asm_name,
14685
+ is_visible, false, is_inlinable,
14686
+ disable_split_stack,
14687
+ this->in_unique_section_, this->location());
14689
+ return this->fndecl_;
14694
Block::Block(Block* enclosing, Location location)
14695
@@ -5110,6 +5207,75 @@
14700
+// Return the external identifier for this object.
14703
+Named_object::get_id(Gogo* gogo)
14705
+ go_assert(!this->is_variable() && !this->is_result_variable());
14706
+ std::string decl_name;
14707
+ if (this->is_function_declaration()
14708
+ && !this->func_declaration_value()->asm_name().empty())
14709
+ decl_name = this->func_declaration_value()->asm_name();
14710
+ else if (this->is_type()
14711
+ && Linemap::is_predeclared_location(this->type_value()->location()))
14713
+ // We don't need the package name for builtin types.
14714
+ decl_name = Gogo::unpack_hidden_name(this->name_);
14718
+ std::string package_name;
14719
+ if (this->package_ == NULL)
14720
+ package_name = gogo->package_name();
14722
+ package_name = this->package_->package_name();
14724
+ // Note that this will be misleading if this is an unexported
14725
+ // method generated for an embedded imported type. In that case
14726
+ // the unexported method should have the package name of the
14727
+ // package from which it is imported, but we are going to give
14728
+ // it our package name. Fixing this would require knowing the
14729
+ // package name, but we only know the package path. It might be
14730
+ // better to use package paths here anyhow. This doesn't affect
14731
+ // the assembler code, because we always set that name in
14732
+ // Function::get_or_make_decl anyhow. FIXME.
14734
+ decl_name = package_name + '.' + Gogo::unpack_hidden_name(this->name_);
14736
+ Function_type* fntype;
14737
+ if (this->is_function())
14738
+ fntype = this->func_value()->type();
14739
+ else if (this->is_function_declaration())
14740
+ fntype = this->func_declaration_value()->type();
14743
+ if (fntype != NULL && fntype->is_method())
14745
+ decl_name.push_back('.');
14746
+ decl_name.append(fntype->receiver()->type()->mangled_name(gogo));
14749
+ if (this->is_type())
14751
+ unsigned int index;
14752
+ const Named_object* in_function = this->type_value()->in_function(&index);
14753
+ if (in_function != NULL)
14755
+ decl_name += '$' + Gogo::unpack_hidden_name(in_function->name());
14759
+ snprintf(buf, sizeof buf, "%u", index);
14760
+ decl_name += '$';
14761
+ decl_name += buf;
14765
+ return decl_name;
14770
Bindings::Bindings(Bindings* enclosing)
14771
Index: gcc/go/gofrontend/runtime.def
14772
===================================================================
14773
--- a/src/gcc/go/gofrontend/runtime.def (.../tags/gcc_4_8_2_release)
14774
+++ b/src/gcc/go/gofrontend/runtime.def (.../branches/gcc-4_8-branch)
14776
P1(STRING), R1(SLICE))
14779
+// Complex division.
14780
+DEF_GO_RUNTIME(COMPLEX64_DIV, "__go_complex64_div",
14781
+ P2(COMPLEX64, COMPLEX64), R1(COMPLEX64))
14782
+DEF_GO_RUNTIME(COMPLEX128_DIV, "__go_complex128_div",
14783
+ P2(COMPLEX128, COMPLEX128), R1(COMPLEX128))
14786
DEF_GO_RUNTIME(MAKESLICE1, "__go_make_slice1", P2(TYPE, UINTPTR), R1(SLICE))
14787
DEF_GO_RUNTIME(MAKESLICE2, "__go_make_slice2", P3(TYPE, UINTPTR, UINTPTR),
14788
Index: gcc/go/gofrontend/gogo.h
14789
===================================================================
14790
--- a/src/gcc/go/gofrontend/gogo.h (.../tags/gcc_4_8_2_release)
14791
+++ b/src/gcc/go/gofrontend/gogo.h (.../branches/gcc-4_8-branch)
14798
// This file declares the basic classes used to hold the internal
14799
// representation of Go which is built by the parser.
14800
@@ -952,6 +953,15 @@
14801
this->nointerface_ = true;
14804
+ // Record that this function is a stub method created for an unnamed
14807
+ set_is_unnamed_type_stub_method()
14809
+ go_assert(this->is_method());
14810
+ this->is_unnamed_type_stub_method_ = true;
14813
// Add a new field to the closure variable.
14815
add_closure_field(Named_object* var, Location loc)
14816
@@ -1089,17 +1099,13 @@
14817
this->descriptor_ = descriptor;
14820
- // Return the function's decl given an identifier.
14822
- get_or_make_decl(Gogo*, Named_object*, tree id);
14823
+ // Return the backend representation.
14825
+ get_or_make_decl(Gogo*, Named_object*);
14827
// Return the function's decl after it has been built.
14831
- go_assert(this->fndecl_ != NULL);
14832
- return this->fndecl_;
14834
+ get_decl() const;
14836
// Set the function decl to hold a tree of the function code.
14838
@@ -1170,7 +1176,7 @@
14839
// The function descriptor, if any.
14840
Expression* descriptor_;
14841
// The function decl.
14843
+ Bfunction* fndecl_;
14844
// The defer stack variable. A pointer to this variable is used to
14845
// distinguish the defer stack for one function from another. This
14846
// is NULL unless we actually need a defer stack.
14847
@@ -1181,6 +1187,9 @@
14848
bool results_are_named_ : 1;
14849
// True if this method should not be included in the type descriptor.
14850
bool nointerface_ : 1;
14851
+ // True if this function is a stub method created for an unnamed
14853
+ bool is_unnamed_type_stub_method_ : 1;
14854
// True if this function calls the predeclared recover function.
14855
bool calls_recover_ : 1;
14856
// True if this a thunk built for a function which calls recover.
14857
@@ -1265,9 +1274,9 @@
14858
has_descriptor() const
14859
{ return this->descriptor_ != NULL; }
14861
- // Return a decl for the function given an identifier.
14863
- get_or_make_decl(Gogo*, Named_object*, tree id);
14864
+ // Return a backend representation.
14866
+ get_or_make_decl(Gogo*, Named_object*);
14868
// If there is a descriptor, build it into the backend
14870
@@ -1290,7 +1299,7 @@
14871
// The function descriptor, if any.
14872
Expression* descriptor_;
14873
// The function decl if needed.
14875
+ Bfunction* fndecl_;
14879
@@ -2181,8 +2190,8 @@
14881
get_backend_variable(Gogo*, Named_object* function);
14883
- // Return a tree for the external identifier for this object.
14885
+ // Return the external identifier for this object.
14889
// Return a tree representing this object.
14890
Index: gcc/go/gofrontend/types.h
14891
===================================================================
14892
--- a/src/gcc/go/gofrontend/types.h (.../tags/gcc_4_8_2_release)
14893
+++ b/src/gcc/go/gofrontend/types.h (.../branches/gcc-4_8-branch)
14894
@@ -1138,6 +1138,13 @@
14895
Function_type* equal_fntype, Named_object** hash_fn,
14896
Named_object** equal_fn);
14899
+ write_named_hash(Gogo*, Named_type*, Function_type* hash_fntype,
14900
+ Function_type* equal_fntype);
14903
+ write_named_equal(Gogo*, Named_type*);
14905
// Build a composite literal for the uncommon type information.
14907
uncommon_type_constructor(Gogo*, Type* uncommon_type,
14908
@@ -1717,7 +1724,8 @@
14909
Typed_identifier_list* results, Location location)
14910
: Type(TYPE_FUNCTION),
14911
receiver_(receiver), parameters_(parameters), results_(results),
14912
- location_(location), is_varargs_(false), is_builtin_(false)
14913
+ location_(location), is_varargs_(false), is_builtin_(false),
14917
// Get the receiver.
14918
@@ -1789,6 +1797,12 @@
14920
copy_with_receiver(Type*) const;
14922
+ // Return a copy of this type with the receiver treated as the first
14923
+ // parameter. If WANT_POINTER_RECEIVER is true, the receiver is
14924
+ // forced to be a pointer.
14926
+ copy_with_receiver_as_param(bool want_pointer_receiver) const;
14928
// Return a copy of this type ignoring any receiver and using dummy
14929
// names for all parameters. This is used for thunks for method
14931
@@ -1798,6 +1812,11 @@
14933
make_function_type_descriptor_type();
14935
+ // Return the backend representation of this function type. This is used
14936
+ // as the real type of a backend function declaration or defintion.
14938
+ get_backend_fntype(Gogo*);
14942
do_traverse(Traverse*);
14943
@@ -1851,6 +1870,9 @@
14944
// Whether this is a special builtin function which can not simply
14945
// be called. This is used for len, cap, etc.
14947
+ // The backend representation of this type for backend function
14948
+ // declarations and definitions.
14952
// The type of a pointer.
14953
@@ -1915,7 +1937,7 @@
14956
explicit Struct_field(const Typed_identifier& typed_identifier)
14957
- : typed_identifier_(typed_identifier), tag_(NULL)
14958
+ : typed_identifier_(typed_identifier), tag_(NULL), is_imported_(false)
14962
@@ -1926,6 +1948,10 @@
14964
is_field_name(const std::string& name) const;
14966
+ // Return whether this struct field is an unexported field named NAME.
14968
+ is_unexported_field_name(Gogo*, const std::string& name) const;
14970
// Return whether this struct field is an embedded built-in type.
14972
is_embedded_builtin(Gogo*) const;
14973
@@ -1963,6 +1989,11 @@
14974
set_tag(const std::string& tag)
14975
{ this->tag_ = new std::string(tag); }
14977
+ // Record that this field is defined in an imported struct.
14979
+ set_is_imported()
14980
+ { this->is_imported_ = true; }
14982
// Set the type. This is only used in error cases.
14984
set_type(Type* type)
14985
@@ -1973,6 +2004,8 @@
14986
Typed_identifier typed_identifier_;
14987
// The field tag. This is NULL if the field has no tag.
14989
+ // Whether this field is defined in an imported struct.
14990
+ bool is_imported_;
14993
// A list of struct fields.
14994
Index: gcc/go/gofrontend/parse.cc
14995
===================================================================
14996
--- a/src/gcc/go/gofrontend/parse.cc (.../tags/gcc_4_8_2_release)
14997
+++ b/src/gcc/go/gofrontend/parse.cc (.../branches/gcc-4_8-branch)
14998
@@ -744,6 +744,8 @@
15001
Parse::Names names;
15002
+ if (receiver != NULL)
15003
+ names[receiver->name()] = receiver;
15004
if (params != NULL)
15005
this->check_signature_names(params, &names);
15006
if (results != NULL)
15007
Index: gcc/go/gofrontend/import.h
15008
===================================================================
15009
--- a/src/gcc/go/gofrontend/import.h (.../tags/gcc_4_8_2_release)
15010
+++ b/src/gcc/go/gofrontend/import.h (.../branches/gcc-4_8-branch)
15011
@@ -149,6 +149,11 @@
15013
{ return this->location_; }
15015
+ // Return the package we are importing.
15018
+ { return this->package_; }
15020
// Return the next character.
15023
Index: gcc/go/gofrontend/runtime.cc
15024
===================================================================
15025
--- a/src/gcc/go/gofrontend/runtime.cc (.../tags/gcc_4_8_2_release)
15026
+++ b/src/gcc/go/gofrontend/runtime.cc (.../branches/gcc-4_8-branch)
15029
// Go type float64, C type double.
15031
+ // Go type complex64, C type __complex float.
15033
// Go type complex128, C type __complex double.
15035
// Go type string, C type struct __go_string.
15036
@@ -126,6 +128,10 @@
15037
t = Type::lookup_float_type("float64");
15040
+ case RFT_COMPLEX64:
15041
+ t = Type::lookup_complex_type("complex64");
15044
case RFT_COMPLEX128:
15045
t = Type::lookup_complex_type("complex128");
15047
@@ -216,6 +222,7 @@
15051
+ case RFT_COMPLEX64:
15052
case RFT_COMPLEX128:
15055
Index: gcc/go/gofrontend/expressions.h
15056
===================================================================
15057
--- a/src/gcc/go/gofrontend/expressions.h (.../tags/gcc_4_8_2_release)
15058
+++ b/src/gcc/go/gofrontend/expressions.h (.../branches/gcc-4_8-branch)
15059
@@ -1514,8 +1514,8 @@
15061
{ return this->closure_; }
15063
- // Return a tree for the code for a function.
15065
+ // Return a backend expression for the code of a function.
15066
+ static Bexpression*
15067
get_code_pointer(Gogo*, Named_object* function, Location loc);
15070
Index: gcc/go/gofrontend/gogo-tree.cc
15071
===================================================================
15072
--- a/src/gcc/go/gofrontend/gogo-tree.cc (.../tags/gcc_4_8_2_release)
15073
+++ b/src/gcc/go/gofrontend/gogo-tree.cc (.../branches/gcc-4_8-branch)
15074
@@ -985,74 +985,6 @@
15078
-// Get a tree for the identifier for a named object.
15081
-Named_object::get_id(Gogo* gogo)
15083
- go_assert(!this->is_variable() && !this->is_result_variable());
15084
- std::string decl_name;
15085
- if (this->is_function_declaration()
15086
- && !this->func_declaration_value()->asm_name().empty())
15087
- decl_name = this->func_declaration_value()->asm_name();
15088
- else if (this->is_type()
15089
- && Linemap::is_predeclared_location(this->type_value()->location()))
15091
- // We don't need the package name for builtin types.
15092
- decl_name = Gogo::unpack_hidden_name(this->name_);
15096
- std::string package_name;
15097
- if (this->package_ == NULL)
15098
- package_name = gogo->package_name();
15100
- package_name = this->package_->package_name();
15102
- // Note that this will be misleading if this is an unexported
15103
- // method generated for an embedded imported type. In that case
15104
- // the unexported method should have the package name of the
15105
- // package from which it is imported, but we are going to give
15106
- // it our package name. Fixing this would require knowing the
15107
- // package name, but we only know the package path. It might be
15108
- // better to use package paths here anyhow. This doesn't affect
15109
- // the assembler code, because we always set that name in
15110
- // Function::get_or_make_decl anyhow. FIXME.
15112
- decl_name = package_name + '.' + Gogo::unpack_hidden_name(this->name_);
15114
- Function_type* fntype;
15115
- if (this->is_function())
15116
- fntype = this->func_value()->type();
15117
- else if (this->is_function_declaration())
15118
- fntype = this->func_declaration_value()->type();
15121
- if (fntype != NULL && fntype->is_method())
15123
- decl_name.push_back('.');
15124
- decl_name.append(fntype->receiver()->type()->mangled_name(gogo));
15127
- if (this->is_type())
15129
- unsigned int index;
15130
- const Named_object* in_function = this->type_value()->in_function(&index);
15131
- if (in_function != NULL)
15133
- decl_name += '$' + Gogo::unpack_hidden_name(in_function->name());
15137
- snprintf(buf, sizeof buf, "%u", index);
15138
- decl_name += '$';
15139
- decl_name += buf;
15143
- return get_identifier_from_string(decl_name);
15146
// Get a tree for a named object.
15149
@@ -1067,11 +999,6 @@
15150
return error_mark_node;
15154
- if (this->classification_ == NAMED_OBJECT_TYPE)
15155
- name = NULL_TREE;
15157
- name = this->get_id(gogo);
15159
switch (this->classification_)
15161
@@ -1099,6 +1026,7 @@
15162
decl = error_mark_node;
15163
else if (INTEGRAL_TYPE_P(TREE_TYPE(expr_tree)))
15165
+ tree name = get_identifier_from_string(this->get_id(gogo));
15166
decl = build_decl(named_constant->location().gcc_location(),
15167
CONST_DECL, name, TREE_TYPE(expr_tree));
15168
DECL_INITIAL(decl) = expr_tree;
15169
@@ -1161,7 +1089,7 @@
15170
case NAMED_OBJECT_FUNC:
15172
Function* func = this->u_.func_value;
15173
- decl = func->get_or_make_decl(gogo, this, name);
15174
+ decl = function_to_tree(func->get_or_make_decl(gogo, this));
15175
if (decl != error_mark_node)
15177
if (func->block() != NULL)
15178
@@ -1286,124 +1214,13 @@
15182
-// Get a tree for a function decl.
15183
+// Get the backend representation.
15186
-Function::get_or_make_decl(Gogo* gogo, Named_object* no, tree id)
15188
+Function_declaration::get_or_make_decl(Gogo* gogo, Named_object* no)
15190
- if (this->fndecl_ == NULL_TREE)
15191
+ if (this->fndecl_ == NULL)
15193
- tree functype = type_to_tree(this->type_->get_backend(gogo));
15195
- if (functype != error_mark_node)
15197
- // The type of a function comes back as a pointer to a
15198
- // struct whose first field is the function, but we want the
15199
- // real function type for a function declaration.
15200
- go_assert(POINTER_TYPE_P(functype)
15201
- && TREE_CODE(TREE_TYPE(functype)) == RECORD_TYPE);
15202
- functype = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(functype)));
15203
- go_assert(FUNCTION_POINTER_TYPE_P(functype));
15204
- functype = TREE_TYPE(functype);
15207
- if (functype == error_mark_node)
15208
- this->fndecl_ = error_mark_node;
15211
- tree decl = build_decl(this->location().gcc_location(), FUNCTION_DECL,
15214
- this->fndecl_ = decl;
15216
- if (no->package() != NULL)
15218
- else if (this->enclosing_ != NULL || Gogo::is_thunk(no))
15220
- else if (Gogo::unpack_hidden_name(no->name()) == "init"
15221
- && !this->type_->is_method())
15223
- else if (Gogo::unpack_hidden_name(no->name()) == "main"
15224
- && gogo->is_main_package())
15225
- TREE_PUBLIC(decl) = 1;
15226
- // Methods have to be public even if they are hidden because
15227
- // they can be pulled into type descriptors when using
15228
- // anonymous fields.
15229
- else if (!Gogo::is_hidden_name(no->name())
15230
- || this->type_->is_method())
15232
- TREE_PUBLIC(decl) = 1;
15233
- std::string pkgpath = gogo->pkgpath_symbol();
15234
- if (this->type_->is_method()
15235
- && Gogo::is_hidden_name(no->name())
15236
- && Gogo::hidden_name_pkgpath(no->name()) != gogo->pkgpath())
15238
- // This is a method we created for an unexported
15239
- // method of an imported embedded type. We need to
15240
- // use the pkgpath of the imported package to avoid
15241
- // a possible name collision. See bug478 for a test
15243
- pkgpath = Gogo::hidden_name_pkgpath(no->name());
15244
- pkgpath = Gogo::pkgpath_for_symbol(pkgpath);
15247
- std::string asm_name = pkgpath;
15248
- asm_name.append(1, '.');
15249
- asm_name.append(Gogo::unpack_hidden_name(no->name()));
15250
- if (this->type_->is_method())
15252
- asm_name.append(1, '.');
15253
- Type* rtype = this->type_->receiver()->type();
15254
- asm_name.append(rtype->mangled_name(gogo));
15256
- SET_DECL_ASSEMBLER_NAME(decl,
15257
- get_identifier_from_string(asm_name));
15260
- // Why do we have to do this in the frontend?
15261
- tree restype = TREE_TYPE(functype);
15263
- build_decl(this->location().gcc_location(), RESULT_DECL, NULL_TREE,
15265
- DECL_ARTIFICIAL(resdecl) = 1;
15266
- DECL_IGNORED_P(resdecl) = 1;
15267
- DECL_CONTEXT(resdecl) = decl;
15268
- DECL_RESULT(decl) = resdecl;
15270
- // If a function calls the predeclared recover function, we
15271
- // can't inline it, because recover behaves differently in a
15272
- // function passed directly to defer. If this is a recover
15273
- // thunk that we built to test whether a function can be
15274
- // recovered, we can't inline it, because that will mess up
15275
- // our return address comparison.
15276
- if (this->calls_recover_ || this->is_recover_thunk_)
15277
- DECL_UNINLINABLE(decl) = 1;
15279
- // If this is a thunk created to call a function which calls
15280
- // the predeclared recover function, we need to disable
15281
- // stack splitting for the thunk.
15282
- if (this->is_recover_thunk_)
15284
- tree attr = get_identifier("__no_split_stack__");
15285
- DECL_ATTRIBUTES(decl) = tree_cons(attr, NULL_TREE, NULL_TREE);
15288
- if (this->in_unique_section_)
15289
- resolve_unique_section (decl, 0, 1);
15291
- go_preserve_from_gc(decl);
15294
- return this->fndecl_;
15297
-// Get a tree for a function declaration.
15300
-Function_declaration::get_or_make_decl(Gogo* gogo, Named_object* no, tree id)
15302
- if (this->fndecl_ == NULL_TREE)
15304
// Let Go code use an asm declaration to pick up a builtin
15306
if (!this->asm_name_.empty())
15307
@@ -1412,58 +1229,46 @@
15308
builtin_functions.find(this->asm_name_);
15309
if (p != builtin_functions.end())
15311
- this->fndecl_ = p->second;
15312
+ this->fndecl_ = tree_to_function(p->second);
15313
return this->fndecl_;
15317
- tree functype = type_to_tree(this->fntype_->get_backend(gogo));
15318
+ std::string asm_name;
15319
+ if (this->asm_name_.empty())
15321
+ asm_name = (no->package() == NULL
15322
+ ? gogo->pkgpath_symbol()
15323
+ : no->package()->pkgpath_symbol());
15324
+ asm_name.append(1, '.');
15325
+ asm_name.append(Gogo::unpack_hidden_name(no->name()));
15326
+ if (this->fntype_->is_method())
15328
+ asm_name.append(1, '.');
15329
+ Type* rtype = this->fntype_->receiver()->type();
15330
+ asm_name.append(rtype->mangled_name(gogo));
15334
- if (functype != error_mark_node)
15336
- // The type of a function comes back as a pointer to a
15337
- // struct whose first field is the function, but we want the
15338
- // real function type for a function declaration.
15339
- go_assert(POINTER_TYPE_P(functype)
15340
- && TREE_CODE(TREE_TYPE(functype)) == RECORD_TYPE);
15341
- functype = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(functype)));
15342
- go_assert(FUNCTION_POINTER_TYPE_P(functype));
15343
- functype = TREE_TYPE(functype);
15345
+ Btype* functype = this->fntype_->get_backend_fntype(gogo);
15347
+ gogo->backend()->function(functype, no->get_id(gogo), asm_name,
15348
+ true, true, true, false, false,
15349
+ this->location());
15353
- if (functype == error_mark_node)
15354
- decl = error_mark_node;
15357
- decl = build_decl(this->location().gcc_location(), FUNCTION_DECL, id,
15359
- TREE_PUBLIC(decl) = 1;
15360
- DECL_EXTERNAL(decl) = 1;
15362
- if (this->asm_name_.empty())
15364
- std::string asm_name = (no->package() == NULL
15365
- ? gogo->pkgpath_symbol()
15366
- : no->package()->pkgpath_symbol());
15367
- asm_name.append(1, '.');
15368
- asm_name.append(Gogo::unpack_hidden_name(no->name()));
15369
- if (this->fntype_->is_method())
15371
- asm_name.append(1, '.');
15372
- Type* rtype = this->fntype_->receiver()->type();
15373
- asm_name.append(rtype->mangled_name(gogo));
15375
- SET_DECL_ASSEMBLER_NAME(decl,
15376
- get_identifier_from_string(asm_name));
15379
- this->fndecl_ = decl;
15380
- go_preserve_from_gc(decl);
15382
return this->fndecl_;
15385
+// Return the function's decl after it has been built.
15388
+Function::get_decl() const
15390
+ go_assert(this->fndecl_ != NULL);
15391
+ return function_to_tree(this->fndecl_);
15394
// We always pass the receiver to a method as a pointer. If the
15395
// receiver is actually declared as a non-pointer type, then we copy
15396
// the value into a local variable, so that it has the right type. In
15397
@@ -1558,7 +1363,7 @@
15399
Function::build_tree(Gogo* gogo, Named_object* named_function)
15401
- tree fndecl = this->fndecl_;
15402
+ tree fndecl = this->get_decl();
15403
go_assert(fndecl != NULL_TREE);
15405
tree params = NULL_TREE;
15406
@@ -1796,7 +1601,7 @@
15409
set = fold_build2_loc(end_loc.gcc_location(), MODIFY_EXPR, void_type_node,
15410
- DECL_RESULT(this->fndecl_), retval);
15411
+ DECL_RESULT(this->get_decl()), retval);
15412
tree ret_stmt = fold_build1_loc(end_loc.gcc_location(), RETURN_EXPR,
15413
void_type_node, set);
15414
append_to_statement_list(ret_stmt, &stmt_list);
15415
@@ -1851,7 +1656,7 @@
15416
retval = this->return_value(gogo, named_function, end_loc,
15418
set = fold_build2_loc(end_loc.gcc_location(), MODIFY_EXPR, void_type_node,
15419
- DECL_RESULT(this->fndecl_), retval);
15420
+ DECL_RESULT(this->get_decl()), retval);
15421
ret_stmt = fold_build1_loc(end_loc.gcc_location(), RETURN_EXPR,
15422
void_type_node, set);
15424
@@ -1869,7 +1674,7 @@
15428
-// Return the value to assign to DECL_RESULT(this->fndecl_). This may
15429
+// Return the value to assign to DECL_RESULT(this->get_decl()). This may
15430
// also add statements to STMT_LIST, which need to be executed before
15431
// the assignment. This is used for a return statement with no
15432
// explicit values.
15433
@@ -1902,7 +1707,7 @@
15437
- tree rettype = TREE_TYPE(DECL_RESULT(this->fndecl_));
15438
+ tree rettype = TREE_TYPE(DECL_RESULT(this->get_decl()));
15439
retval = create_tmp_var(rettype, "RESULT");
15440
tree field = TYPE_FIELDS(rettype);
15442
@@ -2323,18 +2128,14 @@
15443
go_assert(m != NULL);
15445
Named_object* no = m->named_object();
15447
- tree fnid = no->get_id(this);
15451
if (no->is_function())
15452
- fndecl = no->func_value()->get_or_make_decl(this, no, fnid);
15453
+ bf = no->func_value()->get_or_make_decl(this, no);
15454
else if (no->is_function_declaration())
15455
- fndecl = no->func_declaration_value()->get_or_make_decl(this, no,
15457
+ bf = no->func_declaration_value()->get_or_make_decl(this, no);
15460
- fndecl = build_fold_addr_expr(fndecl);
15461
+ tree fndecl = build_fold_addr_expr(function_to_tree(bf));
15463
elt = pointers->quick_push(empty);
15464
elt->index = size_int(i);
15465
@@ -2353,10 +2154,11 @@
15466
TREE_CONSTANT(decl) = 1;
15467
DECL_INITIAL(decl) = constructor;
15469
- // If the interface type has hidden methods, then this is the only
15470
- // definition of the table. Otherwise it is a comdat table which
15471
- // may be defined in multiple packages.
15472
- if (has_hidden_methods)
15473
+ // If the interface type has hidden methods, and the table is for a
15474
+ // named type, then this is the only definition of the table.
15475
+ // Otherwise it is a comdat table which may be defined in multiple
15477
+ if (has_hidden_methods && type->named_type() != NULL)
15478
TREE_PUBLIC(decl) = 1;
15481
Index: gcc/go/gofrontend/lex.cc
15482
===================================================================
15483
--- a/src/gcc/go/gofrontend/lex.cc (.../tags/gcc_4_8_2_release)
15484
+++ b/src/gcc/go/gofrontend/lex.cc (.../branches/gcc-4_8-branch)
15485
@@ -873,7 +873,28 @@
15486
&& (cc < 'a' || cc > 'z')
15488
&& (cc < '0' || cc > '9'))
15491
+ // Check for an invalid character here, as we get better
15492
+ // error behaviour if we swallow them as part of the
15493
+ // identifier we are building.
15494
+ if ((cc >= ' ' && cc < 0x7f)
15500
+ this->lineoff_ = p - this->linebuf_;
15501
+ error_at(this->location(),
15502
+ "invalid character 0x%x in identifier",
15504
+ if (!has_non_ascii_char)
15506
+ buf.assign(pstart, p - pstart);
15507
+ has_non_ascii_char = true;
15509
+ if (!Lex::is_invalid_identifier(buf))
15510
+ buf.append("$INVALID$");
15515
Index: gcc/go/gofrontend/backend.h
15516
===================================================================
15517
--- a/src/gcc/go/gofrontend/backend.h (.../tags/gcc_4_8_2_release)
15518
+++ b/src/gcc/go/gofrontend/backend.h (.../branches/gcc-4_8-branch)
15520
// The backend representation of a statement.
15523
-// The backend representation of a function definition.
15524
+// The backend representation of a function definition or declaration.
15527
// The backend representation of a block.
15528
@@ -266,6 +266,11 @@
15529
virtual Bexpression*
15530
convert_expression(Btype* type, Bexpression* expr, Location) = 0;
15532
+ // Create an expression for the address of a function. This is used to
15533
+ // get the address of the code for a function.
15534
+ virtual Bexpression*
15535
+ function_code_expression(Bfunction*, Location) = 0;
15539
// Create an error statement. This is used for cases which should
15540
@@ -498,6 +503,32 @@
15542
virtual Bexpression*
15543
label_address(Blabel*, Location) = 0;
15547
+ // Create an error function. This is used for cases which should
15548
+ // not occur in a correct program, in order to keep the compilation
15549
+ // going without crashing.
15550
+ virtual Bfunction*
15551
+ error_function() = 0;
15553
+ // Declare or define a function of FNTYPE.
15554
+ // NAME is the Go name of the function. ASM_NAME, if not the empty string, is
15555
+ // the name that should be used in the symbol table; this will be non-empty if
15556
+ // a magic extern comment is used.
15557
+ // IS_VISIBLE is true if this function should be visible outside of the
15558
+ // current compilation unit. IS_DECLARATION is true if this is a function
15559
+ // declaration rather than a definition; the function definition will be in
15560
+ // another compilation unit.
15561
+ // IS_INLINABLE is true if the function can be inlined.
15562
+ // DISABLE_SPLIT_STACK is true if this function may not split the stack; this
15563
+ // is used for the implementation of recover.
15564
+ // IN_UNIQUE_SECTION is true if this function should be put into a unique
15565
+ // location if possible; this is used for field tracking.
15566
+ virtual Bfunction*
15567
+ function(Btype* fntype, const std::string& name, const std::string& asm_name,
15568
+ bool is_visible, bool is_declaration, bool is_inlinable,
15569
+ bool disable_split_stack, bool in_unique_section, Location) = 0;
15572
// The backend interface has to define this function.
15573
@@ -517,5 +548,6 @@
15574
extern tree stat_to_tree(Bstatement*);
15575
extern tree block_to_tree(Bblock*);
15576
extern tree var_to_tree(Bvariable*);
15577
+extern tree function_to_tree(Bfunction*);
15579
#endif // !defined(GO_BACKEND_H)
15580
Index: gcc/go/gofrontend/types.cc
15581
===================================================================
15582
--- a/src/gcc/go/gofrontend/types.cc (.../tags/gcc_4_8_2_release)
15583
+++ b/src/gcc/go/gofrontend/types.cc (.../branches/gcc-4_8-branch)
15584
@@ -1834,7 +1834,9 @@
15586
gogo->start_block(bloc);
15588
- if (this->struct_type() != NULL)
15589
+ if (name != NULL && name->real_type()->named_type() != NULL)
15590
+ this->write_named_hash(gogo, name, hash_fntype, equal_fntype);
15591
+ else if (this->struct_type() != NULL)
15592
this->struct_type()->write_hash_function(gogo, name, hash_fntype,
15594
else if (this->array_type() != NULL)
15595
@@ -1852,7 +1854,9 @@
15597
gogo->start_block(bloc);
15599
- if (this->struct_type() != NULL)
15600
+ if (name != NULL && name->real_type()->named_type() != NULL)
15601
+ this->write_named_equal(gogo, name);
15602
+ else if (this->struct_type() != NULL)
15603
this->struct_type()->write_equal_function(gogo, name);
15604
else if (this->array_type() != NULL)
15605
this->array_type()->write_equal_function(gogo, name);
15606
@@ -1865,6 +1869,100 @@
15607
gogo->finish_function(bloc);
15610
+// Write a hash function that simply calls the hash function for a
15611
+// named type. This is used when one named type is defined as
15612
+// another. This ensures that this case works when the other named
15613
+// type is defined in another package and relies on calling hash
15614
+// functions defined only in that package.
15617
+Type::write_named_hash(Gogo* gogo, Named_type* name,
15618
+ Function_type* hash_fntype, Function_type* equal_fntype)
15620
+ Location bloc = Linemap::predeclared_location();
15622
+ Named_type* base_type = name->real_type()->named_type();
15623
+ go_assert(base_type != NULL);
15625
+ // The pointer to the type we are going to hash. This is an
15626
+ // unsafe.Pointer.
15627
+ Named_object* key_arg = gogo->lookup("key", NULL);
15628
+ go_assert(key_arg != NULL);
15630
+ // The size of the type we are going to hash.
15631
+ Named_object* keysz_arg = gogo->lookup("key_size", NULL);
15632
+ go_assert(keysz_arg != NULL);
15634
+ Named_object* hash_fn;
15635
+ Named_object* equal_fn;
15636
+ name->real_type()->type_functions(gogo, base_type, hash_fntype, equal_fntype,
15637
+ &hash_fn, &equal_fn);
15639
+ // Call the hash function for the base type.
15640
+ Expression* key_ref = Expression::make_var_reference(key_arg, bloc);
15641
+ Expression* keysz_ref = Expression::make_var_reference(keysz_arg, bloc);
15642
+ Expression_list* args = new Expression_list();
15643
+ args->push_back(key_ref);
15644
+ args->push_back(keysz_ref);
15645
+ Expression* func = Expression::make_func_reference(hash_fn, NULL, bloc);
15646
+ Expression* call = Expression::make_call(func, args, false, bloc);
15648
+ // Return the hash of the base type.
15649
+ Expression_list* vals = new Expression_list();
15650
+ vals->push_back(call);
15651
+ Statement* s = Statement::make_return_statement(vals, bloc);
15652
+ gogo->add_statement(s);
15655
+// Write an equality function that simply calls the equality function
15656
+// for a named type. This is used when one named type is defined as
15657
+// another. This ensures that this case works when the other named
15658
+// type is defined in another package and relies on calling equality
15659
+// functions defined only in that package.
15662
+Type::write_named_equal(Gogo* gogo, Named_type* name)
15664
+ Location bloc = Linemap::predeclared_location();
15666
+ // The pointers to the types we are going to compare. These have
15667
+ // type unsafe.Pointer.
15668
+ Named_object* key1_arg = gogo->lookup("key1", NULL);
15669
+ Named_object* key2_arg = gogo->lookup("key2", NULL);
15670
+ go_assert(key1_arg != NULL && key2_arg != NULL);
15672
+ Named_type* base_type = name->real_type()->named_type();
15673
+ go_assert(base_type != NULL);
15675
+ // Build temporaries with the base type.
15676
+ Type* pt = Type::make_pointer_type(base_type);
15678
+ Expression* ref = Expression::make_var_reference(key1_arg, bloc);
15679
+ ref = Expression::make_cast(pt, ref, bloc);
15680
+ Temporary_statement* p1 = Statement::make_temporary(pt, ref, bloc);
15681
+ gogo->add_statement(p1);
15683
+ ref = Expression::make_var_reference(key2_arg, bloc);
15684
+ ref = Expression::make_cast(pt, ref, bloc);
15685
+ Temporary_statement* p2 = Statement::make_temporary(pt, ref, bloc);
15686
+ gogo->add_statement(p2);
15688
+ // Compare the values for equality.
15689
+ Expression* t1 = Expression::make_temporary_reference(p1, bloc);
15690
+ t1 = Expression::make_unary(OPERATOR_MULT, t1, bloc);
15692
+ Expression* t2 = Expression::make_temporary_reference(p2, bloc);
15693
+ t2 = Expression::make_unary(OPERATOR_MULT, t2, bloc);
15695
+ Expression* cond = Expression::make_binary(OPERATOR_EQEQ, t1, t2, bloc);
15697
+ // Return the equality comparison.
15698
+ Expression_list* vals = new Expression_list();
15699
+ vals->push_back(cond);
15700
+ Statement* s = Statement::make_return_statement(vals, bloc);
15701
+ gogo->add_statement(s);
15704
// Return a composite literal for the type descriptor for a plain type
15705
// of kind RUNTIME_TYPE_KIND named NAME.
15707
@@ -2164,26 +2262,9 @@
15710
go_assert(p->is_field_name("typ"));
15711
- if (!only_value_methods && m->is_value_method())
15713
- // This is a value method on a pointer type. Change the type of
15714
- // the method to use a pointer receiver. The implementation
15715
- // always uses a pointer receiver anyhow.
15716
- Type* rtype = mtype->receiver()->type();
15717
- Type* prtype = Type::make_pointer_type(rtype);
15718
- Typed_identifier* receiver =
15719
- new Typed_identifier(mtype->receiver()->name(), prtype,
15720
- mtype->receiver()->location());
15721
- mtype = Type::make_function_type(receiver,
15722
- (mtype->parameters() == NULL
15724
- : mtype->parameters()->copy()),
15725
- (mtype->results() == NULL
15727
- : mtype->results()->copy()),
15728
- mtype->location());
15730
- vals->push_back(Expression::make_type_descriptor(mtype, bloc));
15731
+ bool want_pointer_receiver = !only_value_methods && m->is_value_method();
15732
+ nonmethod_type = mtype->copy_with_receiver_as_param(want_pointer_receiver);
15733
+ vals->push_back(Expression::make_type_descriptor(nonmethod_type, bloc));
15736
go_assert(p->is_field_name("tfn"));
15737
@@ -3383,6 +3464,68 @@
15738
// Get the backend representation for a function type.
15741
+Function_type::get_backend_fntype(Gogo* gogo)
15743
+ if (this->fnbtype_ == NULL)
15745
+ Backend::Btyped_identifier breceiver;
15746
+ if (this->receiver_ != NULL)
15748
+ breceiver.name = Gogo::unpack_hidden_name(this->receiver_->name());
15750
+ // We always pass the address of the receiver parameter, in
15751
+ // order to make interface calls work with unknown types.
15752
+ Type* rtype = this->receiver_->type();
15753
+ if (rtype->points_to() == NULL)
15754
+ rtype = Type::make_pointer_type(rtype);
15755
+ breceiver.btype = rtype->get_backend(gogo);
15756
+ breceiver.location = this->receiver_->location();
15759
+ std::vector<Backend::Btyped_identifier> bparameters;
15760
+ if (this->parameters_ != NULL)
15762
+ bparameters.resize(this->parameters_->size());
15764
+ for (Typed_identifier_list::const_iterator p =
15765
+ this->parameters_->begin(); p != this->parameters_->end();
15768
+ bparameters[i].name = Gogo::unpack_hidden_name(p->name());
15769
+ bparameters[i].btype = p->type()->get_backend(gogo);
15770
+ bparameters[i].location = p->location();
15772
+ go_assert(i == bparameters.size());
15775
+ std::vector<Backend::Btyped_identifier> bresults;
15776
+ if (this->results_ != NULL)
15778
+ bresults.resize(this->results_->size());
15780
+ for (Typed_identifier_list::const_iterator p =
15781
+ this->results_->begin(); p != this->results_->end();
15784
+ bresults[i].name = Gogo::unpack_hidden_name(p->name());
15785
+ bresults[i].btype = p->type()->get_backend(gogo);
15786
+ bresults[i].location = p->location();
15788
+ go_assert(i == bresults.size());
15791
+ this->fnbtype_ = gogo->backend()->function_type(breceiver, bparameters,
15793
+ this->location());
15797
+ return this->fnbtype_;
15800
+// Get the backend representation for a Go function type.
15803
Function_type::do_get_backend(Gogo* gogo)
15805
// When we do anything with a function value other than call it, it
15806
@@ -3395,57 +3538,9 @@
15807
gogo->backend()->placeholder_struct_type("__go_descriptor", loc);
15808
Btype* ptr_struct_type = gogo->backend()->pointer_type(struct_type);
15810
- Backend::Btyped_identifier breceiver;
15811
- if (this->receiver_ != NULL)
15813
- breceiver.name = Gogo::unpack_hidden_name(this->receiver_->name());
15815
- // We always pass the address of the receiver parameter, in
15816
- // order to make interface calls work with unknown types.
15817
- Type* rtype = this->receiver_->type();
15818
- if (rtype->points_to() == NULL)
15819
- rtype = Type::make_pointer_type(rtype);
15820
- breceiver.btype = rtype->get_backend(gogo);
15821
- breceiver.location = this->receiver_->location();
15824
- std::vector<Backend::Btyped_identifier> bparameters;
15825
- if (this->parameters_ != NULL)
15827
- bparameters.resize(this->parameters_->size());
15829
- for (Typed_identifier_list::const_iterator p = this->parameters_->begin();
15830
- p != this->parameters_->end();
15833
- bparameters[i].name = Gogo::unpack_hidden_name(p->name());
15834
- bparameters[i].btype = p->type()->get_backend(gogo);
15835
- bparameters[i].location = p->location();
15837
- go_assert(i == bparameters.size());
15840
- std::vector<Backend::Btyped_identifier> bresults;
15841
- if (this->results_ != NULL)
15843
- bresults.resize(this->results_->size());
15845
- for (Typed_identifier_list::const_iterator p = this->results_->begin();
15846
- p != this->results_->end();
15849
- bresults[i].name = Gogo::unpack_hidden_name(p->name());
15850
- bresults[i].btype = p->type()->get_backend(gogo);
15851
- bresults[i].location = p->location();
15853
- go_assert(i == bresults.size());
15856
- Btype* fntype = gogo->backend()->function_type(breceiver, bparameters,
15858
std::vector<Backend::Btyped_identifier> fields(1);
15859
fields[0].name = "code";
15860
- fields[0].btype = fntype;
15861
+ fields[0].btype = this->get_backend_fntype(gogo);
15862
fields[0].location = loc;
15863
if (!gogo->backend()->set_placeholder_struct_type(struct_type, fields))
15864
return gogo->backend()->error_type();
15865
@@ -3821,6 +3916,32 @@
15869
+// Make a copy of a function type with the receiver as the first
15873
+Function_type::copy_with_receiver_as_param(bool want_pointer_receiver) const
15875
+ go_assert(this->is_method());
15876
+ Typed_identifier_list* new_params = new Typed_identifier_list();
15877
+ Type* rtype = this->receiver_->type();
15878
+ if (want_pointer_receiver)
15879
+ rtype = Type::make_pointer_type(rtype);
15880
+ Typed_identifier receiver(this->receiver_->name(), rtype,
15881
+ this->receiver_->location());
15882
+ new_params->push_back(receiver);
15883
+ const Typed_identifier_list* orig_params = this->parameters_;
15884
+ if (orig_params != NULL && !orig_params->empty())
15886
+ for (Typed_identifier_list::const_iterator p = orig_params->begin();
15887
+ p != orig_params->end();
15889
+ new_params->push_back(*p);
15891
+ return Type::make_function_type(NULL, new_params, this->results_,
15892
+ this->location_);
15895
// Make a copy of a function type ignoring any receiver and adding a
15896
// closure parameter.
15898
@@ -4195,7 +4316,8 @@
15900
// This is a horrible hack caused by the fact that we don't pack
15901
// the names of builtin types. FIXME.
15903
+ if (!this->is_imported_
15905
&& nt->is_builtin()
15906
&& nt->name() == Gogo::unpack_hidden_name(name))
15908
@@ -4204,6 +4326,36 @@
15912
+// Return whether this field is an unexported field named NAME.
15915
+Struct_field::is_unexported_field_name(Gogo* gogo,
15916
+ const std::string& name) const
15918
+ const std::string& field_name(this->field_name());
15919
+ if (Gogo::is_hidden_name(field_name)
15920
+ && name == Gogo::unpack_hidden_name(field_name)
15921
+ && gogo->pack_hidden_name(name, false) != field_name)
15924
+ // Check for the name of a builtin type. This is like the test in
15925
+ // is_field_name, only there we return false if this->is_imported_,
15926
+ // and here we return true.
15927
+ if (this->is_imported_ && this->is_anonymous())
15929
+ Type* t = this->typed_identifier_.type();
15930
+ if (t->points_to() != NULL)
15931
+ t = t->points_to();
15932
+ Named_type* nt = t->named_type();
15934
+ && nt->is_builtin()
15935
+ && nt->name() == Gogo::unpack_hidden_name(name))
15942
// Return whether this field is an embedded built-in type.
15945
@@ -4264,13 +4416,8 @@
15948
Type* t = p->type();
15949
- if (t->is_undefined())
15950
+ if (p->is_anonymous())
15952
- error_at(p->location(), "struct field type is incomplete");
15953
- p->set_type(Type::make_error_type());
15955
- else if (p->is_anonymous())
15957
if (t->named_type() != NULL && t->points_to() != NULL)
15959
error_at(p->location(), "embedded type may not be a pointer");
15960
@@ -4641,13 +4788,8 @@
15961
for (Struct_field_list::const_iterator pf = fields->begin();
15962
pf != fields->end();
15965
- const std::string& field_name(pf->field_name());
15966
- if (Gogo::is_hidden_name(field_name)
15967
- && name == Gogo::unpack_hidden_name(field_name)
15968
- && gogo->pack_hidden_name(name, false) != field_name)
15971
+ if (pf->is_unexported_field_name(gogo, name))
15976
@@ -5250,6 +5392,7 @@
15977
Type* ftype = imp->read_type();
15979
Struct_field sf(Typed_identifier(name, ftype, imp->location()));
15980
+ sf.set_is_imported();
15982
if (imp->peek_char() == ' ')
15984
@@ -9022,6 +9165,8 @@
15985
fntype->is_varargs(), location);
15986
gogo->finish_function(fntype->location());
15988
+ if (type->named_type() == NULL && stub->is_function())
15989
+ stub->func_value()->set_is_unnamed_type_stub_method();
15990
if (m->nointerface() && stub->is_function())
15991
stub->func_value()->set_nointerface();
15993
@@ -9289,7 +9434,9 @@
15996
bool is_unexported;
15997
- if (!Gogo::is_hidden_name(name))
15998
+ // The test for 'a' and 'z' is to handle builtin names,
15999
+ // which are not hidden.
16000
+ if (!Gogo::is_hidden_name(name) && (name[0] < 'a' || name[0] > 'z'))
16001
is_unexported = false;
16004
Index: gcc/go/gofrontend/expressions.cc
16005
===================================================================
16006
--- a/src/gcc/go/gofrontend/expressions.cc (.../tags/gcc_4_8_2_release)
16007
+++ b/src/gcc/go/gofrontend/expressions.cc (.../branches/gcc-4_8-branch)
16008
@@ -1219,7 +1219,7 @@
16010
// Get the tree for the code of a function expression.
16014
Func_expression::get_code_pointer(Gogo* gogo, Named_object* no, Location loc)
16016
Function_type* fntype;
16017
@@ -1237,25 +1237,18 @@
16019
"invalid use of special builtin function %qs; must be called",
16020
no->message_name().c_str());
16021
- return error_mark_node;
16022
+ return gogo->backend()->error_expression();
16025
- tree id = no->get_id(gogo);
16026
- if (id == error_mark_node)
16027
- return error_mark_node;
16030
+ Bfunction* fndecl;
16031
if (no->is_function())
16032
- fndecl = no->func_value()->get_or_make_decl(gogo, no, id);
16033
+ fndecl = no->func_value()->get_or_make_decl(gogo, no);
16034
else if (no->is_function_declaration())
16035
- fndecl = no->func_declaration_value()->get_or_make_decl(gogo, no, id);
16036
+ fndecl = no->func_declaration_value()->get_or_make_decl(gogo, no);
16040
- if (fndecl == error_mark_node)
16041
- return error_mark_node;
16043
- return build_fold_addr_expr_loc(loc.gcc_location(), fndecl);
16044
+ return gogo->backend()->function_code_expression(fndecl, loc);
16047
// Get the tree for a function expression. This is used when we take
16048
@@ -1492,8 +1485,10 @@
16050
Func_code_reference_expression::do_get_tree(Translate_context* context)
16052
- return Func_expression::get_code_pointer(context->gogo(), this->function_,
16053
- this->location());
16054
+ Bexpression* ret =
16055
+ Func_expression::get_code_pointer(context->gogo(), this->function_,
16056
+ this->location());
16057
+ return expr_to_tree(ret);
16060
// Make a reference to the code of a function.
16061
@@ -3055,8 +3050,7 @@
16062
do_lower(Gogo*, Named_object*, Statement_inserter*, int);
16065
- do_is_constant() const
16066
- { return this->expr_->is_constant(); }
16067
+ do_is_constant() const;
16070
do_numeric_constant_value(Numeric_constant*) const;
16071
@@ -3198,6 +3192,27 @@
16075
+// Return whether a type conversion is a constant.
16078
+Type_conversion_expression::do_is_constant() const
16080
+ if (!this->expr_->is_constant())
16083
+ // A conversion to a type that may not be used as a constant is not
16084
+ // a constant. For example, []byte(nil).
16085
+ Type* type = this->type_;
16086
+ if (type->integer_type() == NULL
16087
+ && type->float_type() == NULL
16088
+ && type->complex_type() == NULL
16089
+ && !type->is_boolean_type()
16090
+ && !type->is_string_type())
16096
// Return the constant numeric value if there is one.
16099
@@ -5586,6 +5601,15 @@
16100
subcontext.type = NULL;
16103
+ if (this->op_ == OPERATOR_ANDAND || this->op_ == OPERATOR_OROR)
16105
+ // For a logical operation, the context does not determine the
16106
+ // types of the operands. The operands must be some boolean
16107
+ // type but if the context has a boolean type they do not
16108
+ // inherit it. See http://golang.org/issue/3924.
16109
+ subcontext.type = NULL;
16112
// Set the context for the left hand operand.
16115
@@ -5967,6 +5991,43 @@
16119
+ // For complex division Go wants slightly different results than the
16120
+ // GCC library provides, so we have our own runtime routine.
16121
+ if (this->op_ == OPERATOR_DIV && this->left_->type()->complex_type() != NULL)
16123
+ const char *name;
16126
+ static tree complex64_div_decl;
16127
+ static tree complex128_div_decl;
16128
+ switch (this->left_->type()->complex_type()->bits())
16131
+ name = "__go_complex64_div";
16132
+ pdecl = &complex64_div_decl;
16133
+ ctype = Type::lookup_complex_type("complex64");
16136
+ name = "__go_complex128_div";
16137
+ pdecl = &complex128_div_decl;
16138
+ ctype = Type::lookup_complex_type("complex128");
16141
+ go_unreachable();
16143
+ Btype* cbtype = ctype->get_backend(gogo);
16144
+ tree ctype_tree = type_to_tree(cbtype);
16145
+ return Gogo::call_builtin(pdecl,
16146
+ this->location(),
16151
+ fold_convert_loc(gccloc, ctype_tree, left),
16153
+ fold_convert_loc(gccloc, ctype_tree, right));
16156
tree compute_type = excess_precision_type(type);
16157
if (compute_type != NULL_TREE)
16159
@@ -7191,6 +7252,15 @@
16160
if (this->code_ == BUILTIN_OFFSETOF)
16162
Expression* arg = this->one_arg();
16164
+ if (arg->bound_method_expression() != NULL
16165
+ || arg->interface_field_reference_expression() != NULL)
16167
+ this->report_error(_("invalid use of method value as argument "
16172
Field_reference_expression* farg = arg->field_reference_expression();
16173
while (farg != NULL)
16175
@@ -7200,7 +7270,8 @@
16176
// it must not be reached through pointer indirections.
16177
if (farg->expr()->deref() != farg->expr())
16179
- this->report_error(_("argument of Offsetof implies indirection of an embedded field"));
16180
+ this->report_error(_("argument of Offsetof implies "
16181
+ "indirection of an embedded field"));
16184
// Go up until we reach the original base.
16185
@@ -7476,7 +7547,7 @@
16186
switch (nc.to_unsigned_long(&v))
16188
case Numeric_constant::NC_UL_VALID:
16191
case Numeric_constant::NC_UL_NOTINT:
16192
error_at(e->location(), "non-integer %s argument to make",
16193
is_length ? "len" : "cap");
16194
@@ -7488,8 +7559,23 @@
16195
case Numeric_constant::NC_UL_BIG:
16196
// We don't want to give a compile-time error for a 64-bit
16197
// value on a 32-bit target.
16203
+ if (!nc.to_int(&val))
16204
+ go_unreachable();
16205
+ int bits = mpz_sizeinbase(val, 2);
16207
+ Type* int_type = Type::lookup_integer_type("int");
16208
+ if (bits >= int_type->integer_type()->bits())
16210
+ error_at(e->location(), "%s argument too large for make",
16211
+ is_length ? "len" : "cap");
16218
if (e->type()->integer_type() != NULL)
16219
@@ -7595,6 +7681,8 @@
16221
Builtin_call_expression::do_is_constant() const
16223
+ if (this->is_error_expression())
16225
switch (this->code_)
16228
@@ -9744,15 +9832,9 @@
16231
tree fntype_tree = type_to_tree(fntype->get_backend(gogo));
16232
- if (fntype_tree == error_mark_node)
16233
+ tree fnfield_type = type_to_tree(fntype->get_backend_fntype(gogo));
16234
+ if (fntype_tree == error_mark_node || fnfield_type == error_mark_node)
16235
return error_mark_node;
16236
- go_assert(POINTER_TYPE_P(fntype_tree));
16237
- if (TREE_TYPE(fntype_tree) == error_mark_node)
16238
- return error_mark_node;
16239
- go_assert(TREE_CODE(TREE_TYPE(fntype_tree)) == RECORD_TYPE);
16240
- tree fnfield_type = TREE_TYPE(TYPE_FIELDS(TREE_TYPE(fntype_tree)));
16241
- if (fnfield_type == error_mark_node)
16242
- return error_mark_node;
16243
go_assert(FUNCTION_POINTER_TYPE_P(fnfield_type));
16244
tree rettype = TREE_TYPE(TREE_TYPE(fnfield_type));
16245
if (rettype == error_mark_node)
16246
@@ -9763,7 +9845,7 @@
16249
Named_object* no = func->named_object();
16250
- fn = Func_expression::get_code_pointer(gogo, no, location);
16251
+ fn = expr_to_tree(Func_expression::get_code_pointer(gogo, no, location));
16253
closure_tree = NULL_TREE;
16255
@@ -10817,11 +10899,20 @@
16257
String_index_expression::do_check_types(Gogo*)
16259
- if (this->start_->type()->integer_type() == NULL)
16260
+ Numeric_constant nc;
16262
+ if (this->start_->type()->integer_type() == NULL
16263
+ && !this->start_->type()->is_error()
16264
+ && (!this->start_->numeric_constant_value(&nc)
16265
+ || nc.to_unsigned_long(&v) == Numeric_constant::NC_UL_NOTINT))
16266
this->report_error(_("index must be integer"));
16267
if (this->end_ != NULL
16268
&& this->end_->type()->integer_type() == NULL
16269
- && !this->end_->is_nil_expression())
16270
+ && !this->end_->type()->is_error()
16271
+ && !this->end_->is_nil_expression()
16272
+ && !this->end_->is_error_expression()
16273
+ && (!this->end_->numeric_constant_value(&nc)
16274
+ || nc.to_unsigned_long(&v) == Numeric_constant::NC_UL_NOTINT))
16275
this->report_error(_("slice end must be integer"));
16279
===================================================================
16280
--- a/src/gcc/recog.c (.../tags/gcc_4_8_2_release)
16281
+++ b/src/gcc/recog.c (.../branches/gcc-4_8-branch)
16282
@@ -3061,6 +3061,9 @@
16286
+/* Regno offset to be used in the register search. */
16287
+static int search_ofs;
16289
/* Try to find a hard register of mode MODE, matching the register class in
16290
CLASS_STR, which is available at the beginning of insn CURRENT_INSN and
16291
remains available until the end of LAST_INSN. LAST_INSN may be NULL_RTX,
16292
@@ -3076,7 +3079,6 @@
16293
peep2_find_free_register (int from, int to, const char *class_str,
16294
enum machine_mode mode, HARD_REG_SET *reg_set)
16296
- static int search_ofs;
16300
@@ -3541,6 +3543,7 @@
16301
/* Initialize the regsets we're going to use. */
16302
for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
16303
peep2_insn_data[i].live_before = BITMAP_ALLOC (®_obstack);
16305
live = BITMAP_ALLOC (®_obstack);
16307
FOR_EACH_BB_REVERSE (bb)
16308
Index: gcc/ada/indepsw-darwin.adb
16309
===================================================================
16310
--- a/src/gcc/ada/indepsw-darwin.adb (.../tags/gcc_4_8_2_release)
16311
+++ b/src/gcc/ada/indepsw-darwin.adb (.../branches/gcc-4_8-branch)
16313
+------------------------------------------------------------------------------
16315
+-- GNAT COMPILER COMPONENTS --
16317
+-- I N D E P S W --
16320
+-- (Darwin version) --
16322
+-- Copyright (C) 2013, Free Software Foundation, Inc. --
16324
+-- GNAT is free software; you can redistribute it and/or modify it under --
16325
+-- terms of the GNU General Public License as published by the Free Soft- --
16326
+-- ware Foundation; either version 3, or (at your option) any later ver- --
16327
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
16328
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16329
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
16331
+-- As a special exception under Section 7 of GPL version 3, you are granted --
16332
+-- additional permissions described in the GCC Runtime Library Exception, --
16333
+-- version 3.1, as published by the Free Software Foundation. --
16335
+-- You should have received a copy of the GNU General Public License and --
16336
+-- a copy of the GCC Runtime Library Exception along with this program; --
16337
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
16338
+-- <http://www.gnu.org/licenses/>. --
16340
+-- GNAT was originally developed by the GNAT team at New York University. --
16341
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
16343
+------------------------------------------------------------------------------
16345
+-- This is the Darwin version
16347
+package body Indepsw is
16349
+ Map_Switch : aliased constant String := "-Wl,-map,";
16355
+ procedure Convert
16356
+ (Switch : Switch_Kind;
16357
+ Argument : String;
16358
+ To : out String_List_Access)
16363
+ To := new Argument_List'(1 => new String'(Map_Switch & Argument));
16367
+ ------------------
16368
+ -- Is_Supported --
16369
+ ------------------
16371
+ function Is_Supported (Switch : Switch_Kind) return Boolean is
16377
+ end Is_Supported;
16380
Index: gcc/ada/ChangeLog
16381
===================================================================
16382
--- a/src/gcc/ada/ChangeLog (.../tags/gcc_4_8_2_release)
16383
+++ b/src/gcc/ada/ChangeLog (.../branches/gcc-4_8-branch)
16385
+2014-01-12 Eric Botcazou <ebotcazou@adacore.com>
16388
+ * gcc-interface/cuintp.c (build_cst_from_int): Use 32-bit integer type
16389
+ as intermediate type.
16390
+ (UI_To_gnu): Likewise.
16392
+2013-12-12 Eric Botcazou <ebotcazou@adacore.com>
16393
+ Iain Sandoe <iain@codesourcery.com>
16396
+ * gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake.
16397
+ * gcc-interface/Makefile.in (GCC_LINK): Add LDFLAGS.
16398
+ (../../gnatmake): Remove LDFLAGS.
16399
+ (../../gnatlink): Likewise.
16401
+2013-12-04 Eric Botcazou <ebotcazou@adacore.com>
16404
+ * indepsw-darwin.adb: New file.
16406
+2013-10-19 Eric Botcazou <ebotcazou@adacore.com>
16408
+ * gcc-interface/utils.c (scale_by_factor_of): New function.
16409
+ (rest_of_record_type_compilation): Use scale_by_factor_of in order to
16410
+ scale the original offset for both rounding cases; in the second case,
16411
+ take into accout the addend to compute the alignment. Tidy up.
16413
+2013-10-19 Eric Botcazou <ebotcazou@adacore.com>
16415
+ * gcc-interface/utils.c (gnat_set_type_context): New function.
16416
+ (gnat_pushdecl): Use it to set the context of the type.
16418
2013-10-16 Release Manager
16420
* GCC 4.8.2 released.
16421
Index: gcc/ada/gcc-interface/utils.c
16422
===================================================================
16423
--- a/src/gcc/ada/gcc-interface/utils.c (.../tags/gcc_4_8_2_release)
16424
+++ b/src/gcc/ada/gcc-interface/utils.c (.../branches/gcc-4_8-branch)
16425
@@ -232,6 +232,7 @@
16426
static tree split_plus (tree, tree *);
16427
static tree float_type_for_precision (int, enum machine_mode);
16428
static tree convert_to_fat_pointer (tree, tree);
16429
+static unsigned int scale_by_factor_of (tree, unsigned int);
16430
static bool potential_alignment_gap (tree, tree, tree);
16431
static void process_attributes (tree, struct attrib *);
16433
@@ -532,6 +533,22 @@
16434
free_binding_level = level;
16437
+/* Set the context of TYPE and its parallel types (if any) to CONTEXT. */
16440
+gnat_set_type_context (tree type, tree context)
16442
+ tree decl = TYPE_STUB_DECL (type);
16444
+ TYPE_CONTEXT (type) = context;
16446
+ while (decl && DECL_PARALLEL_TYPE (decl))
16448
+ TYPE_CONTEXT (DECL_PARALLEL_TYPE (decl)) = context;
16449
+ decl = TYPE_STUB_DECL (DECL_PARALLEL_TYPE (decl));
16453
/* Record DECL as belonging to the current lexical scope and use GNAT_NODE
16454
for location information and flag propagation. */
16456
@@ -613,7 +630,7 @@
16457
if (TREE_CODE (t) == POINTER_TYPE)
16458
TYPE_NEXT_PTR_TO (t) = tt;
16459
TYPE_NAME (tt) = DECL_NAME (decl);
16460
- TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
16461
+ gnat_set_type_context (tt, DECL_CONTEXT (decl));
16462
TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t);
16463
DECL_ORIGINAL_TYPE (decl) = tt;
16465
@@ -623,7 +640,7 @@
16466
/* We need a variant for the placeholder machinery to work. */
16467
tree tt = build_variant_type_copy (t);
16468
TYPE_NAME (tt) = decl;
16469
- TYPE_CONTEXT (tt) = DECL_CONTEXT (decl);
16470
+ gnat_set_type_context (tt, DECL_CONTEXT (decl));
16471
TREE_USED (tt) = TREE_USED (t);
16472
TREE_TYPE (decl) = tt;
16473
if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
16474
@@ -645,7 +662,7 @@
16475
if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
16477
TYPE_NAME (t) = decl;
16478
- TYPE_CONTEXT (t) = DECL_CONTEXT (decl);
16479
+ gnat_set_type_context (t, DECL_CONTEXT (decl));
16483
@@ -1692,93 +1709,74 @@
16484
TYPE_SIZE_UNIT (new_record_type)
16485
= size_int (TYPE_ALIGN (record_type) / BITS_PER_UNIT);
16487
- /* Now scan all the fields, replacing each field with a new
16488
- field corresponding to the new encoding. */
16489
+ /* Now scan all the fields, replacing each field with a new field
16490
+ corresponding to the new encoding. */
16491
for (old_field = TYPE_FIELDS (record_type); old_field;
16492
old_field = DECL_CHAIN (old_field))
16494
tree field_type = TREE_TYPE (old_field);
16495
tree field_name = DECL_NAME (old_field);
16497
tree curpos = bit_position (old_field);
16498
+ tree pos, new_field;
16500
unsigned int align = 0;
16503
+ /* We're going to do some pattern matching below so remove as many
16504
+ conversions as possible. */
16505
+ curpos = remove_conversions (curpos, true);
16507
/* See how the position was modified from the last position.
16509
- There are two basic cases we support: a value was added
16510
- to the last position or the last position was rounded to
16511
- a boundary and they something was added. Check for the
16512
- first case first. If not, see if there is any evidence
16513
- of rounding. If so, round the last position and try
16515
+ There are two basic cases we support: a value was added
16516
+ to the last position or the last position was rounded to
16517
+ a boundary and they something was added. Check for the
16518
+ first case first. If not, see if there is any evidence
16519
+ of rounding. If so, round the last position and retry.
16521
- If this is a union, the position can be taken as zero. */
16523
- /* Some computations depend on the shape of the position expression,
16524
- so strip conversions to make sure it's exposed. */
16525
- curpos = remove_conversions (curpos, true);
16527
+ If this is a union, the position can be taken as zero. */
16528
if (TREE_CODE (new_record_type) == UNION_TYPE)
16529
- pos = bitsize_zero_node, align = 0;
16530
+ pos = bitsize_zero_node;
16532
pos = compute_related_constant (curpos, last_pos);
16534
- if (!pos && TREE_CODE (curpos) == MULT_EXPR
16536
+ && TREE_CODE (curpos) == MULT_EXPR
16537
&& host_integerp (TREE_OPERAND (curpos, 1), 1))
16539
tree offset = TREE_OPERAND (curpos, 0);
16540
align = tree_low_cst (TREE_OPERAND (curpos, 1), 1);
16542
- /* An offset which is a bitwise AND with a mask increases the
16543
- alignment according to the number of trailing zeros. */
16544
- offset = remove_conversions (offset, true);
16545
- if (TREE_CODE (offset) == BIT_AND_EXPR
16546
- && TREE_CODE (TREE_OPERAND (offset, 1)) == INTEGER_CST)
16548
- unsigned HOST_WIDE_INT mask
16549
- = TREE_INT_CST_LOW (TREE_OPERAND (offset, 1));
16552
- for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++)
16561
- pos = compute_related_constant (curpos,
16562
- round_up (last_pos, align));
16563
+ align = scale_by_factor_of (offset, align);
16564
+ last_pos = round_up (last_pos, align);
16565
+ pos = compute_related_constant (curpos, last_pos);
16567
- else if (!pos && TREE_CODE (curpos) == PLUS_EXPR
16568
- && TREE_CODE (TREE_OPERAND (curpos, 1)) == INTEGER_CST
16570
+ && TREE_CODE (curpos) == PLUS_EXPR
16571
+ && host_integerp (TREE_OPERAND (curpos, 1), 1)
16572
&& TREE_CODE (TREE_OPERAND (curpos, 0)) == MULT_EXPR
16573
- && host_integerp (TREE_OPERAND
16574
- (TREE_OPERAND (curpos, 0), 1),
16577
+ (TREE_OPERAND (TREE_OPERAND (curpos, 0), 1), 1))
16579
+ tree offset = TREE_OPERAND (TREE_OPERAND (curpos, 0), 0);
16580
+ unsigned HOST_WIDE_INT addend
16581
+ = tree_low_cst (TREE_OPERAND (curpos, 1), 1);
16584
- (TREE_OPERAND (TREE_OPERAND (curpos, 0), 1), 1);
16585
- pos = compute_related_constant (curpos,
16586
- round_up (last_pos, align));
16587
+ = tree_low_cst (TREE_OPERAND (TREE_OPERAND (curpos, 0), 1), 1);
16588
+ align = scale_by_factor_of (offset, align);
16589
+ align = MIN (align, addend & -addend);
16590
+ last_pos = round_up (last_pos, align);
16591
+ pos = compute_related_constant (curpos, last_pos);
16593
- else if (potential_alignment_gap (prev_old_field, old_field,
16595
+ else if (potential_alignment_gap (prev_old_field, old_field, pos))
16597
align = TYPE_ALIGN (field_type);
16598
- pos = compute_related_constant (curpos,
16599
- round_up (last_pos, align));
16600
+ last_pos = round_up (last_pos, align);
16601
+ pos = compute_related_constant (curpos, last_pos);
16604
/* If we can't compute a position, set it to zero.
16606
- ??? We really should abort here, but it's too much work
16607
- to get this correct for all cases. */
16609
+ ??? We really should abort here, but it's too much work
16610
+ to get this correct for all cases. */
16612
pos = bitsize_zero_node;
16614
@@ -2553,6 +2551,32 @@
16618
+/* Return VALUE scaled by the biggest power-of-2 factor of EXPR. */
16620
+static unsigned int
16621
+scale_by_factor_of (tree expr, unsigned int value)
16623
+ expr = remove_conversions (expr, true);
16625
+ /* An expression which is a bitwise AND with a mask has a power-of-2 factor
16626
+ corresponding to the number of trailing zeros of the mask. */
16627
+ if (TREE_CODE (expr) == BIT_AND_EXPR
16628
+ && TREE_CODE (TREE_OPERAND (expr, 1)) == INTEGER_CST)
16630
+ unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (TREE_OPERAND (expr, 1));
16631
+ unsigned int i = 0;
16633
+ while ((mask & 1) == 0 && i < HOST_BITS_PER_WIDE_INT)
16644
/* Given two consecutive field decls PREV_FIELD and CURR_FIELD, return true
16645
unless we can prove these 2 fields are laid out in such a way that no gap
16646
exist between the end of PREV_FIELD and the beginning of CURR_FIELD. OFFSET
16647
Index: gcc/ada/gcc-interface/Makefile.in
16648
===================================================================
16649
--- a/src/gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_4_8_2_release)
16650
+++ b/src/gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-4_8-branch)
16651
@@ -2397,7 +2397,7 @@
16652
"GNATLINK=$(GNATLINK)" \
16653
"GNATBIND=$(GNATBIND)"
16655
-GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES)
16656
+GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)
16658
# Build directory for the tools. Let's copy the target-dependent
16659
# sources using the same mechanism as for gnatlib. The other sources are
16660
@@ -2519,12 +2519,10 @@
16662
# Likewise for the tools
16663
../../gnatmake$(exeext): $(P) b_gnatm.o link.o targext.o $(GNATMAKE_OBJS)
16664
- $(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) \
16666
+ +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
16668
../../gnatlink$(exeext): $(P) b_gnatl.o link.o targext.o $(GNATLINK_OBJS)
16669
- $(GCC_LINK) $(ALL_CFLAGS) $(LDFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) \
16671
+ +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
16673
../stamp-gnatlib-$(RTSDIR):
16674
@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
16675
Index: gcc/ada/gcc-interface/cuintp.c
16676
===================================================================
16677
--- a/src/gcc/ada/gcc-interface/cuintp.c (.../tags/gcc_4_8_2_release)
16678
+++ b/src/gcc/ada/gcc-interface/cuintp.c (.../branches/gcc-4_8-branch)
16681
* C Implementation File *
16683
- * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
16684
+ * Copyright (C) 1992-2014, Free Software Foundation, Inc. *
16686
* GNAT is free software; you can redistribute it and/or modify it under *
16687
* terms of the GNU General Public License as published by the Free Soft- *
16690
build_cst_from_int (tree type, HOST_WIDE_INT low)
16692
- if (TREE_CODE (type) == REAL_TYPE)
16693
- return convert (type, build_int_cst (NULL_TREE, low));
16694
+ if (SCALAR_FLOAT_TYPE_P (type))
16695
+ return convert (type, build_int_cst (gnat_type_for_size (32, 0), low));
16697
return build_int_cst_type (type, low);
16699
@@ -99,20 +99,13 @@
16700
gcc_assert (Length > 0);
16702
/* The computations we perform below always require a type at least as
16703
- large as an integer not to overflow. REAL types are always fine, but
16704
+ large as an integer not to overflow. FP types are always fine, but
16705
INTEGER or ENUMERAL types we are handed may be too short. We use a
16706
base integer type node for the computations in this case and will
16707
- convert the final result back to the incoming type later on.
16708
- The base integer precision must be superior than 16. */
16709
+ convert the final result back to the incoming type later on. */
16710
+ if (!SCALAR_FLOAT_TYPE_P (comp_type) && TYPE_PRECISION (comp_type) < 32)
16711
+ comp_type = gnat_type_for_size (32, 0);
16713
- if (TREE_CODE (comp_type) != REAL_TYPE
16714
- && TYPE_PRECISION (comp_type)
16715
- < TYPE_PRECISION (long_integer_type_node))
16717
- comp_type = long_integer_type_node;
16718
- gcc_assert (TYPE_PRECISION (comp_type) > 16);
16721
gnu_base = build_cst_from_int (comp_type, Base);
16723
gnu_ret = build_cst_from_int (comp_type, First);
16724
Index: gcc/ada/gcc-interface/Make-lang.in
16725
===================================================================
16726
--- a/src/gcc/ada/gcc-interface/Make-lang.in (.../tags/gcc_4_8_2_release)
16727
+++ b/src/gcc/ada/gcc-interface/Make-lang.in (.../branches/gcc-4_8-branch)
16728
@@ -625,7 +625,7 @@
16729
ada/doctools/xgnatugn$(build_exeext): ada/xgnatugn.adb
16730
-$(MKDIR) ada/doctools
16731
$(CP) $^ ada/doctools
16732
- cd ada/doctools && $(GNATMAKE) -q xgnatugn
16733
+ cd ada/doctools && gnatmake -q xgnatugn
16735
# Note that doc/gnat_ugn.texi and doc/projects.texi do not depend on
16736
# xgnatugn being built so we can distribute a pregenerated doc/gnat_ugn.info
16737
Index: gcc/fortran/interface.c
16738
===================================================================
16739
--- a/src/gcc/fortran/interface.c (.../tags/gcc_4_8_2_release)
16740
+++ b/src/gcc/fortran/interface.c (.../branches/gcc-4_8-branch)
16741
@@ -1245,7 +1245,8 @@
16745
- if (r1->ts.u.cl->length)
16746
+ if (s1->ts.u.cl && s1->ts.u.cl->length
16747
+ && s2->ts.u.cl && s2->ts.u.cl->length)
16749
int compval = gfc_dep_compare_expr (r1->ts.u.cl->length,
16750
r2->ts.u.cl->length);
16751
@@ -1367,8 +1368,8 @@
16752
if (s1->attr.function && s2->attr.function)
16754
/* If both are functions, check result characteristics. */
16755
- if (check_result_characteristics (s1, s2, errmsg, err_len)
16757
+ if (check_result_characteristics (s1, s2, errmsg, err_len) == FAILURE
16758
+ || check_result_characteristics (s2, s1, errmsg, err_len) == FAILURE)
16762
Index: gcc/fortran/trans-expr.c
16763
===================================================================
16764
--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_4_8_2_release)
16765
+++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-4_8-branch)
16766
@@ -670,7 +670,6 @@
16767
gfc_add_modify (&parmse->post, vptr,
16768
fold_convert (TREE_TYPE (vptr), ctree));
16770
- gcc_assert (!optional || (optional && !copyback));
16774
Index: gcc/fortran/class.c
16775
===================================================================
16776
--- a/src/gcc/fortran/class.c (.../tags/gcc_4_8_2_release)
16777
+++ b/src/gcc/fortran/class.c (.../branches/gcc-4_8-branch)
16778
@@ -2486,7 +2486,7 @@
16781
/* Sometimes the typespec is passed from a single call. */
16782
- if (ts->type == BT_DERIVED)
16783
+ if (ts->type == BT_DERIVED || ts->type == BT_CLASS)
16784
return gfc_find_derived_vtab (ts->u.derived);
16786
/* Find the top-level namespace. */
16787
Index: gcc/fortran/decl.c
16788
===================================================================
16789
--- a/src/gcc/fortran/decl.c (.../tags/gcc_4_8_2_release)
16790
+++ b/src/gcc/fortran/decl.c (.../branches/gcc-4_8-branch)
16791
@@ -7384,6 +7384,7 @@
16794
/* Check a derived type that is being extended. */
16797
check_extended_derived_type (char *name)
16799
@@ -7395,14 +7396,15 @@
16803
+ extended = gfc_find_dt_in_generic (extended);
16808
- gfc_error ("No such symbol in TYPE definition at %C");
16809
+ gfc_error ("Symbol '%s' at %C has not been previously defined", name);
16813
- extended = gfc_find_dt_in_generic (extended);
16815
if (extended->attr.flavor != FL_DERIVED)
16817
gfc_error ("'%s' in EXTENDS expression at %C is not a "
16818
Index: gcc/fortran/dump-parse-tree.c
16819
===================================================================
16820
--- a/src/gcc/fortran/dump-parse-tree.c (.../tags/gcc_4_8_2_release)
16821
+++ b/src/gcc/fortran/dump-parse-tree.c (.../branches/gcc-4_8-branch)
16822
@@ -110,7 +110,8 @@
16826
- show_expr (ts->u.cl->length);
16828
+ show_expr (ts->u.cl->length);
16829
fprintf(dumpfile, " %d", ts->kind);
16832
Index: gcc/fortran/ChangeLog
16833
===================================================================
16834
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_2_release)
16835
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch)
16837
+2014-01-11 Janus Weil <janus@gcc.gnu.org>
16839
+ Backport from mainline
16840
+ 2013-12-29 Janus Weil <janus@gcc.gnu.org>
16844
+ * dump-parse-tree.c (show_typespec): Check for charlen.
16845
+ * invoke.texi: Fix documentation of -fdump-fortran-optimized and
16846
+ -fdump-parse-tree.
16848
+2014-01-04 Janus Weil <janus@gcc.gnu.org>
16850
+ Backport from mainline
16851
+ 2014-01-02 Janus Weil <janus@gcc.gnu.org>
16854
+ * resolve.c (resolve_typebound_procedures): No need to create the vtab
16857
+2013-12-31 Janus Weil <janus@gcc.gnu.org>
16859
+ Backport from mainline
16860
+ 2013-12-30 Janus Weil <janus@gcc.gnu.org>
16863
+ * resolve.c (resolve_symbol): Check that symbol is not only flavorless
16864
+ but also untyped.
16866
+2013-12-18 Janus Weil <janus@gcc.gnu.org>
16868
+ Backport from mainline
16869
+ 2013-12-15 Janus Weil <janus@gcc.gnu.org>
16872
+ * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS.
16874
+2013-11-30 Paul Thomas <pault@gcc.gnu.org>
16876
+ Backport from mainline
16877
+ 2013-11-04 Paul Thomas <pault@gcc.gnu.org>
16880
+ * trans-expr.c (gfc_conv_class_to_class): Remove spurious
16883
+2013-11-17 Janus Weil <janus@gcc.gnu.org>
16885
+ Backport from mainline
16886
+ 2013-11-07 Janus Weil <janus@gcc.gnu.org>
16889
+ * primary.c (gfc_expr_attr): Check for result symbol.
16891
+2013-11-16 Janus Weil <janus@gcc.gnu.org>
16893
+ Backport from mainline
16894
+ 2013-09-20 Janus Weil <janus@gcc.gnu.org>
16897
+ * expr.c (gfc_check_pointer_assign): Remove second call to
16898
+ 'gfc_compare_interfaces' with swapped arguments.
16899
+ * interface.c (gfc_compare_interfaces): Symmetrize the call to
16900
+ 'check_result_characteristics' by calling it with swapped arguments.
16902
+2013-11-16 Paul Thomas <pault@gcc.gnu.org>
16905
+ * trans-io.c (transfer_expr): If the backend_decl for a derived
16906
+ type is missing, build it with gfc_typenode_for_spec.
16908
+2013-11-05 Steven G. Kargl <kargl@gcc.gnu.org>
16911
+ * check.c (gfc_check_reshape): ensure that shape is a constant
16914
+2013-11-02 Janus Weil <janus@gcc.gnu.org>
16916
+ Backport from mainline
16917
+ 2013-09-23 Janus Weil <janus@gcc.gnu.org>
16920
+ * decl.c (check_extended_derived_type): Prevent segfault, modify error
16923
2013-10-16 Release Manager
16925
* GCC 4.8.2 released.
16926
Index: gcc/fortran/expr.c
16927
===================================================================
16928
--- a/src/gcc/fortran/expr.c (.../tags/gcc_4_8_2_release)
16929
+++ b/src/gcc/fortran/expr.c (.../branches/gcc-4_8-branch)
16930
@@ -3555,14 +3555,6 @@
16934
- if (!gfc_compare_interfaces (s2, s1, name, 0, 1,
16935
- err, sizeof(err), NULL, NULL))
16937
- gfc_error ("Interface mismatch in procedure pointer assignment "
16938
- "at %L: %s", &rvalue->where, err);
16945
Index: gcc/fortran/resolve.c
16946
===================================================================
16947
--- a/src/gcc/fortran/resolve.c (.../tags/gcc_4_8_2_release)
16948
+++ b/src/gcc/fortran/resolve.c (.../branches/gcc-4_8-branch)
16949
@@ -12425,9 +12425,6 @@
16950
resolve_bindings_derived = derived;
16951
resolve_bindings_result = SUCCESS;
16953
- /* Make sure the vtab has been generated. */
16954
- gfc_find_derived_vtab (derived);
16956
if (derived->f2k_derived->tb_sym_root)
16957
gfc_traverse_symtree (derived->f2k_derived->tb_sym_root,
16958
&resolve_typebound_procedure);
16959
@@ -13256,7 +13253,8 @@
16960
if (sym->attr.flavor == FL_UNKNOWN
16961
|| (sym->attr.flavor == FL_PROCEDURE && !sym->attr.intrinsic
16962
&& !sym->attr.generic && !sym->attr.external
16963
- && sym->attr.if_source == IFSRC_UNKNOWN))
16964
+ && sym->attr.if_source == IFSRC_UNKNOWN
16965
+ && sym->ts.type == BT_UNKNOWN))
16968
/* If we find that a flavorless symbol is an interface in one of the
16969
Index: gcc/fortran/trans-io.c
16970
===================================================================
16971
--- a/src/gcc/fortran/trans-io.c (.../tags/gcc_4_8_2_release)
16972
+++ b/src/gcc/fortran/trans-io.c (.../branches/gcc-4_8-branch)
16973
@@ -243,16 +243,16 @@
16975
/* The code to generate the error. */
16976
gfc_start_block (&block);
16979
arg1 = gfc_build_addr_expr (NULL_TREE, var);
16982
arg2 = build_int_cst (integer_type_node, error_code),
16985
asprintf (&message, "%s", _(msgid));
16986
arg3 = gfc_build_addr_expr (pchar_type_node,
16987
gfc_build_localized_cstring_const (message));
16991
tmp = build_call_expr_loc (input_location,
16992
gfor_fndecl_generate_error, 3, arg1, arg2, arg3);
16994
@@ -521,7 +521,7 @@
16995
gfc_trans_io_runtime_check (cond, var, LIBERROR_BAD_UNIT,
16996
"Unit number in I/O statement too small",
17000
/* UNIT numbers should be less than the max. */
17001
val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4);
17002
cond = fold_build2_loc (input_location, GT_EXPR, boolean_type_node,
17003
@@ -1000,7 +1000,7 @@
17005
mask |= set_string (&block, &post_block, var, IOPARM_open_convert,
17010
mask |= set_parameter_ref (&block, &post_block, var, IOPARM_open_newunit,
17012
@@ -1234,7 +1234,7 @@
17014
mask |= set_parameter_ref (&block, &post_block, var, IOPARM_inquire_exist,
17018
if (p->unit && !p->iostat)
17020
p->iostat = create_dummy_iostat ();
17021
@@ -1322,7 +1322,7 @@
17023
mask |= set_string (&block, &post_block, var, IOPARM_inquire_pad,
17028
mask |= set_string (&block, &post_block, var, IOPARM_inquire_convert,
17030
@@ -1547,7 +1547,7 @@
17033
tree decl = NULL_TREE;
17039
@@ -2032,7 +2032,7 @@
17040
if (gfc_notification_std (GFC_STD_GNU) != SILENT)
17042
gfc_error_now ("Derived type '%s' at %L has PRIVATE components",
17043
- ts->u.derived->name, code != NULL ? &(code->loc) :
17044
+ ts->u.derived->name, code != NULL ? &(code->loc) :
17045
&gfc_current_locus);
17048
@@ -2041,7 +2041,7 @@
17049
ts->kind = ts->u.derived->ts.kind;
17050
ts->f90_type = ts->u.derived->ts.f90_type;
17057
@@ -2123,7 +2123,7 @@
17058
function = iocall[IOCALL_X_CHARACTER_WIDE];
17060
function = iocall[IOCALL_X_CHARACTER_WIDE_WRITE];
17063
tmp = gfc_build_addr_expr (NULL_TREE, dt_parm);
17064
tmp = build_call_expr_loc (input_location,
17065
function, 4, tmp, addr_expr, arg2, arg3);
17066
@@ -2158,6 +2158,12 @@
17067
expr = build_fold_indirect_ref_loc (input_location,
17070
+ /* Make sure that the derived type has been built. An external
17071
+ function, if only referenced in an io statement requires this
17072
+ check (see PR58771). */
17073
+ if (ts->u.derived->backend_decl == NULL_TREE)
17074
+ tmp = gfc_typenode_for_spec (ts);
17076
for (c = ts->u.derived->components; c; c = c->next)
17078
field = c->backend_decl;
17079
Index: gcc/fortran/check.c
17080
===================================================================
17081
--- a/src/gcc/fortran/check.c (.../tags/gcc_4_8_2_release)
17082
+++ b/src/gcc/fortran/check.c (.../branches/gcc-4_8-branch)
17083
@@ -3208,7 +3208,7 @@
17084
"than %d elements", &shape->where, GFC_MAX_DIMENSIONS);
17087
- else if (shape->expr_type == EXPR_ARRAY)
17088
+ else if (shape->expr_type == EXPR_ARRAY && gfc_is_constant_expr (shape))
17092
Index: gcc/fortran/primary.c
17093
===================================================================
17094
--- a/src/gcc/fortran/primary.c (.../tags/gcc_4_8_2_release)
17095
+++ b/src/gcc/fortran/primary.c (.../branches/gcc-4_8-branch)
17096
@@ -2252,7 +2252,7 @@
17097
case EXPR_FUNCTION:
17098
gfc_clear_attr (&attr);
17100
- if (e->value.function.esym != NULL)
17101
+ if (e->value.function.esym && e->value.function.esym->result)
17103
gfc_symbol *sym = e->value.function.esym->result;
17105
Index: gcc/configure.ac
17106
===================================================================
17107
--- a/src/gcc/configure.ac (.../tags/gcc_4_8_2_release)
17108
+++ b/src/gcc/configure.ac (.../branches/gcc-4_8-branch)
17109
@@ -1516,13 +1516,11 @@
17110
/* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
17111
*) realsrcdir=../${srcdir};;
17113
- saved_CFLAGS="${CFLAGS}"
17114
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
17115
- LDFLAGS="${LDFLAGS_FOR_BUILD}" \
17116
+ LDFLAGS="${LDFLAGS_FOR_BUILD}" GMPINC="" \
17117
${realsrcdir}/configure \
17118
--enable-languages=${enable_languages-all} \
17119
--target=$target_alias --host=$build_alias --build=$build_alias
17120
- CFLAGS="${saved_CFLAGS}"
17122
# We just finished tests for the build machine, so rename
17123
# the file auto-build.h in the gcc directory.
17124
@@ -1887,6 +1885,7 @@
17125
if test x$build != x$host || test "x$coverage_flags" != x
17127
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
17128
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
17129
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
17132
@@ -3611,6 +3610,19 @@
17133
kasumi_fi_xor %f46, %f48, %f50, %f52],,
17134
[AC_DEFINE(HAVE_AS_SPARC4, 1,
17135
[Define if your assembler supports SPARC4 instructions.])])
17137
+ gcc_GAS_CHECK_FEATURE([LEON instructions],
17138
+ gcc_cv_as_sparc_leon,,
17141
+ .register %g2, #scratch
17142
+ .register %g3, #scratch
17144
+ smac %g2, %g3, %g1
17145
+ umac %g2, %g3, %g1
17146
+ cas [[%g2]], %g3, %g1],,
17147
+ [AC_DEFINE(HAVE_AS_LEON, 1,
17148
+ [Define if your assembler supports LEON instructions.])])
17152
@@ -5193,15 +5205,15 @@
17153
AC_MSG_CHECKING([for exported symbols])
17154
if test "x$export_sym_check" != x; then
17155
echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
17156
- ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
17157
- if $export_sym_check conftest | grep foobar > /dev/null; then
17158
+ ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
17159
+ if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
17160
: # No need to use a flag
17161
AC_MSG_RESULT([yes])
17163
AC_MSG_RESULT([yes])
17164
AC_MSG_CHECKING([for -rdynamic])
17165
- ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
17166
- if $export_sym_check conftest | grep foobar > /dev/null; then
17167
+ ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
17168
+ if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
17169
plugin_rdynamic=yes
17170
pluginlibs="-rdynamic"
17172
Index: gcc/print-rtl.c
17173
===================================================================
17174
--- a/src/gcc/print-rtl.c (.../tags/gcc_4_8_2_release)
17175
+++ b/src/gcc/print-rtl.c (.../branches/gcc-4_8-branch)
17176
@@ -582,6 +582,8 @@
17178
if (MEM_EXPR (in_rtx))
17179
print_mem_expr (outfile, MEM_EXPR (in_rtx));
17181
+ fputc (' ', outfile);
17183
if (MEM_OFFSET_KNOWN_P (in_rtx))
17184
fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC, MEM_OFFSET (in_rtx));
17185
Index: gcc/ipa-split.c
17186
===================================================================
17187
--- a/src/gcc/ipa-split.c (.../tags/gcc_4_8_2_release)
17188
+++ b/src/gcc/ipa-split.c (.../branches/gcc-4_8-branch)
17189
@@ -136,7 +136,7 @@
17190
variable, check it if it is present in bitmap passed via DATA. */
17193
-test_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
17194
+test_nonssa_use (gimple, tree t, tree, void *data)
17196
t = get_base_address (t);
17198
@@ -229,7 +229,7 @@
17200
if (gimple_code (stmt) == GIMPLE_LABEL
17201
&& test_nonssa_use (stmt, gimple_label_label (stmt),
17203
+ NULL_TREE, non_ssa_vars))
17207
@@ -258,7 +258,7 @@
17208
if (virtual_operand_p (gimple_phi_result (stmt)))
17210
if (TREE_CODE (op) != SSA_NAME
17211
- && test_nonssa_use (stmt, op, non_ssa_vars))
17212
+ && test_nonssa_use (stmt, op, op, non_ssa_vars))
17216
@@ -670,7 +670,7 @@
17217
Return true when access to T prevents splitting the function. */
17220
-mark_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
17221
+mark_nonssa_use (gimple, tree t, tree, void *data)
17223
t = get_base_address (t);
17225
@@ -830,7 +830,7 @@
17226
if (TREE_CODE (op) == SSA_NAME)
17227
bitmap_set_bit (used_ssa_names, SSA_NAME_VERSION (op));
17229
- can_split &= !mark_nonssa_use (stmt, op, non_ssa_vars);
17230
+ can_split &= !mark_nonssa_use (stmt, op, op, non_ssa_vars);
17235
===================================================================
17236
--- a/src/gcc/alias.c (.../tags/gcc_4_8_2_release)
17237
+++ b/src/gcc/alias.c (.../branches/gcc-4_8-branch)
17238
@@ -2871,17 +2871,14 @@
17239
/* Wipe the reg_seen array clean. */
17240
bitmap_clear (reg_seen);
17242
- /* Mark all hard registers which may contain an address.
17243
- The stack, frame and argument pointers may contain an address.
17244
- An argument register which can hold a Pmode value may contain
17245
- an address even if it is not in BASE_REGS.
17246
+ /* Initialize the alias information for this pass. */
17247
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
17248
+ if (static_reg_base_value[i])
17250
+ new_reg_base_value[i] = static_reg_base_value[i];
17251
+ bitmap_set_bit (reg_seen, i);
17254
- The address expression is VOIDmode for an argument and
17255
- Pmode for other registers. */
17257
- memcpy (new_reg_base_value, static_reg_base_value,
17258
- FIRST_PSEUDO_REGISTER * sizeof (rtx));
17260
/* Walk the insns adding values to the new_reg_base_value array. */
17261
for (i = 0; i < rpo_cnt; i++)
17263
Index: gcc/tree-vect-loop.c
17264
===================================================================
17265
--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_4_8_2_release)
17266
+++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-4_8-branch)
17267
@@ -1537,7 +1537,7 @@
17269
if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
17270
|| LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0
17271
- || LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo))
17272
+ || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo))
17274
if (dump_enabled_p ())
17275
dump_printf_loc (MSG_NOTE, vect_location, "epilog loop required.");
17276
@@ -3115,14 +3115,12 @@
17277
stmt_vec_info stmt_vinfo = vinfo_for_stmt (iv_phi);
17278
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
17279
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
17280
- tree scalar_type;
17283
edge pe = loop_preheader_edge (loop);
17284
struct loop *iv_loop;
17285
basic_block new_bb;
17286
tree new_vec, vec_init, vec_step, t;
17290
gimple init_stmt, induction_phi, new_stmt;
17291
@@ -3130,7 +3128,6 @@
17292
tree init_expr, step_expr;
17293
int vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
17298
stmt_vec_info phi_info = vinfo_for_stmt (iv_phi);
17299
@@ -3159,16 +3156,14 @@
17300
latch_e = loop_latch_edge (iv_loop);
17301
loop_arg = PHI_ARG_DEF_FROM_EDGE (iv_phi, latch_e);
17303
- access_fn = analyze_scalar_evolution (iv_loop, PHI_RESULT (iv_phi));
17304
- gcc_assert (access_fn);
17305
- STRIP_NOPS (access_fn);
17306
- ok = vect_is_simple_iv_evolution (iv_loop->num, access_fn,
17307
- &init_expr, &step_expr);
17309
+ step_expr = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (phi_info);
17310
+ gcc_assert (step_expr != NULL_TREE);
17312
pe = loop_preheader_edge (iv_loop);
17313
+ init_expr = PHI_ARG_DEF_FROM_EDGE (iv_phi,
17314
+ loop_preheader_edge (iv_loop));
17316
- scalar_type = TREE_TYPE (init_expr);
17317
- vectype = get_vectype_for_scalar_type (scalar_type);
17318
+ vectype = get_vectype_for_scalar_type (TREE_TYPE (init_expr));
17319
resvectype = get_vectype_for_scalar_type (TREE_TYPE (PHI_RESULT (iv_phi)));
17320
gcc_assert (vectype);
17321
nunits = TYPE_VECTOR_SUBPARTS (vectype);
17322
@@ -3177,6 +3172,16 @@
17323
gcc_assert (phi_info);
17324
gcc_assert (ncopies >= 1);
17326
+ /* Convert the step to the desired type. */
17327
+ step_expr = force_gimple_operand (fold_convert (TREE_TYPE (vectype),
17329
+ &stmts, true, NULL_TREE);
17332
+ new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
17333
+ gcc_assert (!new_bb);
17336
/* Find the first insertion point in the BB. */
17337
si = gsi_after_labels (bb);
17339
@@ -3186,9 +3191,7 @@
17340
/* iv_loop is nested in the loop to be vectorized. init_expr had already
17341
been created during vectorization of previous stmts. We obtain it
17342
from the STMT_VINFO_VEC_STMT of the defining stmt. */
17343
- tree iv_def = PHI_ARG_DEF_FROM_EDGE (iv_phi,
17344
- loop_preheader_edge (iv_loop));
17345
- vec_init = vect_get_vec_def_for_operand (iv_def, iv_phi, NULL);
17346
+ vec_init = vect_get_vec_def_for_operand (init_expr, iv_phi, NULL);
17347
/* If the initial value is not of proper type, convert it. */
17348
if (!useless_type_conversion_p (vectype, TREE_TYPE (vec_init)))
17350
@@ -3211,8 +3214,11 @@
17352
/* iv_loop is the loop to be vectorized. Create:
17353
vec_init = [X, X+S, X+2*S, X+3*S] (S = step_expr, X = init_expr) */
17354
- new_var = vect_get_new_vect_var (scalar_type, vect_scalar_var, "var_");
17355
- new_name = force_gimple_operand (init_expr, &stmts, false, new_var);
17356
+ new_var = vect_get_new_vect_var (TREE_TYPE (vectype),
17357
+ vect_scalar_var, "var_");
17358
+ new_name = force_gimple_operand (fold_convert (TREE_TYPE (vectype),
17360
+ &stmts, false, new_var);
17363
new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
17364
@@ -3224,9 +3230,7 @@
17365
for (i = 1; i < nunits; i++)
17367
/* Create: new_name_i = new_name + step_expr */
17368
- enum tree_code code = POINTER_TYPE_P (scalar_type)
17369
- ? POINTER_PLUS_EXPR : PLUS_EXPR;
17370
- init_stmt = gimple_build_assign_with_ops (code, new_var,
17371
+ init_stmt = gimple_build_assign_with_ops (PLUS_EXPR, new_var,
17372
new_name, step_expr);
17373
new_name = make_ssa_name (new_var, init_stmt);
17374
gimple_assign_set_lhs (init_stmt, new_name);
17375
Index: gcc/lra-coalesce.c
17376
===================================================================
17377
--- a/src/gcc/lra-coalesce.c (.../tags/gcc_4_8_2_release)
17378
+++ b/src/gcc/lra-coalesce.c (.../branches/gcc-4_8-branch)
17379
@@ -221,9 +221,12 @@
17381
rtx mv, set, insn, next, *sorted_moves;
17382
int i, mv_num, sregno, dregno;
17383
+ unsigned int regno;
17384
int coalesced_moves;
17385
int max_regno = max_reg_num ();
17386
bitmap_head involved_insns_bitmap;
17387
+ bitmap_head result_pseudo_vals_bitmap;
17388
+ bitmap_iterator bi;
17390
timevar_push (TV_LRA_COALESCE);
17392
@@ -318,6 +321,34 @@
17396
+ /* If we have situation after inheritance pass:
17398
+ r1 <- ... insn originally setting p1
17399
+ i1 <- r1 setting inheritance i1 from reload r1
17401
+ ... <- ... p2 ... dead p2
17407
+ And we are coalescing p1 and p2 using p1. In this case i1 and p1
17408
+ should have different values, otherwise they can get the same
17409
+ hard reg and this is wrong for insn using p2 before coalescing.
17410
+ So invalidate such inheritance pseudo values. */
17411
+ bitmap_initialize (&result_pseudo_vals_bitmap, ®_obstack);
17412
+ EXECUTE_IF_SET_IN_BITMAP (&coalesced_pseudos_bitmap, 0, regno, bi)
17413
+ bitmap_set_bit (&result_pseudo_vals_bitmap,
17414
+ lra_reg_info[first_coalesced_pseudo[regno]].val);
17415
+ EXECUTE_IF_SET_IN_BITMAP (&lra_inheritance_pseudos, 0, regno, bi)
17416
+ if (bitmap_bit_p (&result_pseudo_vals_bitmap, lra_reg_info[regno].val))
17418
+ lra_set_regno_unique_value (regno);
17419
+ if (lra_dump_file != NULL)
17420
+ fprintf (lra_dump_file,
17421
+ " Make unique value for inheritance r%d\n", regno);
17423
+ bitmap_clear (&result_pseudo_vals_bitmap);
17424
bitmap_clear (&used_pseudos_bitmap);
17425
bitmap_clear (&involved_insns_bitmap);
17426
bitmap_clear (&coalesced_pseudos_bitmap);
17427
Index: gcc/gimplify.c
17428
===================================================================
17429
--- a/src/gcc/gimplify.c (.../tags/gcc_4_8_2_release)
17430
+++ b/src/gcc/gimplify.c (.../branches/gcc-4_8-branch)
17431
@@ -2060,6 +2060,9 @@
17432
/* Nonlocal VLAs seen in the current function. */
17433
static struct pointer_set_t *nonlocal_vlas;
17435
+/* The VAR_DECLs created for nonlocal VLAs for debug info purposes. */
17436
+static tree nonlocal_vla_vars;
17438
/* Gimplify a VAR_DECL or PARM_DECL. Return GS_OK if we expanded a
17439
DECL_VALUE_EXPR, and it's worth re-examining things. */
17441
@@ -2106,14 +2109,13 @@
17442
ctx = ctx->outer_context;
17443
if (!ctx && !pointer_set_insert (nonlocal_vlas, decl))
17445
- tree copy = copy_node (decl), block;
17446
+ tree copy = copy_node (decl);
17448
lang_hooks.dup_lang_specific_decl (copy);
17449
SET_DECL_RTL (copy, 0);
17450
TREE_USED (copy) = 1;
17451
- block = DECL_INITIAL (current_function_decl);
17452
- DECL_CHAIN (copy) = BLOCK_VARS (block);
17453
- BLOCK_VARS (block) = copy;
17454
+ DECL_CHAIN (copy) = nonlocal_vla_vars;
17455
+ nonlocal_vla_vars = copy;
17456
SET_DECL_VALUE_EXPR (copy, unshare_expr (value_expr));
17457
DECL_HAS_VALUE_EXPR_P (copy) = 1;
17459
@@ -4369,7 +4371,7 @@
17460
unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
17461
tree index = bitsize_int (indexi);
17462
if (offset / part_widthi
17463
- <= TYPE_VECTOR_SUBPARTS (TREE_TYPE (addrtype)))
17464
+ < TYPE_VECTOR_SUBPARTS (TREE_TYPE (addrtype)))
17465
return fold_build3 (BIT_FIELD_REF, type, TREE_OPERAND (addr, 0),
17466
part_width, index);
17468
@@ -6131,7 +6133,7 @@
17469
region's REDUCTION clause. */
17472
-omp_check_private (struct gimplify_omp_ctx *ctx, tree decl)
17473
+omp_check_private (struct gimplify_omp_ctx *ctx, tree decl, bool copyprivate)
17477
@@ -6140,8 +6142,11 @@
17478
ctx = ctx->outer_context;
17480
return !(is_global_var (decl)
17481
- /* References might be private, but might be shared too. */
17482
- || lang_hooks.decls.omp_privatize_by_reference (decl));
17483
+ /* References might be private, but might be shared too,
17484
+ when checking for copyprivate, assume they might be
17485
+ private, otherwise assume they might be shared. */
17487
+ && lang_hooks.decls.omp_privatize_by_reference (decl)));
17489
n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
17491
@@ -6267,12 +6272,36 @@
17495
+ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_COPYPRIVATE
17497
+ && !omp_check_private (ctx, decl, true))
17500
+ if (is_global_var (decl))
17502
+ if (DECL_THREAD_LOCAL_P (decl))
17504
+ else if (DECL_HAS_VALUE_EXPR_P (decl))
17506
+ tree value = get_base_address (DECL_VALUE_EXPR (decl));
17509
+ && DECL_P (value)
17510
+ && DECL_THREAD_LOCAL_P (value))
17515
+ error_at (OMP_CLAUSE_LOCATION (c),
17516
+ "copyprivate variable %qE is not threadprivate"
17517
+ " or private in outer context", DECL_NAME (decl));
17521
omp_notice_variable (outer_ctx, decl, true);
17522
if (check_non_private
17523
&& region_type == ORT_WORKSHARE
17524
- && omp_check_private (ctx, decl))
17525
+ && omp_check_private (ctx, decl, false))
17527
error ("%s variable %qE is private in outer context",
17528
check_non_private, DECL_NAME (decl));
17529
@@ -8261,6 +8290,21 @@
17533
+ if (nonlocal_vla_vars)
17535
+ /* tree-nested.c may later on call declare_vars (..., true);
17536
+ which relies on BLOCK_VARS chain to be the tail of the
17537
+ gimple_bind_vars chain. Ensure we don't violate that
17539
+ if (gimple_bind_block (outer_bind)
17540
+ == DECL_INITIAL (current_function_decl))
17541
+ declare_vars (nonlocal_vla_vars, outer_bind, true);
17543
+ BLOCK_VARS (DECL_INITIAL (current_function_decl))
17544
+ = chainon (BLOCK_VARS (DECL_INITIAL (current_function_decl)),
17545
+ nonlocal_vla_vars);
17546
+ nonlocal_vla_vars = NULL_TREE;
17548
pointer_set_destroy (nonlocal_vlas);
17549
nonlocal_vlas = NULL;
17551
Index: gcc/tree-dfa.c
17552
===================================================================
17553
--- a/src/gcc/tree-dfa.c (.../tags/gcc_4_8_2_release)
17554
+++ b/src/gcc/tree-dfa.c (.../branches/gcc-4_8-branch)
17555
@@ -386,7 +386,6 @@
17556
double_int bit_offset = double_int_zero;
17557
HOST_WIDE_INT hbit_offset;
17558
bool seen_variable_array_ref = false;
17561
/* First get the final access size from just the outermost expression. */
17562
if (TREE_CODE (exp) == COMPONENT_REF)
17563
@@ -417,8 +416,6 @@
17564
and find the ultimate containing object. */
17567
- base_type = TREE_TYPE (exp);
17569
switch (TREE_CODE (exp))
17571
case BIT_FIELD_REF:
17572
@@ -543,7 +540,38 @@
17573
case VIEW_CONVERT_EXPR:
17576
+ case TARGET_MEM_REF:
17577
+ /* Via the variable index or index2 we can reach the
17578
+ whole object. Still hand back the decl here. */
17579
+ if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR
17580
+ && (TMR_INDEX (exp) || TMR_INDEX2 (exp)))
17582
+ exp = TREE_OPERAND (TMR_BASE (exp), 0);
17583
+ bit_offset = double_int_zero;
17589
+ /* We need to deal with variable arrays ending structures such as
17590
+ struct { int length; int a[1]; } x; x.a[d]
17591
+ struct { struct { int a; int b; } a[1]; } x; x.a[d].a
17592
+ struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0]
17593
+ struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d]
17594
+ where we do not know maxsize for variable index accesses to
17595
+ the array. The simplest way to conservatively deal with this
17596
+ is to punt in the case that offset + maxsize reaches the
17597
+ base type boundary. This needs to include possible trailing
17598
+ padding that is there for alignment purposes. */
17599
+ if (seen_variable_array_ref
17601
+ && (!bit_offset.fits_shwi ()
17602
+ || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)
17603
+ || (bit_offset.to_shwi () + maxsize
17604
+ == (HOST_WIDE_INT) TREE_INT_CST_LOW
17605
+ (TYPE_SIZE (TREE_TYPE (exp))))))
17608
/* Hand back the decl for MEM[&decl, off]. */
17609
if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR)
17611
@@ -565,45 +593,24 @@
17615
- case TARGET_MEM_REF:
17616
- /* Hand back the decl for MEM[&decl, off]. */
17617
- if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR)
17619
- /* Via the variable index or index2 we can reach the
17621
- if (TMR_INDEX (exp) || TMR_INDEX2 (exp))
17623
- exp = TREE_OPERAND (TMR_BASE (exp), 0);
17624
- bit_offset = double_int_zero;
17628
- if (integer_zerop (TMR_OFFSET (exp)))
17629
- exp = TREE_OPERAND (TMR_BASE (exp), 0);
17632
- double_int off = mem_ref_offset (exp);
17633
- off = off.alshift (BITS_PER_UNIT == 8
17634
- ? 3 : exact_log2 (BITS_PER_UNIT),
17635
- HOST_BITS_PER_DOUBLE_INT);
17636
- off += bit_offset;
17637
- if (off.fits_shwi ())
17639
- bit_offset = off;
17640
- exp = TREE_OPERAND (TMR_BASE (exp), 0);
17650
exp = TREE_OPERAND (exp, 0);
17653
+ /* We need to deal with variable arrays ending structures. */
17654
+ if (seen_variable_array_ref
17656
+ && (!bit_offset.fits_shwi ()
17657
+ || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)
17658
+ || (bit_offset.to_shwi () + maxsize
17659
+ == (HOST_WIDE_INT)
17660
+ TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))))))
17665
if (!bit_offset.fits_shwi ())
17668
@@ -615,24 +622,6 @@
17670
hbit_offset = bit_offset.to_shwi ();
17672
- /* We need to deal with variable arrays ending structures such as
17673
- struct { int length; int a[1]; } x; x.a[d]
17674
- struct { struct { int a; int b; } a[1]; } x; x.a[d].a
17675
- struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0]
17676
- struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d]
17677
- where we do not know maxsize for variable index accesses to
17678
- the array. The simplest way to conservatively deal with this
17679
- is to punt in the case that offset + maxsize reaches the
17680
- base type boundary. This needs to include possible trailing padding
17681
- that is there for alignment purposes. */
17683
- if (seen_variable_array_ref
17685
- && (!host_integerp (TYPE_SIZE (base_type), 1)
17686
- || (hbit_offset + maxsize
17687
- == (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type)))))
17690
/* In case of a decl or constant base object we can do better. */
17693
Index: gcc/gimple-fold.c
17694
===================================================================
17695
--- a/src/gcc/gimple-fold.c (.../tags/gcc_4_8_2_release)
17696
+++ b/src/gcc/gimple-fold.c (.../branches/gcc-4_8-branch)
17697
@@ -178,7 +178,7 @@
17698
/* Make sure we create a cgraph node for functions we'll reference.
17699
They can be non-existent if the reference comes from an entry
17700
of an external vtable for example. */
17701
- cgraph_get_create_node (base);
17702
+ cgraph_get_create_real_symbol_node (base);
17704
/* Fixup types in global initializers. */
17705
if (TREE_TYPE (TREE_TYPE (cval)) != TREE_TYPE (TREE_OPERAND (cval, 0)))
17706
Index: gcc/cfgexpand.c
17707
===================================================================
17708
--- a/src/gcc/cfgexpand.c (.../tags/gcc_4_8_2_release)
17709
+++ b/src/gcc/cfgexpand.c (.../branches/gcc-4_8-branch)
17710
@@ -331,7 +331,7 @@
17711
enter its partition number into bitmap DATA. */
17714
-visit_op (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
17715
+visit_op (gimple, tree op, tree, void *data)
17717
bitmap active = (bitmap)data;
17718
op = get_base_address (op);
17719
@@ -351,7 +351,7 @@
17720
from bitmap DATA. */
17723
-visit_conflict (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
17724
+visit_conflict (gimple, tree op, tree, void *data)
17726
bitmap active = (bitmap)data;
17727
op = get_base_address (op);
17728
@@ -385,7 +385,7 @@
17731
gimple_stmt_iterator gsi;
17732
- bool (*visit)(gimple, tree, void *);
17733
+ walk_stmt_load_store_addr_fn visit;
17735
bitmap_clear (work);
17736
FOR_EACH_EDGE (e, ei, bb->preds)
17737
@@ -4707,14 +4707,18 @@
17740
rebuild_jump_labels_chain (e->insns.r);
17741
- /* Avoid putting insns before parm_birth_insn. */
17742
+ /* Put insns after parm birth, but before
17743
+ NOTE_INSNS_FUNCTION_BEG. */
17744
if (e->src == ENTRY_BLOCK_PTR
17745
- && single_succ_p (ENTRY_BLOCK_PTR)
17746
- && parm_birth_insn)
17747
+ && single_succ_p (ENTRY_BLOCK_PTR))
17749
rtx insns = e->insns.r;
17750
e->insns.r = NULL_RTX;
17751
- emit_insn_after_noloc (insns, parm_birth_insn, e->dest);
17752
+ if (NOTE_P (parm_birth_insn)
17753
+ && NOTE_KIND (parm_birth_insn) == NOTE_INSN_FUNCTION_BEG)
17754
+ emit_insn_before_noloc (insns, parm_birth_insn, e->dest);
17756
+ emit_insn_after_noloc (insns, parm_birth_insn, e->dest);
17759
commit_one_edge_insertion (e);
17760
Index: gcc/tree-ssa-pre.c
17761
===================================================================
17762
--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_4_8_2_release)
17763
+++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-4_8-branch)
17764
@@ -3664,6 +3664,12 @@
17765
if (dump_file && dump_flags & TDF_DETAILS)
17766
fprintf (dump_file, "Starting insert iteration %d\n", num_iterations);
17767
new_stuff = insert_aux (ENTRY_BLOCK_PTR);
17769
+ /* Clear the NEW sets before the next iteration. We have already
17770
+ fully propagated its contents. */
17773
+ bitmap_set_free (NEW_SETS (bb));
17775
statistics_histogram_event (cfun, "insert iterations", num_iterations);
17777
Index: gcc/cfgcleanup.c
17778
===================================================================
17779
--- a/src/gcc/cfgcleanup.c (.../tags/gcc_4_8_2_release)
17780
+++ b/src/gcc/cfgcleanup.c (.../branches/gcc-4_8-branch)
17781
@@ -1293,7 +1293,6 @@
17783
rtx i1, i2, last1, last2, afterlast1, afterlast2;
17786
enum replace_direction dir, last_dir, afterlast_dir;
17787
bool follow_fallthru, did_fallthru;
17789
@@ -1321,8 +1320,9 @@
17790
|| (returnjump_p (i2) && !side_effects_p (PATTERN (i2))))
17793
- /* Count everything except for unconditional jump as insn. */
17794
- if (!simplejump_p (i2) && !returnjump_p (i2) && last1)
17795
+ /* Count everything except for unconditional jump as insn.
17796
+ Don't count any jumps if dir_p is NULL. */
17797
+ if (!simplejump_p (i2) && !returnjump_p (i2) && last1 && dir_p)
17799
i2 = PREV_INSN (i2);
17801
@@ -1373,8 +1373,8 @@
17802
last1 = i1, last2 = i2;
17803
afterlast_dir = last_dir;
17805
- p1 = PATTERN (i1);
17806
- if (!(GET_CODE (p1) == USE || GET_CODE (p1) == CLOBBER))
17807
+ if (GET_CODE (PATTERN (i1)) != USE
17808
+ && GET_CODE (PATTERN (i1)) != CLOBBER)
17812
@@ -1420,7 +1420,8 @@
17813
/* Like flow_find_cross_jump, except start looking for a matching sequence from
17814
the head of the two blocks. Do not include jumps at the end.
17815
If STOP_AFTER is nonzero, stop after finding that many matching
17817
+ instructions. If STOP_AFTER is zero, count all INSN_P insns, if it is
17818
+ non-zero, only count active insns. */
17821
flow_find_head_matching_sequence (basic_block bb1, basic_block bb2, rtx *f1,
17822
@@ -1492,7 +1493,10 @@
17824
beforelast1 = last1, beforelast2 = last2;
17825
last1 = i1, last2 = i2;
17828
+ || (GET_CODE (PATTERN (i1)) != USE
17829
+ && GET_CODE (PATTERN (i1)) != CLOBBER))
17833
if (i1 == BB_END (bb1) || i2 == BB_END (bb2)
17834
Index: gcc/simplify-rtx.c
17835
===================================================================
17836
--- a/src/gcc/simplify-rtx.c (.../tags/gcc_4_8_2_release)
17837
+++ b/src/gcc/simplify-rtx.c (.../branches/gcc-4_8-branch)
17838
@@ -639,11 +639,16 @@
17839
XEXP (op, 0), origmode);
17842
- /* Simplify (truncate:SI (op:DI (x:DI) (y:DI)))
17843
- to (op:SI (truncate:SI (x:DI)) (truncate:SI (x:DI))). */
17844
- if (GET_CODE (op) == PLUS
17845
- || GET_CODE (op) == MINUS
17846
- || GET_CODE (op) == MULT)
17847
+ /* If the machine can perform operations in the truncated mode, distribute
17848
+ the truncation, i.e. simplify (truncate:QI (op:SI (x:SI) (y:SI))) into
17849
+ (op:QI (truncate:QI (x:SI)) (truncate:QI (y:SI))). */
17851
+#ifdef WORD_REGISTER_OPERATIONS
17852
+ && precision >= BITS_PER_WORD
17854
+ && (GET_CODE (op) == PLUS
17855
+ || GET_CODE (op) == MINUS
17856
+ || GET_CODE (op) == MULT))
17858
rtx op0 = simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0), op_mode);
17860
Index: gcc/tree-sra.c
17861
===================================================================
17862
--- a/src/gcc/tree-sra.c (.../tags/gcc_4_8_2_release)
17863
+++ b/src/gcc/tree-sra.c (.../branches/gcc-4_8-branch)
17864
@@ -1161,8 +1161,7 @@
17865
GIMPLE_ASM operands with memory constrains which cannot be scalarized. */
17868
-asm_visit_addr (gimple stmt ATTRIBUTE_UNUSED, tree op,
17869
- void *data ATTRIBUTE_UNUSED)
17870
+asm_visit_addr (gimple, tree op, tree, void *)
17872
op = get_base_address (op);
17874
Index: gcc/tree-predcom.c
17875
===================================================================
17876
--- a/src/gcc/tree-predcom.c (.../tags/gcc_4_8_2_release)
17877
+++ b/src/gcc/tree-predcom.c (.../branches/gcc-4_8-branch)
17878
@@ -1323,90 +1323,43 @@
17879
gsi_insert_after (&bsi, new_stmt, GSI_NEW_STMT);
17882
-/* Returns the reference to the address of REF in the ITER-th iteration of
17883
- LOOP, or NULL if we fail to determine it (ITER may be negative). We
17884
- try to preserve the original shape of the reference (not rewrite it
17885
- as an indirect ref to the address), to make tree_could_trap_p in
17886
- prepare_initializers_chain return false more often. */
17887
+/* Returns a memory reference to DR in the ITER-th iteration of
17888
+ the loop it was analyzed in. Append init stmts to STMTS. */
17891
-ref_at_iteration (struct loop *loop, tree ref, int iter)
17893
+ref_at_iteration (data_reference_p dr, int iter, gimple_seq *stmts)
17895
- tree idx, *idx_p, type, val, op0 = NULL_TREE, ret;
17899
- if (handled_component_p (ref))
17900
+ tree off = DR_OFFSET (dr);
17901
+ tree coff = DR_INIT (dr);
17904
+ else if (TREE_CODE (DR_STEP (dr)) == INTEGER_CST)
17905
+ coff = size_binop (PLUS_EXPR, coff,
17906
+ size_binop (MULT_EXPR, DR_STEP (dr), ssize_int (iter)));
17908
+ off = size_binop (PLUS_EXPR, off,
17909
+ size_binop (MULT_EXPR, DR_STEP (dr), ssize_int (iter)));
17910
+ tree addr = fold_build_pointer_plus (DR_BASE_ADDRESS (dr), off);
17911
+ addr = force_gimple_operand_1 (addr, stmts, is_gimple_mem_ref_addr,
17913
+ tree alias_ptr = fold_convert (reference_alias_ptr_type (DR_REF (dr)), coff);
17914
+ /* While data-ref analysis punts on bit offsets it still handles
17915
+ bitfield accesses at byte boundaries. Cope with that. Note that
17916
+ we cannot simply re-apply the outer COMPONENT_REF because the
17917
+ byte-granular portion of it is already applied via DR_INIT and
17918
+ DR_OFFSET, so simply build a BIT_FIELD_REF knowing that the bits
17919
+ start at offset zero. */
17920
+ if (TREE_CODE (DR_REF (dr)) == COMPONENT_REF
17921
+ && DECL_BIT_FIELD (TREE_OPERAND (DR_REF (dr), 1)))
17923
- op0 = ref_at_iteration (loop, TREE_OPERAND (ref, 0), iter);
17925
- return NULL_TREE;
17926
+ tree field = TREE_OPERAND (DR_REF (dr), 1);
17927
+ return build3 (BIT_FIELD_REF, TREE_TYPE (DR_REF (dr)),
17928
+ build2 (MEM_REF, DECL_BIT_FIELD_TYPE (field),
17929
+ addr, alias_ptr),
17930
+ DECL_SIZE (field), bitsize_zero_node);
17932
- else if (!INDIRECT_REF_P (ref)
17933
- && TREE_CODE (ref) != MEM_REF)
17934
- return unshare_expr (ref);
17936
- if (TREE_CODE (ref) == MEM_REF)
17938
- ret = unshare_expr (ref);
17939
- idx = TREE_OPERAND (ref, 0);
17940
- idx_p = &TREE_OPERAND (ret, 0);
17942
- else if (TREE_CODE (ref) == COMPONENT_REF)
17944
- /* Check that the offset is loop invariant. */
17945
- if (TREE_OPERAND (ref, 2)
17946
- && !expr_invariant_in_loop_p (loop, TREE_OPERAND (ref, 2)))
17947
- return NULL_TREE;
17949
- return build3 (COMPONENT_REF, TREE_TYPE (ref), op0,
17950
- unshare_expr (TREE_OPERAND (ref, 1)),
17951
- unshare_expr (TREE_OPERAND (ref, 2)));
17953
- else if (TREE_CODE (ref) == ARRAY_REF)
17955
- /* Check that the lower bound and the step are loop invariant. */
17956
- if (TREE_OPERAND (ref, 2)
17957
- && !expr_invariant_in_loop_p (loop, TREE_OPERAND (ref, 2)))
17958
- return NULL_TREE;
17959
- if (TREE_OPERAND (ref, 3)
17960
- && !expr_invariant_in_loop_p (loop, TREE_OPERAND (ref, 3)))
17961
- return NULL_TREE;
17963
- ret = build4 (ARRAY_REF, TREE_TYPE (ref), op0, NULL_TREE,
17964
- unshare_expr (TREE_OPERAND (ref, 2)),
17965
- unshare_expr (TREE_OPERAND (ref, 3)));
17966
- idx = TREE_OPERAND (ref, 1);
17967
- idx_p = &TREE_OPERAND (ret, 1);
17970
- return NULL_TREE;
17972
- ok = simple_iv (loop, loop, idx, &iv, true);
17974
- return NULL_TREE;
17975
- iv.base = expand_simple_operations (iv.base);
17976
- if (integer_zerop (iv.step))
17977
- *idx_p = unshare_expr (iv.base);
17980
- type = TREE_TYPE (iv.base);
17981
- if (POINTER_TYPE_P (type))
17983
- val = fold_build2 (MULT_EXPR, sizetype, iv.step,
17984
- size_int (iter));
17985
- val = fold_build_pointer_plus (iv.base, val);
17989
- val = fold_build2 (MULT_EXPR, type, iv.step,
17990
- build_int_cst_type (type, iter));
17991
- val = fold_build2 (PLUS_EXPR, type, iv.base, val);
17993
- *idx_p = unshare_expr (val);
17997
+ return fold_build2 (MEM_REF, TREE_TYPE (DR_REF (dr)), addr, alias_ptr);
18000
/* Get the initialization expression for the INDEX-th temporary variable
18001
@@ -2068,7 +2021,11 @@
18003
stmt = find_common_use_stmt (&name1, &name2);
18007
+ /* A simple post-dominance check - make sure the combination
18008
+ is executed under the same condition as the references. */
18009
+ || (gimple_bb (stmt) != gimple_bb (r1->stmt)
18010
+ && gimple_bb (stmt) != gimple_bb (r2->stmt)))
18013
acode = gimple_assign_rhs_code (stmt);
18014
@@ -2365,14 +2322,10 @@
18015
if (chain->inits[i] != NULL_TREE)
18018
- init = ref_at_iteration (loop, DR_REF (dr), (int) i - n);
18022
+ init = ref_at_iteration (dr, (int) i - n, &stmts);
18023
if (!chain->all_always_accessed && tree_could_trap_p (init))
18026
- init = force_gimple_operand (init, &stmts, false, NULL_TREE);
18028
gsi_insert_seq_on_edge_immediate (entry, stmts);
18030
@@ -2449,6 +2402,7 @@
18033
free_data_refs (datarefs);
18034
+ free_affine_expand_cache (&name_expansions);
18038
Index: gcc/loop-iv.c
18039
===================================================================
18040
--- a/src/gcc/loop-iv.c (.../tags/gcc_4_8_2_release)
18041
+++ b/src/gcc/loop-iv.c (.../branches/gcc-4_8-branch)
18042
@@ -425,7 +425,9 @@
18043
&& !iv->first_special)
18045
rtx val = get_iv_value (iv, const0_rtx);
18046
- val = lowpart_subreg (mode, val, iv->extend_mode);
18047
+ val = lowpart_subreg (mode, val,
18048
+ iv->extend == IV_UNKNOWN_EXTEND
18049
+ ? iv->mode : iv->extend_mode);
18052
iv->extend = IV_UNKNOWN_EXTEND;
18053
@@ -465,8 +467,14 @@
18054
&& !iv->first_special)
18056
rtx val = get_iv_value (iv, const0_rtx);
18057
+ if (iv->extend_mode != iv->mode
18058
+ && iv->extend != IV_UNKNOWN_EXTEND
18059
+ && iv->extend != extend)
18060
+ val = lowpart_subreg (iv->mode, val, iv->extend_mode);
18061
val = simplify_gen_unary (iv_extend_to_rtx_code (extend), mode,
18062
- val, iv->extend_mode);
18064
+ iv->extend == extend
18065
+ ? iv->extend_mode : iv->mode);
18067
iv->extend = IV_UNKNOWN_EXTEND;
18068
iv->mode = iv->extend_mode = mode;
18069
Index: gcc/ipa-prop.c
18070
===================================================================
18071
--- a/src/gcc/ipa-prop.c (.../tags/gcc_4_8_2_release)
18072
+++ b/src/gcc/ipa-prop.c (.../branches/gcc-4_8-branch)
18073
@@ -623,16 +623,22 @@
18074
if (parm_ainfo && parm_ainfo->parm_modified)
18077
- gcc_checking_assert (gimple_vuse (stmt) != NULL_TREE);
18078
- ao_ref_init (&refd, parm_load);
18079
- /* We can cache visited statements only when parm_ainfo is available and when
18080
- we are looking at a naked load of the whole parameter. */
18081
- if (!parm_ainfo || TREE_CODE (parm_load) != PARM_DECL)
18082
- visited_stmts = NULL;
18085
+ gcc_checking_assert (gimple_vuse (stmt) != NULL_TREE);
18086
+ ao_ref_init (&refd, parm_load);
18087
+ /* We can cache visited statements only when parm_ainfo is available and
18088
+ when we are looking at a naked load of the whole parameter. */
18089
+ if (!parm_ainfo || TREE_CODE (parm_load) != PARM_DECL)
18090
+ visited_stmts = NULL;
18092
+ visited_stmts = &parm_ainfo->parm_visited_statements;
18093
+ walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
18097
- visited_stmts = &parm_ainfo->parm_visited_statements;
18098
- walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
18102
if (parm_ainfo && modified)
18103
parm_ainfo->parm_modified = true;
18105
@@ -740,7 +746,7 @@
18106
ipa_load_from_parm_agg_1 (vec<ipa_param_descriptor_t> descriptors,
18107
struct param_analysis_info *parms_ainfo, gimple stmt,
18108
tree op, int *index_p, HOST_WIDE_INT *offset_p,
18110
+ HOST_WIDE_INT *size_p, bool *by_ref_p)
18113
HOST_WIDE_INT size, max_size;
18114
@@ -758,6 +764,8 @@
18123
@@ -800,6 +808,8 @@
18132
@@ -814,7 +824,7 @@
18135
return ipa_load_from_parm_agg_1 (info->descriptors, NULL, stmt, op, index_p,
18136
- offset_p, by_ref_p);
18137
+ offset_p, NULL, by_ref_p);
18140
/* Given that an actual argument is an SSA_NAME (given in NAME) and is a result
18141
@@ -1462,6 +1472,9 @@
18143
struct cgraph_edge *cs;
18148
for (cs = node->callees; cs; cs = cs->next_callee)
18150
struct cgraph_node *callee = cgraph_function_or_thunk_node (cs->callee,
18151
@@ -1646,7 +1659,7 @@
18152
if (gimple_assign_single_p (def)
18153
&& ipa_load_from_parm_agg_1 (info->descriptors, parms_ainfo, def,
18154
gimple_assign_rhs1 (def), &index, &offset,
18158
struct cgraph_edge *cs = ipa_note_param_call (node, index, call);
18159
cs->indirect_info->offset = offset;
18160
@@ -1847,8 +1860,7 @@
18164
-visit_ref_for_mod_analysis (gimple stmt ATTRIBUTE_UNUSED,
18165
- tree op, void *data)
18166
+visit_ref_for_mod_analysis (gimple, tree op, tree, void *data)
18168
struct ipa_node_params *info = (struct ipa_node_params *) data;
18170
@@ -2126,7 +2138,6 @@
18171
we may create the first reference to the object in the unit. */
18172
if (!callee || callee->global.inlined_to)
18174
- struct cgraph_node *first_clone = callee;
18176
/* We are better to ensure we can refer to it.
18177
In the case of static functions we are out of luck, since we already
18178
@@ -2142,31 +2153,7 @@
18179
xstrdup (cgraph_node_name (ie->callee)), ie->callee->uid);
18183
- /* Create symbol table node. Even if inline clone exists, we can not take
18184
- it as a target of non-inlined call. */
18185
- callee = cgraph_create_node (target);
18187
- /* OK, we previously inlined the function, then removed the offline copy and
18188
- now we want it back for external call. This can happen when devirtualizing
18189
- while inlining function called once that happens after extern inlined and
18190
- virtuals are already removed. In this case introduce the external node
18191
- and make it available for call. */
18194
- first_clone->clone_of = callee;
18195
- callee->clones = first_clone;
18196
- symtab_prevail_in_asm_name_hash ((symtab_node)callee);
18197
- symtab_insert_node_to_hashtable ((symtab_node)callee);
18199
- fprintf (dump_file, "ipa-prop: Introduced new external node "
18200
- "(%s/%i) and turned into root of the clone tree.\n",
18201
- xstrdup (cgraph_node_name (callee)), callee->uid);
18203
- else if (dump_file)
18204
- fprintf (dump_file, "ipa-prop: Introduced new external node "
18206
- xstrdup (cgraph_node_name (callee)), callee->uid);
18207
+ callee = cgraph_get_create_real_symbol_node (target);
18209
ipa_check_create_node_params ();
18211
@@ -3902,7 +3889,7 @@
18212
struct ipa_agg_replacement_value *v;
18213
gimple stmt = gsi_stmt (gsi);
18215
- HOST_WIDE_INT offset;
18216
+ HOST_WIDE_INT offset, size;
18220
@@ -3929,13 +3916,15 @@
18223
if (!ipa_load_from_parm_agg_1 (descriptors, parms_ainfo, stmt,
18224
- rhs, &index, &offset, &by_ref))
18225
+ rhs, &index, &offset, &size, &by_ref))
18227
for (v = aggval; v; v = v->next)
18228
if (v->index == index
18229
&& v->offset == offset)
18231
- if (!v || v->by_ref != by_ref)
18233
+ || v->by_ref != by_ref
18234
+ || tree_low_cst (TYPE_SIZE (TREE_TYPE (v->value)), 0) != size)
18237
gcc_checking_assert (is_gimple_ip_invariant (v->value));
18238
Index: gcc/tree-ssa-dce.c
18239
===================================================================
18240
--- a/src/gcc/tree-ssa-dce.c (.../tags/gcc_4_8_2_release)
18241
+++ b/src/gcc/tree-ssa-dce.c (.../branches/gcc-4_8-branch)
18242
@@ -1307,26 +1307,19 @@
18245
/* We can mark a call to free as not necessary if the
18246
- defining statement of its argument is an allocation
18247
- function and that is not necessary itself. */
18248
- if (gimple_call_builtin_p (stmt, BUILT_IN_FREE))
18249
+ defining statement of its argument is not necessary
18250
+ (and thus is getting removed). */
18251
+ if (gimple_plf (stmt, STMT_NECESSARY)
18252
+ && gimple_call_builtin_p (stmt, BUILT_IN_FREE))
18254
tree ptr = gimple_call_arg (stmt, 0);
18257
- if (TREE_CODE (ptr) != SSA_NAME)
18259
- def_stmt = SSA_NAME_DEF_STMT (ptr);
18260
- if (!is_gimple_call (def_stmt)
18261
- || gimple_plf (def_stmt, STMT_NECESSARY))
18263
- callee2 = gimple_call_fndecl (def_stmt);
18264
- if (callee2 == NULL_TREE
18265
- || DECL_BUILT_IN_CLASS (callee2) != BUILT_IN_NORMAL
18266
- || (DECL_FUNCTION_CODE (callee2) != BUILT_IN_MALLOC
18267
- && DECL_FUNCTION_CODE (callee2) != BUILT_IN_CALLOC))
18269
- gimple_set_plf (stmt, STMT_NECESSARY, false);
18270
+ if (TREE_CODE (ptr) == SSA_NAME)
18272
+ gimple def_stmt = SSA_NAME_DEF_STMT (ptr);
18273
+ if (!gimple_nop_p (def_stmt)
18274
+ && !gimple_plf (def_stmt, STMT_NECESSARY))
18275
+ gimple_set_plf (stmt, STMT_NECESSARY, false);
18279
/* If GSI is not necessary then remove it. */
18280
Index: gcc/tree-ssa-ter.c
18281
===================================================================
18282
--- a/src/gcc/tree-ssa-ter.c (.../tags/gcc_4_8_2_release)
18283
+++ b/src/gcc/tree-ssa-ter.c (.../branches/gcc-4_8-branch)
18284
@@ -590,6 +590,30 @@
18288
+/* Helper function for find_ssaname_in_stores. Called via walk_tree to
18289
+ find a SSA_NAME DATA somewhere in *TP. */
18292
+find_ssaname (tree *tp, int *walk_subtrees, void *data)
18294
+ tree var = (tree) data;
18297
+ else if (IS_TYPE_OR_DECL_P (*tp))
18298
+ *walk_subtrees = 0;
18299
+ return NULL_TREE;
18302
+/* Helper function for find_replaceable_in_bb. Return true if SSA_NAME DATA
18303
+ is used somewhere in T, which is a store in the statement. Called via
18304
+ walk_stmt_load_store_addr_ops. */
18307
+find_ssaname_in_store (gimple, tree, tree t, void *data)
18309
+ return walk_tree (&t, find_ssaname, data, NULL) != NULL_TREE;
18312
/* This function processes basic block BB, and looks for variables which can
18313
be replaced by their expressions. Results are stored in the table TAB. */
18315
@@ -643,8 +667,7 @@
18316
/* If the stmt does a memory store and the replacement
18317
is a load aliasing it avoid creating overlapping
18318
assignments which we cannot expand correctly. */
18319
- if (gimple_vdef (stmt)
18320
- && gimple_assign_single_p (stmt))
18321
+ if (gimple_vdef (stmt))
18323
gimple def_stmt = SSA_NAME_DEF_STMT (use);
18324
while (is_gimple_assign (def_stmt)
18325
@@ -653,9 +676,29 @@
18326
= SSA_NAME_DEF_STMT (gimple_assign_rhs1 (def_stmt));
18327
if (gimple_vuse (def_stmt)
18328
&& gimple_assign_single_p (def_stmt)
18329
- && refs_may_alias_p (gimple_assign_lhs (stmt),
18330
- gimple_assign_rhs1 (def_stmt)))
18331
- same_root_var = true;
18332
+ && stmt_may_clobber_ref_p (stmt,
18333
+ gimple_assign_rhs1 (def_stmt)))
18335
+ /* For calls, it is not a problem if USE is among
18336
+ call's arguments or say OBJ_TYPE_REF argument,
18337
+ all those necessarily need to be evaluated before
18338
+ the call that may clobber the memory. But if
18339
+ LHS of the call refers to USE, expansion might
18340
+ evaluate it after the call, prevent TER in that
18342
+ For inline asm, allow TER of loads into input
18343
+ arguments, but disallow TER for USEs that occur
18344
+ somewhere in outputs. */
18345
+ if (is_gimple_call (stmt)
18346
+ || gimple_code (stmt) == GIMPLE_ASM)
18348
+ if (walk_stmt_load_store_ops (stmt, use, NULL,
18349
+ find_ssaname_in_store))
18350
+ same_root_var = true;
18353
+ same_root_var = true;
18357
/* Mark expression as replaceable unless stmt is volatile, or the
18359
===================================================================
18360
--- a/src/gcc/ira.c (.../tags/gcc_4_8_2_release)
18361
+++ b/src/gcc/ira.c (.../branches/gcc-4_8-branch)
18362
@@ -4742,6 +4742,18 @@
18363
if (need_dce && optimize)
18366
+ /* Diagnose uses of the hard frame pointer when it is used as a global
18367
+ register. Often we can get away with letting the user appropriate
18368
+ the frame pointer, but we should let them know when code generation
18369
+ makes that impossible. */
18370
+ if (global_regs[HARD_FRAME_POINTER_REGNUM] && frame_pointer_needed)
18372
+ tree decl = global_regs_decl[HARD_FRAME_POINTER_REGNUM];
18373
+ error_at (DECL_SOURCE_LOCATION (current_function_decl),
18374
+ "frame pointer required, but reserved");
18375
+ inform (DECL_SOURCE_LOCATION (decl), "for %qD", decl);
18378
timevar_pop (TV_IRA);
18382
===================================================================
18383
--- a/src/gcc/rtl.h (.../tags/gcc_4_8_2_release)
18384
+++ b/src/gcc/rtl.h (.../branches/gcc-4_8-branch)
18385
@@ -2789,6 +2789,8 @@
18386
#define fatal_insn_not_found(insn) \
18387
_fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__)
18390
+extern tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
18393
#endif /* ! GCC_RTL_H */
18394
Index: gcc/tree-vect-stmts.c
18395
===================================================================
18396
--- a/src/gcc/tree-vect-stmts.c (.../tags/gcc_4_8_2_release)
18397
+++ b/src/gcc/tree-vect-stmts.c (.../branches/gcc-4_8-branch)
18398
@@ -6054,8 +6054,7 @@
18399
corresponding to that mode. The theory is that any use that
18400
would cause problems with this will disable vectorization anyway. */
18401
else if (!SCALAR_FLOAT_TYPE_P (scalar_type)
18402
- && !INTEGRAL_TYPE_P (scalar_type)
18403
- && !POINTER_TYPE_P (scalar_type))
18404
+ && !INTEGRAL_TYPE_P (scalar_type))
18405
scalar_type = lang_hooks.types.type_for_mode (inner_mode, 1);
18407
/* We can't build a vector type of elements with alignment bigger than
18408
Index: gcc/tree-object-size.c
18409
===================================================================
18410
--- a/src/gcc/tree-object-size.c (.../tags/gcc_4_8_2_release)
18411
+++ b/src/gcc/tree-object-size.c (.../branches/gcc-4_8-branch)
18413
the subobject (innermost array or field with address taken).
18414
object_sizes[2] is lower bound for number of bytes till the end of
18415
the object and object_sizes[3] lower bound for subobject. */
18416
-static unsigned HOST_WIDE_INT *object_sizes[4];
18417
+static vec<unsigned HOST_WIDE_INT> object_sizes[4];
18419
/* Bitmaps what object sizes have been computed already. */
18420
static bitmap computed[4];
18421
@@ -493,7 +493,7 @@
18423
if (TREE_CODE (ptr) == SSA_NAME
18424
&& POINTER_TYPE_P (TREE_TYPE (ptr))
18425
- && object_sizes[object_size_type] != NULL)
18426
+ && computed[object_size_type] != NULL)
18428
if (!bitmap_bit_p (computed[object_size_type], SSA_NAME_VERSION (ptr)))
18430
@@ -501,6 +501,8 @@
18431
bitmap_iterator bi;
18434
+ if (num_ssa_names > object_sizes[object_size_type].length ())
18435
+ object_sizes[object_size_type].safe_grow (num_ssa_names);
18438
fprintf (dump_file, "Computing %s %sobject size for ",
18439
@@ -1162,12 +1164,12 @@
18441
int object_size_type;
18443
- if (object_sizes[0])
18447
for (object_size_type = 0; object_size_type <= 3; object_size_type++)
18449
- object_sizes[object_size_type] = XNEWVEC (unsigned HOST_WIDE_INT, num_ssa_names);
18450
+ object_sizes[object_size_type].safe_grow (num_ssa_names);
18451
computed[object_size_type] = BITMAP_ALLOC (NULL);
18454
@@ -1184,9 +1186,8 @@
18456
for (object_size_type = 0; object_size_type <= 3; object_size_type++)
18458
- free (object_sizes[object_size_type]);
18459
+ object_sizes[object_size_type].release ();
18460
BITMAP_FREE (computed[object_size_type]);
18461
- object_sizes[object_size_type] = NULL;
18465
@@ -1202,18 +1203,11 @@
18466
gimple_stmt_iterator i;
18467
for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
18469
- tree callee, result;
18471
gimple call = gsi_stmt (i);
18473
- if (gimple_code (call) != GIMPLE_CALL)
18474
+ if (!gimple_call_builtin_p (call, BUILT_IN_OBJECT_SIZE))
18477
- callee = gimple_call_fndecl (call);
18479
- || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL
18480
- || DECL_FUNCTION_CODE (callee) != BUILT_IN_OBJECT_SIZE)
18483
init_object_sizes ();
18484
result = fold_call_stmt (call, false);
18486
@@ -1240,20 +1234,32 @@
18490
+ gcc_assert (TREE_CODE (result) == INTEGER_CST);
18492
if (dump_file && (dump_flags & TDF_DETAILS))
18494
fprintf (dump_file, "Simplified\n ");
18495
print_gimple_stmt (dump_file, call, 0, dump_flags);
18496
+ fprintf (dump_file, " to ");
18497
+ print_generic_expr (dump_file, result, 0);
18498
+ fprintf (dump_file, "\n");
18501
- if (!update_call_from_tree (&i, result))
18502
- gcc_unreachable ();
18503
+ tree lhs = gimple_call_lhs (call);
18507
- if (dump_file && (dump_flags & TDF_DETAILS))
18508
+ /* Propagate into all uses and fold those stmts. */
18510
+ imm_use_iterator iter;
18511
+ FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
18513
- fprintf (dump_file, "to\n ");
18514
- print_gimple_stmt (dump_file, gsi_stmt (i), 0, dump_flags);
18515
- fprintf (dump_file, "\n");
18516
+ use_operand_p use_p;
18517
+ FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
18518
+ SET_USE (use_p, result);
18519
+ gimple_stmt_iterator gsi = gsi_for_stmt (use_stmt);
18520
+ fold_stmt (&gsi);
18521
+ update_stmt (gsi_stmt (gsi));
18525
Index: gcc/combine.c
18526
===================================================================
18527
--- a/src/gcc/combine.c (.../tags/gcc_4_8_2_release)
18528
+++ b/src/gcc/combine.c (.../branches/gcc-4_8-branch)
18529
@@ -5798,8 +5798,15 @@
18533
- /* If the code changed, return a whole new comparison. */
18534
- if (new_code != code)
18535
+ /* If the code changed, return a whole new comparison.
18536
+ We also need to avoid using SUBST in cases where
18537
+ simplify_comparison has widened a comparison with a CONST_INT,
18538
+ since in that case the wider CONST_INT may fail the sanity
18539
+ checks in do_SUBST. */
18540
+ if (new_code != code
18541
+ || (CONST_INT_P (op1)
18542
+ && GET_MODE (op0) != GET_MODE (XEXP (x, 0))
18543
+ && GET_MODE (op0) != GET_MODE (XEXP (x, 1))))
18544
return gen_rtx_fmt_ee (new_code, mode, op0, op1);
18546
/* Otherwise, keep this operation, but maybe change its operands.
18547
@@ -7991,7 +7998,7 @@
18548
if (code == CALL || code == ASM_OPERANDS || code == CLOBBER)
18551
- /* We want to perform the operation is its present mode unless we know
18552
+ /* We want to perform the operation in its present mode unless we know
18553
that the operation is valid in MODE, in which case we do the operation
18555
op_mode = ((GET_MODE_CLASS (mode) == GET_MODE_CLASS (GET_MODE (x))
18556
@@ -8427,9 +8434,10 @@
18557
GET_MODE (x), GEN_INT (mask),
18559
if (temp && CONST_INT_P (temp))
18560
- SUBST (XEXP (x, 0),
18561
- force_to_mode (XEXP (x, 0), GET_MODE (x),
18562
- INTVAL (temp), next_select));
18563
+ x = simplify_gen_binary (code, GET_MODE (x),
18564
+ force_to_mode (XEXP (x, 0), GET_MODE (x),
18565
+ INTVAL (temp), next_select),
18570
@@ -8497,14 +8505,16 @@
18571
/* We have no way of knowing if the IF_THEN_ELSE can itself be
18572
written in a narrower mode. We play it safe and do not do so. */
18574
- SUBST (XEXP (x, 1),
18575
- gen_lowpart_or_truncate (GET_MODE (x),
18576
- force_to_mode (XEXP (x, 1), mode,
18577
- mask, next_select)));
18578
- SUBST (XEXP (x, 2),
18579
- gen_lowpart_or_truncate (GET_MODE (x),
18580
- force_to_mode (XEXP (x, 2), mode,
18581
- mask, next_select)));
18582
+ op0 = gen_lowpart_or_truncate (GET_MODE (x),
18583
+ force_to_mode (XEXP (x, 1), mode,
18584
+ mask, next_select));
18585
+ op1 = gen_lowpart_or_truncate (GET_MODE (x),
18586
+ force_to_mode (XEXP (x, 2), mode,
18587
+ mask, next_select));
18588
+ if (op0 != XEXP (x, 1) || op1 != XEXP (x, 2))
18589
+ x = simplify_gen_ternary (IF_THEN_ELSE, GET_MODE (x),
18590
+ GET_MODE (XEXP (x, 0)), XEXP (x, 0),
18595
Index: gcc/tree-flow.h
18596
===================================================================
18597
--- a/src/gcc/tree-flow.h (.../tags/gcc_4_8_2_release)
18598
+++ b/src/gcc/tree-flow.h (.../branches/gcc-4_8-branch)
18599
@@ -425,6 +425,7 @@
18600
basic_block, tree);
18601
void remove_edge_and_dominated_blocks (edge);
18602
bool tree_node_can_be_shared (tree);
18603
+extern unsigned int split_critical_edges (void);
18605
/* In tree-cfgcleanup.c */
18606
extern bitmap cfgcleanup_altered_bbs;
18607
Index: gcc/config.gcc
18608
===================================================================
18609
--- a/src/gcc/config.gcc (.../tags/gcc_4_8_2_release)
18610
+++ b/src/gcc/config.gcc (.../branches/gcc-4_8-branch)
18611
@@ -1761,6 +1761,14 @@
18612
tmake_file="${tmake_file} microblaze/t-microblaze-linux"
18614
microblaze*-*-rtems*)
18617
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
18620
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
18623
tm_file="${tm_file} dbxelf.h"
18624
tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
18625
c_target_objs="${c_target_objs} microblaze-c.o"
18626
@@ -2963,11 +2971,18 @@
18634
- with_cpu="`echo ${target} | sed 's/-.*$//'`"
18635
+ case ${target} in
18643
+ with_cpu="`echo ${target} | sed 's/-.*$//'`"
18649
@@ -3587,7 +3602,7 @@
18651
"" | sparc | sparcv9 | sparc64 \
18653
- | v8 | supersparc | hypersparc | leon \
18654
+ | v8 | supersparc | hypersparc | leon | leon3 \
18655
| sparclite | f930 | f934 | sparclite86x \
18656
| sparclet | tsc701 \
18657
| v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
18658
@@ -3745,15 +3760,6 @@
18659
cxx_target_objs="${cxx_target_objs} sh-c.o"
18663
- if test x$with_tune = x ; then
18667
- # The SPARC port checks this value at compile-time.
18668
- target_cpu_default2="TARGET_CPU_$with_cpu"
18672
# Some standard aliases.
18674
@@ -3765,6 +3771,17 @@
18678
+ if test x$with_tune = x ; then
18679
+ case ${target} in
18689
# The SPARC port checks this value at compile-time.
18690
target_cpu_default2="TARGET_CPU_$with_cpu"
18692
Index: gcc/reginfo.c
18693
===================================================================
18694
--- a/src/gcc/reginfo.c (.../tags/gcc_4_8_2_release)
18695
+++ b/src/gcc/reginfo.c (.../branches/gcc-4_8-branch)
18697
char global_regs[FIRST_PSEUDO_REGISTER];
18699
/* Declaration for the global register. */
18700
-static tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
18701
+tree global_regs_decl[FIRST_PSEUDO_REGISTER];
18703
/* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used
18704
in dataflow more conveniently. */
18705
@@ -620,40 +620,35 @@
18706
mode = GET_MODE_WIDER_MODE (mode))
18707
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
18708
&& HARD_REGNO_MODE_OK (regno, mode)
18709
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
18710
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
18711
+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
18714
- if (found_mode != VOIDmode)
18715
- return found_mode;
18717
for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT);
18719
mode = GET_MODE_WIDER_MODE (mode))
18720
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
18721
&& HARD_REGNO_MODE_OK (regno, mode)
18722
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
18723
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
18724
+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
18727
- if (found_mode != VOIDmode)
18728
- return found_mode;
18730
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_FLOAT);
18732
mode = GET_MODE_WIDER_MODE (mode))
18733
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
18734
&& HARD_REGNO_MODE_OK (regno, mode)
18735
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
18736
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
18737
+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
18740
- if (found_mode != VOIDmode)
18741
- return found_mode;
18743
for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
18745
mode = GET_MODE_WIDER_MODE (mode))
18746
if ((unsigned) hard_regno_nregs[regno][mode] == nregs
18747
&& HARD_REGNO_MODE_OK (regno, mode)
18748
- && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)))
18749
+ && (! call_saved || ! HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
18750
+ && GET_MODE_SIZE (mode) > GET_MODE_SIZE (found_mode))
18753
if (found_mode != VOIDmode)
18754
Index: gcc/Makefile.in
18755
===================================================================
18756
--- a/src/gcc/Makefile.in (.../tags/gcc_4_8_2_release)
18757
+++ b/src/gcc/Makefile.in (.../branches/gcc-4_8-branch)
18758
@@ -3037,7 +3037,7 @@
18759
$(TM_H) coretypes.h $(GIMPLE_H) \
18760
$(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \
18761
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) \
18762
- $(GIMPLE_PRETTY_PRINT_H) langhooks.h
18763
+ $(GIMPLE_PRETTY_PRINT_H) langhooks.h $(OPTABS_H)
18764
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
18765
$(TM_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \
18766
tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h
18767
@@ -3276,12 +3276,12 @@
18768
$(TM_H) $(RTL_H) $(REGS_H) insn-config.h insn-codes.h $(DF_H) \
18769
$(RECOG_H) output.h addresses.h $(REGS_H) hard-reg-set.h $(FLAGS_H) \
18770
$(FUNCTION_H) $(EXPR_H) $(BASIC_BLOCK_H) $(TM_P_H) $(EXCEPT_H) \
18771
- ira.h rtl-error.h $(LRA_INT_H)
18772
+ ira.h rtl-error.h $(LRA_INT_H) $(OPTABS_H)
18773
lra-eliminations.o : lra-eliminations.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
18774
$(TM_H) $(RTL_H) $(REGS_H) insn-config.h $(DF_H) \
18775
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
18776
$(EXPR_H) $(BASIC_BLOCK_H) $(TM_P_H) $(EXCEPT_H) ira.h \
18777
- rtl-error.h $(LRA_INT_H)
18778
+ rtl-error.h $(LRA_INT_H) $(OPTABS_H)
18779
lra-lives.o : lra-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
18780
$(RTL_H) $(REGS_H) insn-config.h $(DF_H) \
18781
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
18782
Index: gcc/gimple.c
18783
===================================================================
18784
--- a/src/gcc/gimple.c (.../tags/gcc_4_8_2_release)
18785
+++ b/src/gcc/gimple.c (.../branches/gcc-4_8-branch)
18786
@@ -3841,42 +3841,46 @@
18788
/* For the statement STMT call the callbacks VISIT_LOAD, VISIT_STORE and
18789
VISIT_ADDR if non-NULL on loads, store and address-taken operands
18790
- passing the STMT, the base of the operand and DATA to it. The base
18791
- will be either a decl, an indirect reference (including TARGET_MEM_REF)
18792
- or the argument of an address expression.
18793
+ passing the STMT, the base of the operand, the operand itself containing
18794
+ the base and DATA to it. The base will be either a decl, an indirect
18795
+ reference (including TARGET_MEM_REF) or the argument of an address
18797
Returns the results of these callbacks or'ed. */
18800
walk_stmt_load_store_addr_ops (gimple stmt, void *data,
18801
- bool (*visit_load)(gimple, tree, void *),
18802
- bool (*visit_store)(gimple, tree, void *),
18803
- bool (*visit_addr)(gimple, tree, void *))
18804
+ walk_stmt_load_store_addr_fn visit_load,
18805
+ walk_stmt_load_store_addr_fn visit_store,
18806
+ walk_stmt_load_store_addr_fn visit_addr)
18810
if (gimple_assign_single_p (stmt))
18813
+ tree lhs, rhs, arg;
18816
- lhs = get_base_loadstore (gimple_assign_lhs (stmt));
18817
+ arg = gimple_assign_lhs (stmt);
18818
+ lhs = get_base_loadstore (arg);
18820
- ret |= visit_store (stmt, lhs, data);
18821
+ ret |= visit_store (stmt, lhs, arg, data);
18823
- rhs = gimple_assign_rhs1 (stmt);
18824
+ arg = gimple_assign_rhs1 (stmt);
18826
while (handled_component_p (rhs))
18827
rhs = TREE_OPERAND (rhs, 0);
18830
if (TREE_CODE (rhs) == ADDR_EXPR)
18831
- ret |= visit_addr (stmt, TREE_OPERAND (rhs, 0), data);
18832
+ ret |= visit_addr (stmt, TREE_OPERAND (rhs, 0), arg, data);
18833
else if (TREE_CODE (rhs) == TARGET_MEM_REF
18834
&& TREE_CODE (TMR_BASE (rhs)) == ADDR_EXPR)
18835
- ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (rhs), 0), data);
18836
+ ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (rhs), 0), arg,
18838
else if (TREE_CODE (rhs) == OBJ_TYPE_REF
18839
&& TREE_CODE (OBJ_TYPE_REF_OBJECT (rhs)) == ADDR_EXPR)
18840
ret |= visit_addr (stmt, TREE_OPERAND (OBJ_TYPE_REF_OBJECT (rhs),
18843
else if (TREE_CODE (rhs) == CONSTRUCTOR)
18846
@@ -3884,23 +3888,23 @@
18848
FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (rhs), ix, val)
18849
if (TREE_CODE (val) == ADDR_EXPR)
18850
- ret |= visit_addr (stmt, TREE_OPERAND (val, 0), data);
18851
+ ret |= visit_addr (stmt, TREE_OPERAND (val, 0), arg, data);
18852
else if (TREE_CODE (val) == OBJ_TYPE_REF
18853
&& TREE_CODE (OBJ_TYPE_REF_OBJECT (val)) == ADDR_EXPR)
18854
ret |= visit_addr (stmt,
18855
TREE_OPERAND (OBJ_TYPE_REF_OBJECT (val),
18859
lhs = gimple_assign_lhs (stmt);
18860
if (TREE_CODE (lhs) == TARGET_MEM_REF
18861
&& TREE_CODE (TMR_BASE (lhs)) == ADDR_EXPR)
18862
- ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (lhs), 0), data);
18863
+ ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (lhs), 0), lhs, data);
18867
rhs = get_base_loadstore (rhs);
18869
- ret |= visit_load (stmt, rhs, data);
18870
+ ret |= visit_load (stmt, rhs, arg, data);
18873
else if (visit_addr
18874
@@ -3913,17 +3917,17 @@
18875
if (op == NULL_TREE)
18877
else if (TREE_CODE (op) == ADDR_EXPR)
18878
- ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
18879
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), op, data);
18880
/* COND_EXPR and VCOND_EXPR rhs1 argument is a comparison
18881
tree with two operands. */
18882
else if (i == 1 && COMPARISON_CLASS_P (op))
18884
if (TREE_CODE (TREE_OPERAND (op, 0)) == ADDR_EXPR)
18885
ret |= visit_addr (stmt, TREE_OPERAND (TREE_OPERAND (op, 0),
18888
if (TREE_CODE (TREE_OPERAND (op, 1)) == ADDR_EXPR)
18889
ret |= visit_addr (stmt, TREE_OPERAND (TREE_OPERAND (op, 1),
18895
@@ -3931,38 +3935,39 @@
18899
- tree lhs = gimple_call_lhs (stmt);
18901
+ tree arg = gimple_call_lhs (stmt);
18904
- lhs = get_base_loadstore (lhs);
18905
+ tree lhs = get_base_loadstore (arg);
18907
- ret |= visit_store (stmt, lhs, data);
18908
+ ret |= visit_store (stmt, lhs, arg, data);
18911
if (visit_load || visit_addr)
18912
for (i = 0; i < gimple_call_num_args (stmt); ++i)
18914
- tree rhs = gimple_call_arg (stmt, i);
18915
+ tree arg = gimple_call_arg (stmt, i);
18917
- && TREE_CODE (rhs) == ADDR_EXPR)
18918
- ret |= visit_addr (stmt, TREE_OPERAND (rhs, 0), data);
18919
+ && TREE_CODE (arg) == ADDR_EXPR)
18920
+ ret |= visit_addr (stmt, TREE_OPERAND (arg, 0), arg, data);
18921
else if (visit_load)
18923
- rhs = get_base_loadstore (rhs);
18924
+ tree rhs = get_base_loadstore (arg);
18926
- ret |= visit_load (stmt, rhs, data);
18927
+ ret |= visit_load (stmt, rhs, arg, data);
18931
&& gimple_call_chain (stmt)
18932
&& TREE_CODE (gimple_call_chain (stmt)) == ADDR_EXPR)
18933
ret |= visit_addr (stmt, TREE_OPERAND (gimple_call_chain (stmt), 0),
18935
+ gimple_call_chain (stmt), data);
18937
&& gimple_call_return_slot_opt_p (stmt)
18938
&& gimple_call_lhs (stmt) != NULL_TREE
18939
&& TREE_ADDRESSABLE (TREE_TYPE (gimple_call_lhs (stmt))))
18940
- ret |= visit_addr (stmt, gimple_call_lhs (stmt), data);
18941
+ ret |= visit_addr (stmt, gimple_call_lhs (stmt),
18942
+ gimple_call_lhs (stmt), data);
18944
else if (gimple_code (stmt) == GIMPLE_ASM)
18946
@@ -3978,7 +3983,7 @@
18947
tree link = gimple_asm_output_op (stmt, i);
18948
tree op = get_base_loadstore (TREE_VALUE (link));
18949
if (op && visit_store)
18950
- ret |= visit_store (stmt, op, data);
18951
+ ret |= visit_store (stmt, op, TREE_VALUE (link), data);
18954
constraint = TREE_STRING_POINTER
18955
@@ -3987,7 +3992,7 @@
18956
parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
18957
&allows_reg, &is_inout);
18958
if (op && !allows_reg && allows_mem)
18959
- ret |= visit_addr (stmt, op, data);
18960
+ ret |= visit_addr (stmt, op, TREE_VALUE (link), data);
18963
if (visit_load || visit_addr)
18964
@@ -3997,14 +4002,14 @@
18965
tree op = TREE_VALUE (link);
18967
&& TREE_CODE (op) == ADDR_EXPR)
18968
- ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
18969
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), op, data);
18970
else if (visit_load || visit_addr)
18972
op = get_base_loadstore (op);
18976
- ret |= visit_load (stmt, op, data);
18977
+ ret |= visit_load (stmt, op, TREE_VALUE (link), data);
18980
constraint = TREE_STRING_POINTER
18981
@@ -4013,7 +4018,8 @@
18983
&allows_mem, &allows_reg);
18984
if (!allows_reg && allows_mem)
18985
- ret |= visit_addr (stmt, op, data);
18986
+ ret |= visit_addr (stmt, op, TREE_VALUE (link),
18991
@@ -4026,12 +4032,12 @@
18994
&& TREE_CODE (op) == ADDR_EXPR)
18995
- ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
18996
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), op, data);
18997
else if (visit_load)
18999
- op = get_base_loadstore (op);
19001
- ret |= visit_load (stmt, op, data);
19002
+ tree base = get_base_loadstore (op);
19004
+ ret |= visit_load (stmt, base, op, data);
19008
@@ -4042,7 +4048,7 @@
19010
tree op = PHI_ARG_DEF (stmt, i);
19011
if (TREE_CODE (op) == ADDR_EXPR)
19012
- ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
19013
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), op, data);
19016
else if (visit_addr
19017
@@ -4050,7 +4056,7 @@
19019
tree op = gimple_goto_dest (stmt);
19020
if (TREE_CODE (op) == ADDR_EXPR)
19021
- ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
19022
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), op, data);
19026
@@ -4061,8 +4067,8 @@
19029
walk_stmt_load_store_ops (gimple stmt, void *data,
19030
- bool (*visit_load)(gimple, tree, void *),
19031
- bool (*visit_store)(gimple, tree, void *))
19032
+ walk_stmt_load_store_addr_fn visit_load,
19033
+ walk_stmt_load_store_addr_fn visit_store)
19035
return walk_stmt_load_store_addr_ops (stmt, data,
19036
visit_load, visit_store, NULL);
19037
@@ -4071,8 +4077,7 @@
19038
/* Helper for gimple_ior_addresses_taken_1. */
19041
-gimple_ior_addresses_taken_1 (gimple stmt ATTRIBUTE_UNUSED,
19042
- tree addr, void *data)
19043
+gimple_ior_addresses_taken_1 (gimple, tree addr, tree, void *data)
19045
bitmap addresses_taken = (bitmap)data;
19046
addr = get_base_address (addr);
19047
Index: gcc/gimple.h
19048
===================================================================
19049
--- a/src/gcc/gimple.h (.../tags/gcc_4_8_2_release)
19050
+++ b/src/gcc/gimple.h (.../branches/gcc-4_8-branch)
19051
@@ -888,13 +888,14 @@
19052
extern alias_set_type gimple_get_alias_set (tree);
19053
extern void count_uses_and_derefs (tree, gimple, unsigned *, unsigned *,
19055
+typedef bool (*walk_stmt_load_store_addr_fn) (gimple, tree, tree, void *);
19056
extern bool walk_stmt_load_store_addr_ops (gimple, void *,
19057
- bool (*)(gimple, tree, void *),
19058
- bool (*)(gimple, tree, void *),
19059
- bool (*)(gimple, tree, void *));
19060
+ walk_stmt_load_store_addr_fn,
19061
+ walk_stmt_load_store_addr_fn,
19062
+ walk_stmt_load_store_addr_fn);
19063
extern bool walk_stmt_load_store_ops (gimple, void *,
19064
- bool (*)(gimple, tree, void *),
19065
- bool (*)(gimple, tree, void *));
19066
+ walk_stmt_load_store_addr_fn,
19067
+ walk_stmt_load_store_addr_fn);
19068
extern bool gimple_ior_addresses_taken (bitmap, gimple);
19069
extern bool gimple_call_builtin_p (gimple, enum built_in_class);
19070
extern bool gimple_call_builtin_p (gimple, enum built_in_function);
19071
Index: gcc/tree-cfg.c
19072
===================================================================
19073
--- a/src/gcc/tree-cfg.c (.../tags/gcc_4_8_2_release)
19074
+++ b/src/gcc/tree-cfg.c (.../branches/gcc-4_8-branch)
19075
@@ -104,7 +104,6 @@
19076
static void assign_discriminator (location_t, basic_block);
19077
static edge gimple_redirect_edge_and_branch (edge, basic_block);
19078
static edge gimple_try_redirect_by_replacing_jump (edge, basic_block);
19079
-static unsigned int split_critical_edges (void);
19081
/* Various helpers. */
19082
static inline bool stmt_starts_bb_p (gimple, gimple);
19083
@@ -3513,11 +3512,10 @@
19087
- /* We use regular PLUS_EXPR and MINUS_EXPR for vectors.
19088
- ??? This just makes the checker happy and may not be what is
19090
- if (TREE_CODE (lhs_type) == VECTOR_TYPE
19091
- && POINTER_TYPE_P (TREE_TYPE (lhs_type)))
19092
+ tree lhs_etype = lhs_type;
19093
+ tree rhs1_etype = rhs1_type;
19094
+ tree rhs2_etype = rhs2_type;
19095
+ if (TREE_CODE (lhs_type) == VECTOR_TYPE)
19097
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
19098
|| TREE_CODE (rhs2_type) != VECTOR_TYPE)
19099
@@ -3525,22 +3523,13 @@
19100
error ("invalid non-vector operands to vector valued plus");
19103
- lhs_type = TREE_TYPE (lhs_type);
19104
- rhs1_type = TREE_TYPE (rhs1_type);
19105
- rhs2_type = TREE_TYPE (rhs2_type);
19106
- /* PLUS_EXPR is commutative, so we might end up canonicalizing
19107
- the pointer to 2nd place. */
19108
- if (POINTER_TYPE_P (rhs2_type))
19110
- tree tem = rhs1_type;
19111
- rhs1_type = rhs2_type;
19114
- goto do_pointer_plus_expr_check;
19115
+ lhs_etype = TREE_TYPE (lhs_type);
19116
+ rhs1_etype = TREE_TYPE (rhs1_type);
19117
+ rhs2_etype = TREE_TYPE (rhs2_type);
19119
- if (POINTER_TYPE_P (lhs_type)
19120
- || POINTER_TYPE_P (rhs1_type)
19121
- || POINTER_TYPE_P (rhs2_type))
19122
+ if (POINTER_TYPE_P (lhs_etype)
19123
+ || POINTER_TYPE_P (rhs1_etype)
19124
+ || POINTER_TYPE_P (rhs2_etype))
19126
error ("invalid (pointer) operands to plus/minus");
19128
@@ -3552,7 +3541,6 @@
19130
case POINTER_PLUS_EXPR:
19132
-do_pointer_plus_expr_check:
19133
if (!POINTER_TYPE_P (rhs1_type)
19134
|| !useless_type_conversion_p (lhs_type, rhs1_type)
19135
|| !ptrofftype_p (rhs2_type))
19136
@@ -7658,7 +7646,7 @@
19138
/* Split all critical edges. */
19140
-static unsigned int
19142
split_critical_edges (void)
19145
Index: gcc/passes.c
19146
===================================================================
19147
--- a/src/gcc/passes.c (.../tags/gcc_4_8_2_release)
19148
+++ b/src/gcc/passes.c (.../branches/gcc-4_8-branch)
19149
@@ -1398,6 +1398,7 @@
19150
/* After CCP we rewrite no longer addressed locals into SSA
19151
form if possible. */
19152
NEXT_PASS (pass_forwprop);
19153
+ NEXT_PASS (pass_object_sizes);
19154
/* pass_build_alias is a dummy pass that ensures that we
19155
execute TODO_rebuild_alias at this point. */
19156
NEXT_PASS (pass_build_alias);
19157
@@ -1435,7 +1436,6 @@
19158
NEXT_PASS (pass_dce);
19159
NEXT_PASS (pass_forwprop);
19160
NEXT_PASS (pass_phiopt);
19161
- NEXT_PASS (pass_object_sizes);
19162
NEXT_PASS (pass_strlen);
19163
NEXT_PASS (pass_ccp);
19164
/* After CCP we rewrite no longer addressed locals into SSA
19165
Index: gcc/tree-ssa-reassoc.c
19166
===================================================================
19167
--- a/src/gcc/tree-ssa-reassoc.c (.../tags/gcc_4_8_2_release)
19168
+++ b/src/gcc/tree-ssa-reassoc.c (.../branches/gcc-4_8-branch)
19169
@@ -1980,8 +1980,15 @@
19171
tem = fold_convert_loc (loc, optype, tem);
19172
gsi = gsi_for_stmt (stmt);
19173
- tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, true,
19175
+ /* In rare cases range->exp can be equal to lhs of stmt.
19176
+ In that case we have to insert after the stmt rather then before
19178
+ if (op == range->exp)
19179
+ tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, false,
19182
+ tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, true,
19185
/* If doing inter-bb range test optimization, update the
19186
stmts immediately. Start with changing the first range test
19187
Index: gcc/config/s390/s390.c
19188
===================================================================
19189
--- a/src/gcc/config/s390/s390.c (.../tags/gcc_4_8_2_release)
19190
+++ b/src/gcc/config/s390/s390.c (.../branches/gcc-4_8-branch)
19191
@@ -407,6 +407,65 @@
19192
bytes on a z10 (or higher) CPU. */
19193
#define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
19195
+static const int s390_hotpatch_trampoline_halfwords_default = 12;
19196
+static const int s390_hotpatch_trampoline_halfwords_max = 1000000;
19197
+static int s390_hotpatch_trampoline_halfwords = -1;
19199
+/* Return the argument of the given hotpatch attribute or the default value if
19200
+ no argument is present. */
19203
+get_hotpatch_attribute (tree hotpatch_attr)
19207
+ args = TREE_VALUE (hotpatch_attr);
19210
+ TREE_INT_CST_LOW (TREE_VALUE (args)):
19211
+ s390_hotpatch_trampoline_halfwords_default;
19214
+/* Check whether the hotpatch attribute is applied to a function and, if it has
19215
+ an argument, the argument is valid. */
19218
+s390_handle_hotpatch_attribute (tree *node, tree name, tree args,
19219
+ int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
19221
+ if (TREE_CODE (*node) != FUNCTION_DECL)
19223
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
19225
+ *no_add_attrs = true;
19229
+ tree expr = TREE_VALUE (args);
19231
+ if (TREE_CODE (expr) != INTEGER_CST
19232
+ || !INTEGRAL_TYPE_P (TREE_TYPE (expr))
19233
+ || TREE_INT_CST_HIGH (expr) != 0
19234
+ || TREE_INT_CST_LOW (expr) > (unsigned int)
19235
+ s390_hotpatch_trampoline_halfwords_max)
19237
+ error ("requested %qE attribute is not a non-negative integer"
19238
+ " constant or too large (max. %d)", name,
19239
+ s390_hotpatch_trampoline_halfwords_max);
19240
+ *no_add_attrs = true;
19244
+ return NULL_TREE;
19247
+static const struct attribute_spec s390_attribute_table[] = {
19248
+ { "hotpatch", 0, 1, true, false, false, s390_handle_hotpatch_attribute, false
19250
+ /* End element. */
19251
+ { NULL, 0, 0, false, false, false, NULL, false }
19254
/* Return the alignment for LABEL. We default to the -falign-labels
19255
value except for the literal pool base label. */
19257
@@ -883,7 +942,8 @@
19259
/* For CCRAWmode put the required cc mask into the second
19261
- if (GET_MODE (XVECEXP (*op0, 0, 0)) == CCRAWmode)
19262
+ if (GET_MODE (XVECEXP (*op0, 0, 0)) == CCRAWmode
19263
+ && INTVAL (*op1) >= 0 && INTVAL (*op1) <= 3)
19264
*op1 = gen_rtx_CONST_INT (VOIDmode, 1 << (3 - INTVAL (*op1)));
19265
*op0 = XVECEXP (*op0, 0, 0);
19267
@@ -1594,6 +1654,46 @@
19269
s390_option_override (void)
19272
+ cl_deferred_option *opt;
19273
+ vec<cl_deferred_option> *v =
19274
+ (vec<cl_deferred_option> *) s390_deferred_options;
19277
+ FOR_EACH_VEC_ELT (*v, i, opt)
19279
+ switch (opt->opt_index)
19281
+ case OPT_mhotpatch:
19282
+ s390_hotpatch_trampoline_halfwords = (opt->value) ?
19283
+ s390_hotpatch_trampoline_halfwords_default : -1;
19285
+ case OPT_mhotpatch_:
19289
+ val = integral_argument (opt->arg);
19292
+ /* argument is not a plain number */
19293
+ error ("argument to %qs should be a non-negative integer",
19297
+ else if (val > s390_hotpatch_trampoline_halfwords_max)
19299
+ error ("argument to %qs is too large (max. %d)",
19300
+ "-mhotpatch=", s390_hotpatch_trampoline_halfwords_max);
19303
+ s390_hotpatch_trampoline_halfwords = val;
19307
+ gcc_unreachable ();
19311
/* Set up function hooks. */
19312
init_machine_status = s390_init_machine_status;
19314
@@ -3015,15 +3115,22 @@
19315
prefer ADDR_REGS. If 'class' is not a superset
19316
of ADDR_REGS, e.g. FP_REGS, reject this reload. */
19318
- /* A larl operand with odd addend will get fixed via secondary
19319
- reload. So don't request it to be pushed into literal
19321
+ /* Symrefs cannot be pushed into the literal pool with -fPIC
19322
+ so we *MUST NOT* return NO_REGS for these cases
19323
+ (s390_cannot_force_const_mem will return true).
19325
+ On the other hand we MUST return NO_REGS for symrefs with
19326
+ invalid addend which might have been pushed to the literal
19327
+ pool (no -fPIC). Usually we would expect them to be
19328
+ handled via secondary reload but this does not happen if
19329
+ they are used as literal pool slot replacement in reload
19330
+ inheritance (see emit_input_reload_insns). */
19331
if (TARGET_CPU_ZARCH
19332
&& GET_CODE (XEXP (op, 0)) == PLUS
19333
&& GET_CODE (XEXP (XEXP(op, 0), 0)) == SYMBOL_REF
19334
&& GET_CODE (XEXP (XEXP(op, 0), 1)) == CONST_INT)
19336
- if (reg_class_subset_p (ADDR_REGS, rclass))
19337
+ if (flag_pic && reg_class_subset_p (ADDR_REGS, rclass))
19341
@@ -5311,6 +5418,102 @@
19342
gcc_unreachable ();
19345
+/* Returns -1 if the function should not be made hotpatchable. Otherwise it
19346
+ returns a number >= 0 that is the desired size of the hotpatch trampoline
19349
+static int s390_function_num_hotpatch_trampoline_halfwords (tree decl,
19354
+ if (DECL_DECLARED_INLINE_P (decl)
19355
+ || DECL_ARTIFICIAL (decl)
19356
+ || MAIN_NAME_P (DECL_NAME (decl)))
19358
+ /* - Explicitly inlined functions cannot be hotpatched.
19359
+ - Artificial functions need not be hotpatched.
19360
+ - Making the main function hotpatchable is useless. */
19363
+ attr = lookup_attribute ("hotpatch", DECL_ATTRIBUTES (decl));
19364
+ if (attr || s390_hotpatch_trampoline_halfwords >= 0)
19366
+ if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (decl)))
19369
+ warning (OPT_Wattributes, "function %qE with the %qs attribute"
19370
+ " is not hotpatchable", DECL_NAME (decl), "always_inline");
19376
+ get_hotpatch_attribute (attr) : s390_hotpatch_trampoline_halfwords;
19383
+/* Hook to determine if one function can safely inline another. */
19386
+s390_can_inline_p (tree caller, tree callee)
19388
+ if (s390_function_num_hotpatch_trampoline_halfwords (callee, false) >= 0)
19391
+ return default_target_can_inline_p (caller, callee);
19394
+/* Write the extra assembler code needed to declare a function properly. */
19397
+s390_asm_output_function_label (FILE *asm_out_file, const char *fname,
19400
+ int hotpatch_trampoline_halfwords = -1;
19404
+ hotpatch_trampoline_halfwords =
19405
+ s390_function_num_hotpatch_trampoline_halfwords (decl, true);
19406
+ if (hotpatch_trampoline_halfwords >= 0
19407
+ && decl_function_context (decl) != NULL_TREE)
19409
+ warning_at (0, DECL_SOURCE_LOCATION (decl),
19410
+ "hotpatch_prologue is not compatible with nested"
19412
+ hotpatch_trampoline_halfwords = -1;
19416
+ if (hotpatch_trampoline_halfwords > 0)
19420
+ /* Add a trampoline code area before the function label and initialize it
19421
+ with two-byte nop instructions. This area can be overwritten with code
19422
+ that jumps to a patched version of the function. */
19423
+ for (i = 0; i < hotpatch_trampoline_halfwords; i++)
19424
+ asm_fprintf (asm_out_file, "\tnopr\t%%r7\n");
19425
+ /* Note: The function label must be aligned so that (a) the bytes of the
19426
+ following nop do not cross a cacheline boundary, and (b) a jump address
19427
+ (eight bytes for 64 bit targets, 4 bytes for 32 bit targets) can be
19428
+ stored directly before the label without crossing a cacheline
19429
+ boundary. All this is necessary to make sure the trampoline code can
19430
+ be changed atomically. */
19433
+ ASM_OUTPUT_LABEL (asm_out_file, fname);
19435
+ /* Output a four-byte nop if hotpatching is enabled. This can be overwritten
19436
+ atomically with a relative backwards jump to the trampoline area. */
19437
+ if (hotpatch_trampoline_halfwords >= 0)
19438
+ asm_fprintf (asm_out_file, "\tnop\t0\n");
19441
/* Output machine-dependent UNSPECs occurring in address constant X
19442
in assembler syntax to stdio stream FILE. Returns true if the
19443
constant X could be recognized, false otherwise. */
19444
@@ -7846,6 +8049,9 @@
19446
bb = BASIC_BLOCK (bb_index);
19451
FOR_BB_INSNS (bb, insn)
19453
rtx ite, cc, pat, target;
19454
@@ -7959,7 +8165,10 @@
19458
- PATTERN (tbegin_insn) = XVECEXP (PATTERN (tbegin_insn), 0, 0);
19459
+ PATTERN (tbegin_insn) = gen_rtx_PARALLEL (VOIDmode,
19461
+ XVECEXP (PATTERN (tbegin_insn), 0, 0),
19462
+ XVECEXP (PATTERN (tbegin_insn), 0, 1)));
19463
INSN_CODE (tbegin_insn) = -1;
19464
df_insn_rescan (tbegin_insn);
19466
@@ -9568,61 +9777,47 @@
19468
s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
19470
- const int CC0 = 1 << 3;
19471
- const int CC1 = 1 << 2;
19472
- const int CC3 = 1 << 0;
19473
- rtx abort_label = gen_label_rtx ();
19474
- rtx leave_label = gen_label_rtx ();
19475
+ rtx retry_plus_two = gen_reg_rtx (SImode);
19476
rtx retry_reg = gen_reg_rtx (SImode);
19477
rtx retry_label = NULL_RTX;
19479
- rtx very_unlikely = GEN_INT (REG_BR_PROB_BASE / 100 - 1);
19481
if (retry != NULL_RTX)
19483
emit_move_insn (retry_reg, retry);
19484
+ emit_insn (gen_addsi3 (retry_plus_two, retry_reg, const2_rtx));
19485
+ emit_insn (gen_addsi3 (retry_reg, retry_reg, const1_rtx));
19486
retry_label = gen_label_rtx ();
19487
emit_label (retry_label);
19490
if (clobber_fprs_p)
19491
- emit_insn (gen_tbegin_1 (tdb,
19492
- gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK)));
19493
+ emit_insn (gen_tbegin_1 (gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK), tdb));
19495
- emit_insn (gen_tbegin_nofloat_1 (tdb,
19496
- gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK)));
19497
+ emit_insn (gen_tbegin_nofloat_1 (gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK),
19500
- jump = s390_emit_jump (abort_label,
19501
- gen_rtx_NE (VOIDmode,
19502
- gen_rtx_REG (CCRAWmode, CC_REGNUM),
19503
- gen_rtx_CONST_INT (VOIDmode, CC0)));
19505
- JUMP_LABEL (jump) = abort_label;
19506
- LABEL_NUSES (abort_label) = 1;
19507
- add_reg_note (jump, REG_BR_PROB, very_unlikely);
19509
- /* Initialize CC return value. */
19510
- emit_move_insn (dest, const0_rtx);
19512
- s390_emit_jump (leave_label, NULL_RTX);
19513
- LABEL_NUSES (leave_label) = 1;
19516
- /* Abort handler code. */
19518
- emit_label (abort_label);
19519
+ emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
19520
+ gen_rtvec (1, gen_rtx_REG (CCRAWmode,
19522
+ UNSPEC_CC_TO_INT));
19523
if (retry != NULL_RTX)
19525
+ const int CC0 = 1 << 3;
19526
+ const int CC1 = 1 << 2;
19527
+ const int CC3 = 1 << 0;
19529
rtx count = gen_reg_rtx (SImode);
19530
+ rtx leave_label = gen_label_rtx ();
19532
+ /* Exit for success and permanent failures. */
19533
jump = s390_emit_jump (leave_label,
19534
gen_rtx_EQ (VOIDmode,
19535
gen_rtx_REG (CCRAWmode, CC_REGNUM),
19536
- gen_rtx_CONST_INT (VOIDmode, CC1 | CC3)));
19537
- LABEL_NUSES (leave_label) = 2;
19538
- add_reg_note (jump, REG_BR_PROB, very_unlikely);
19539
+ gen_rtx_CONST_INT (VOIDmode, CC0 | CC1 | CC3)));
19540
+ LABEL_NUSES (leave_label) = 1;
19542
/* CC2 - transient failure. Perform retry with ppa. */
19543
- emit_move_insn (count, retry);
19544
+ emit_move_insn (count, retry_plus_two);
19545
emit_insn (gen_subsi3 (count, count, retry_reg));
19546
emit_insn (gen_tx_assist (count));
19547
jump = emit_jump_insn (gen_doloop_si64 (retry_label,
19548
@@ -9630,13 +9825,8 @@
19550
JUMP_LABEL (jump) = retry_label;
19551
LABEL_NUSES (retry_label) = 1;
19552
+ emit_label (leave_label);
19555
- emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
19556
- gen_rtvec (1, gen_rtx_REG (CCRAWmode,
19558
- UNSPEC_CC_TO_INT));
19559
- emit_label (leave_label);
19563
@@ -9674,6 +9864,9 @@
19564
s390_init_builtins (void)
19566
tree ftype, uint64_type;
19567
+ tree returns_twice_attr = tree_cons (get_identifier ("returns_twice"),
19569
+ tree noreturn_attr = tree_cons (get_identifier ("noreturn"), NULL, NULL);
19571
/* void foo (void) */
19572
ftype = build_function_type_list (void_type_node, NULL_TREE);
19573
@@ -9684,17 +9877,17 @@
19574
ftype = build_function_type_list (void_type_node, integer_type_node,
19576
add_builtin_function ("__builtin_tabort", ftype,
19577
- S390_BUILTIN_TABORT, BUILT_IN_MD, NULL, NULL_TREE);
19578
+ S390_BUILTIN_TABORT, BUILT_IN_MD, NULL, noreturn_attr);
19579
add_builtin_function ("__builtin_tx_assist", ftype,
19580
S390_BUILTIN_TX_ASSIST, BUILT_IN_MD, NULL, NULL_TREE);
19582
/* int foo (void *) */
19583
ftype = build_function_type_list (integer_type_node, ptr_type_node, NULL_TREE);
19584
add_builtin_function ("__builtin_tbegin", ftype, S390_BUILTIN_TBEGIN,
19585
- BUILT_IN_MD, NULL, NULL_TREE);
19586
+ BUILT_IN_MD, NULL, returns_twice_attr);
19587
add_builtin_function ("__builtin_tbegin_nofloat", ftype,
19588
S390_BUILTIN_TBEGIN_NOFLOAT,
19589
- BUILT_IN_MD, NULL, NULL_TREE);
19590
+ BUILT_IN_MD, NULL, returns_twice_attr);
19592
/* int foo (void *, int) */
19593
ftype = build_function_type_list (integer_type_node, ptr_type_node,
19594
@@ -9702,11 +9895,11 @@
19595
add_builtin_function ("__builtin_tbegin_retry", ftype,
19596
S390_BUILTIN_TBEGIN_RETRY,
19598
- NULL, NULL_TREE);
19599
+ NULL, returns_twice_attr);
19600
add_builtin_function ("__builtin_tbegin_retry_nofloat", ftype,
19601
S390_BUILTIN_TBEGIN_RETRY_NOFLOAT,
19603
- NULL, NULL_TREE);
19604
+ NULL, returns_twice_attr);
19606
/* int foo (void) */
19607
ftype = build_function_type_list (integer_type_node, NULL_TREE);
19608
@@ -11622,6 +11815,12 @@
19609
#undef TARGET_CANONICALIZE_COMPARISON
19610
#define TARGET_CANONICALIZE_COMPARISON s390_canonicalize_comparison
19612
+#undef TARGET_ATTRIBUTE_TABLE
19613
+#define TARGET_ATTRIBUTE_TABLE s390_attribute_table
19615
+#undef TARGET_CAN_INLINE_P
19616
+#define TARGET_CAN_INLINE_P s390_can_inline_p
19618
struct gcc_target targetm = TARGET_INITIALIZER;
19620
#include "gt-s390.h"
19621
Index: gcc/config/s390/s390.h
19622
===================================================================
19623
--- a/src/gcc/config/s390/s390.h (.../tags/gcc_4_8_2_release)
19624
+++ b/src/gcc/config/s390/s390.h (.../branches/gcc-4_8-branch)
19625
@@ -217,7 +217,7 @@
19626
#define STACK_BOUNDARY 64
19628
/* Allocation boundary (in *bits*) for the code of a function. */
19629
-#define FUNCTION_BOUNDARY 32
19630
+#define FUNCTION_BOUNDARY 64
19632
/* There is no point aligning anything to a rounder boundary than this. */
19633
#define BIGGEST_ALIGNMENT 64
19634
@@ -878,6 +878,9 @@
19635
fputc ('\n', (FILE)); \
19638
+#undef ASM_OUTPUT_FUNCTION_LABEL
19639
+#define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL) \
19640
+ s390_asm_output_function_label (FILE, NAME, DECL)
19642
/* Miscellaneous parameters. */
19644
Index: gcc/config/s390/s390.md
19645
===================================================================
19646
--- a/src/gcc/config/s390/s390.md (.../tags/gcc_4_8_2_release)
19647
+++ b/src/gcc/config/s390/s390.md (.../branches/gcc-4_8-branch)
19648
@@ -147,6 +147,7 @@
19650
; Transactional Execution support
19652
+ UNSPECV_TBEGIN_TDB
19656
@@ -9896,9 +9897,10 @@
19658
(define_insn "tbegin_1"
19659
[(set (reg:CCRAW CC_REGNUM)
19660
- (unspec_volatile:CCRAW [(match_operand:BLK 0 "memory_operand" "=Q")
19661
- (match_operand 1 "const_int_operand" " D")]
19662
+ (unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" "D")]
19664
+ (set (match_operand:BLK 1 "memory_operand" "=Q")
19665
+ (unspec_volatile:BLK [(match_dup 0)] UNSPECV_TBEGIN_TDB))
19666
(clobber (reg:DF 16))
19667
(clobber (reg:DF 17))
19668
(clobber (reg:DF 18))
19669
@@ -9917,18 +9919,19 @@
19670
(clobber (reg:DF 31))]
19671
; CONST_OK_FOR_CONSTRAINT_P does not work with D constraint since D is
19672
; not supposed to be used for immediates (see genpreds.c).
19673
- "TARGET_HTM && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 0xffff"
19675
+ "TARGET_HTM && INTVAL (operands[0]) >= 0 && INTVAL (operands[0]) <= 0xffff"
19677
[(set_attr "op_type" "SIL")])
19679
; Same as above but without the FPR clobbers
19680
(define_insn "tbegin_nofloat_1"
19681
[(set (reg:CCRAW CC_REGNUM)
19682
- (unspec_volatile:CCRAW [(match_operand:BLK 0 "memory_operand" "=Q")
19683
- (match_operand 1 "const_int_operand" " D")]
19684
- UNSPECV_TBEGIN))]
19685
- "TARGET_HTM && INTVAL (operands[1]) >= 0 && INTVAL (operands[1]) <= 0xffff"
19687
+ (unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" "D")]
19689
+ (set (match_operand:BLK 1 "memory_operand" "=Q")
19690
+ (unspec_volatile:BLK [(match_dup 0)] UNSPECV_TBEGIN_TDB))]
19691
+ "TARGET_HTM && INTVAL (operands[0]) >= 0 && INTVAL (operands[0]) <= 0xffff"
19693
[(set_attr "op_type" "SIL")])
19696
@@ -10012,15 +10015,12 @@
19697
; Transaction perform processor assist
19699
(define_expand "tx_assist"
19700
- [(set (match_dup 1) (const_int 0))
19701
- (unspec_volatile [(match_operand:SI 0 "register_operand" "")
19703
+ [(unspec_volatile [(match_operand:SI 0 "register_operand" "")
19704
+ (reg:SI GPR0_REGNUM)
19709
- operands[1] = gen_reg_rtx (SImode);
19713
(define_insn "*ppa"
19714
[(unspec_volatile [(match_operand:SI 0 "register_operand" "d")
19715
@@ -10028,5 +10028,5 @@
19716
(match_operand 2 "const_int_operand" "I")]
19718
"TARGET_HTM && INTVAL (operands[2]) < 16"
19721
[(set_attr "op_type" "RRF")])
19722
Index: gcc/config/s390/s390.opt
19723
===================================================================
19724
--- a/src/gcc/config/s390/s390.opt (.../tags/gcc_4_8_2_release)
19725
+++ b/src/gcc/config/s390/s390.opt (.../branches/gcc-4_8-branch)
19727
Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT)
19728
Enable hardware floating point
19731
+Target Report Var(s390_deferred_options) Defer
19732
+Prepend the function label with 12 two-byte Nop instructions, and add a four byte Nop instruction after the label for hotpatching.
19735
+Target RejectNegative Report Joined Var(s390_deferred_options) Defer
19736
+Prepend the function label with the given number of two-byte Nop instructions, and add a four byte Nop instruction after the label for hotpatching.
19739
Target Report RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128)
19740
Use 128-bit long double
19741
Index: gcc/config/s390/htmxlintrin.h
19742
===================================================================
19743
--- a/src/gcc/config/s390/htmxlintrin.h (.../tags/gcc_4_8_2_release)
19744
+++ b/src/gcc/config/s390/htmxlintrin.h (.../branches/gcc-4_8-branch)
19745
@@ -33,13 +33,20 @@
19746
the IBM XL compiler. For documentation please see the "z/OS XL
19747
C/C++ Programming Guide" publically available on the web. */
19749
-extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
19750
+/* FIXME: __TM_simple_begin and __TM_begin should be marked
19751
+ __always_inline__ as well but this currently produces an error
19752
+ since the tbegin builtins are "returns_twice" and setjmp_call_p
19753
+ (calls.c) therefore identifies the functions as calling setjmp.
19754
+ The tree inliner currently refuses to inline functions calling
19758
__TM_simple_begin ()
19760
return __builtin_tbegin_nofloat (0);
19763
-extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
19765
__TM_begin (void* const tdb)
19767
return __builtin_tbegin_nofloat (tdb);
19772
- if (tdb->format == 0)
19773
+ if (tdb->format != 1)
19775
return tdb->nesting_depth;
19779
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19781
- if (tdb->format == 0)
19782
+ if (tdb->format != 1)
19785
return !!(tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE);
19786
@@ -101,7 +108,7 @@
19788
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19790
- if (tdb->format == 0)
19791
+ if (tdb->format != 1)
19794
if (tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE)
19795
@@ -117,7 +124,7 @@
19797
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19799
- return (tdb->format == 0
19800
+ return (tdb->format == 1
19801
&& (tdb->abort_code == 4 /* unfiltered program interruption */
19802
|| tdb->abort_code == 11 /* restricted instruction */));
19804
@@ -127,7 +134,7 @@
19806
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19808
- return (tdb->format == 0
19809
+ return (tdb->format == 1
19810
&& (tdb->abort_code == 7 /* fetch overflow */
19811
|| tdb->abort_code == 8 /* store overflow */));
19813
@@ -137,7 +144,7 @@
19815
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19817
- return tdb->format == 0 && tdb->abort_code == 13; /* depth exceeded */
19818
+ return tdb->format == 1 && tdb->abort_code == 13; /* depth exceeded */
19821
extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
19822
@@ -145,7 +152,7 @@
19824
struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
19826
- return (tdb->format == 0
19827
+ return (tdb->format == 1
19828
&& (tdb->abort_code == 9 /* fetch conflict */
19829
|| tdb->abort_code == 10 /* store conflict */));
19831
Index: gcc/config/s390/s390-protos.h
19832
===================================================================
19833
--- a/src/gcc/config/s390/s390-protos.h (.../tags/gcc_4_8_2_release)
19834
+++ b/src/gcc/config/s390/s390-protos.h (.../branches/gcc-4_8-branch)
19835
@@ -110,5 +110,6 @@
19836
extern int s390_branch_condition_mask (rtx);
19837
extern int s390_compare_and_branch_condition_mask (rtx);
19838
extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT);
19839
+extern void s390_asm_output_function_label (FILE *, const char *, tree);
19841
#endif /* RTX_CODE */
19842
Index: gcc/config/sparc/t-rtems
19843
===================================================================
19844
--- a/src/gcc/config/sparc/t-rtems (.../tags/gcc_4_8_2_release)
19845
+++ b/src/gcc/config/sparc/t-rtems (.../branches/gcc-4_8-branch)
19847
# <http://www.gnu.org/licenses/>.
19850
-MULTILIB_OPTIONS = msoft-float mcpu=v8
19851
-MULTILIB_DIRNAMES = soft v8
19852
+MULTILIB_OPTIONS = msoft-float mcpu=v8/mcpu=leon3
19853
+MULTILIB_DIRNAMES = soft v8 leon3
19854
MULTILIB_MATCHES = msoft-float=mno-fpu
19855
Index: gcc/config/sparc/sparc.md
19856
===================================================================
19857
--- a/src/gcc/config/sparc/sparc.md (.../tags/gcc_4_8_2_release)
19858
+++ b/src/gcc/config/sparc/sparc.md (.../branches/gcc-4_8-branch)
19859
@@ -206,7 +206,7 @@
19860
;; 'f' for all DF/TFmode values, including those that are specific to the v8.
19862
;; Attribute for cpu type.
19863
-;; These must match the values for enum processor_type in sparc.h.
19864
+;; These must match the values of the enum processor_type in sparc-opts.h.
19868
@@ -214,6 +214,7 @@
19876
@@ -5548,7 +5549,7 @@
19877
[(set (match_operand:DF 0 "register_operand" "=e")
19878
(mult:DF (float_extend:DF (match_operand:SF 1 "register_operand" "f"))
19879
(float_extend:DF (match_operand:SF 2 "register_operand" "f"))))]
19880
- "(TARGET_V8 || TARGET_V9) && TARGET_FPU"
19881
+ "(TARGET_V8 || TARGET_V9) && TARGET_FPU && !sparc_fix_ut699"
19882
"fsmuld\t%1, %2, %0"
19883
[(set_attr "type" "fpmul")
19884
(set_attr "fptype" "double")])
19885
@@ -5577,20 +5578,37 @@
19886
"fdivq\t%1, %2, %0"
19887
[(set_attr "type" "fpdivd")])
19889
-(define_insn "divdf3"
19890
+(define_expand "divdf3"
19891
[(set (match_operand:DF 0 "register_operand" "=e")
19892
(div:DF (match_operand:DF 1 "register_operand" "e")
19893
(match_operand:DF 2 "register_operand" "e")))]
19897
+(define_insn "*divdf3_nofix"
19898
+ [(set (match_operand:DF 0 "register_operand" "=e")
19899
+ (div:DF (match_operand:DF 1 "register_operand" "e")
19900
+ (match_operand:DF 2 "register_operand" "e")))]
19901
+ "TARGET_FPU && !sparc_fix_ut699"
19902
"fdivd\t%1, %2, %0"
19903
[(set_attr "type" "fpdivd")
19904
(set_attr "fptype" "double")])
19906
+(define_insn "*divdf3_fix"
19907
+ [(set (match_operand:DF 0 "register_operand" "=e")
19908
+ (div:DF (match_operand:DF 1 "register_operand" "e")
19909
+ (match_operand:DF 2 "register_operand" "e")))]
19910
+ "TARGET_FPU && sparc_fix_ut699"
19911
+ "fdivd\t%1, %2, %0\n\tstd\t%0, [%%sp-8]"
19912
+ [(set_attr "type" "fpdivd")
19913
+ (set_attr "fptype" "double")
19914
+ (set_attr "length" "2")])
19916
(define_insn "divsf3"
19917
[(set (match_operand:SF 0 "register_operand" "=f")
19918
(div:SF (match_operand:SF 1 "register_operand" "f")
19919
(match_operand:SF 2 "register_operand" "f")))]
19921
+ "TARGET_FPU && !sparc_fix_ut699"
19922
"fdivs\t%1, %2, %0"
19923
[(set_attr "type" "fpdivs")])
19925
@@ -5791,18 +5809,33 @@
19927
[(set_attr "type" "fpsqrtd")])
19929
-(define_insn "sqrtdf2"
19930
+(define_expand "sqrtdf2"
19931
[(set (match_operand:DF 0 "register_operand" "=e")
19932
(sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
19936
+(define_insn "*sqrtdf2_nofix"
19937
+ [(set (match_operand:DF 0 "register_operand" "=e")
19938
+ (sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
19939
+ "TARGET_FPU && !sparc_fix_ut699"
19941
[(set_attr "type" "fpsqrtd")
19942
(set_attr "fptype" "double")])
19944
+(define_insn "*sqrtdf2_fix"
19945
+ [(set (match_operand:DF 0 "register_operand" "=e")
19946
+ (sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
19947
+ "TARGET_FPU && sparc_fix_ut699"
19948
+ "fsqrtd\t%1, %0\n\tstd\t%0, [%%sp-8]"
19949
+ [(set_attr "type" "fpsqrtd")
19950
+ (set_attr "fptype" "double")
19951
+ (set_attr "length" "2")])
19953
(define_insn "sqrtsf2"
19954
[(set (match_operand:SF 0 "register_operand" "=f")
19955
(sqrt:SF (match_operand:SF 1 "register_operand" "f")))]
19957
+ "TARGET_FPU && !sparc_fix_ut699"
19959
[(set_attr "type" "fpsqrts")])
19961
Index: gcc/config/sparc/t-sparc
19962
===================================================================
19963
--- a/src/gcc/config/sparc/t-sparc (.../tags/gcc_4_8_2_release)
19964
+++ b/src/gcc/config/sparc/t-sparc (.../branches/gcc-4_8-branch)
19966
insn-codes.h conditions.h output.h $(INSN_ATTR_H) $(FLAGS_H) \
19967
$(FUNCTION_H) $(EXCEPT_H) $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
19968
$(DIAGNOSTIC_CORE_H) $(GGC_H) $(TM_P_H) debug.h $(TARGET_H) \
19969
- $(TARGET_DEF_H) $(COMMON_TARGET_H) $(GIMPLE_H) \
19970
+ $(TARGET_DEF_H) $(COMMON_TARGET_H) $(GIMPLE_H) $(TREE_PASS_H) \
19971
langhooks.h reload.h $(PARAMS_H) $(DF_H) $(OPTS_H) \
19974
Index: gcc/config/sparc/sparc.opt
19975
===================================================================
19976
--- a/src/gcc/config/sparc/sparc.opt (.../tags/gcc_4_8_2_release)
19977
+++ b/src/gcc/config/sparc/sparc.opt (.../branches/gcc-4_8-branch)
19978
@@ -146,6 +146,9 @@
19979
Enum(sparc_processor_type) String(leon) Value(PROCESSOR_LEON)
19982
+Enum(sparc_processor_type) String(leon3) Value(PROCESSOR_LEON3)
19985
Enum(sparc_processor_type) String(sparclite) Value(PROCESSOR_SPARCLITE)
19988
@@ -201,9 +204,19 @@
19989
Enable workaround for single erratum of AT697F processor
19990
(corresponding to erratum #13 of AT697E processor)
19993
+Target Report RejectNegative Var(sparc_fix_ut699)
19994
+Enable workarounds for the errata of the UT699 processor
19996
Mask(LONG_DOUBLE_128)
19997
;; Use 128-bit long double
20000
+;; Generate code for LEON
20003
+;; Generate code for LEON3
20006
;; Generate code for SPARClite
20008
Index: gcc/config/sparc/sync.md
20009
===================================================================
20010
--- a/src/gcc/config/sparc/sync.md (.../tags/gcc_4_8_2_release)
20011
+++ b/src/gcc/config/sparc/sync.md (.../branches/gcc-4_8-branch)
20012
@@ -161,7 +161,8 @@
20013
(match_operand:SI 5 "const_int_operand" "") ;; is_weak
20014
(match_operand:SI 6 "const_int_operand" "") ;; mod_s
20015
(match_operand:SI 7 "const_int_operand" "")] ;; mod_f
20016
- "TARGET_V9 && (<MODE>mode != DImode || TARGET_ARCH64 || TARGET_V8PLUS)"
20017
+ "(TARGET_V9 || TARGET_LEON3)
20018
+ && (<MODE>mode != DImode || TARGET_ARCH64 || TARGET_V8PLUS)"
20020
sparc_expand_compare_and_swap (operands);
20022
@@ -176,7 +177,7 @@
20023
[(match_operand:I48MODE 2 "register_operand" "")
20024
(match_operand:I48MODE 3 "register_operand" "")]
20027
+ "TARGET_V9 || TARGET_LEON3"
20030
(define_insn "*atomic_compare_and_swap<mode>_1"
20031
@@ -187,7 +188,7 @@
20032
[(match_operand:I48MODE 2 "register_operand" "r")
20033
(match_operand:I48MODE 3 "register_operand" "0")]
20035
- "TARGET_V9 && (<MODE>mode == SImode || TARGET_ARCH64)"
20036
+ "(TARGET_V9 || TARGET_LEON3) && (<MODE>mode != DImode || TARGET_ARCH64)"
20037
"cas<modesuffix>\t%1, %2, %0"
20038
[(set_attr "type" "multi")])
20040
@@ -220,7 +221,7 @@
20041
(match_operand:SI 1 "memory_operand" "")
20042
(match_operand:SI 2 "register_operand" "")
20043
(match_operand:SI 3 "const_int_operand" "")]
20044
- "TARGET_V8 || TARGET_V9"
20045
+ "(TARGET_V8 || TARGET_V9) && !sparc_fix_ut699"
20047
enum memmodel model = (enum memmodel) INTVAL (operands[3]);
20049
@@ -236,7 +237,7 @@
20052
(match_operand:SI 2 "register_operand" "0"))]
20053
- "TARGET_V8 || TARGET_V9"
20054
+ "(TARGET_V8 || TARGET_V9) && !sparc_fix_ut699"
20056
[(set_attr "type" "multi")])
20058
@@ -244,7 +245,7 @@
20059
[(match_operand:QI 0 "register_operand" "")
20060
(match_operand:QI 1 "memory_operand" "")
20061
(match_operand:SI 2 "const_int_operand" "")]
20063
+ "!sparc_fix_ut699"
20065
enum memmodel model = (enum memmodel) INTVAL (operands[2]);
20067
@@ -268,6 +269,6 @@
20068
(unspec_volatile:QI [(match_operand:QI 1 "memory_operand" "+m")]
20070
(set (match_dup 1) (const_int -1))]
20072
+ "!sparc_fix_ut699"
20074
[(set_attr "type" "multi")])
20075
Index: gcc/config/sparc/sparc-opts.h
20076
===================================================================
20077
--- a/src/gcc/config/sparc/sparc-opts.h (.../tags/gcc_4_8_2_release)
20078
+++ b/src/gcc/config/sparc/sparc-opts.h (.../branches/gcc-4_8-branch)
20080
PROCESSOR_SUPERSPARC,
20081
PROCESSOR_HYPERSPARC,
20084
PROCESSOR_SPARCLITE,
20087
Index: gcc/config/sparc/sparc.c
20088
===================================================================
20089
--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_4_8_2_release)
20090
+++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-4_8-branch)
20092
#include "params.h"
20095
+#include "tree-pass.h"
20097
/* Processor costs */
20099
@@ -226,6 +227,30 @@
20103
+struct processor_costs leon3_costs = {
20104
+ COSTS_N_INSNS (1), /* int load */
20105
+ COSTS_N_INSNS (1), /* int signed load */
20106
+ COSTS_N_INSNS (1), /* int zeroed load */
20107
+ COSTS_N_INSNS (1), /* float load */
20108
+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
20109
+ COSTS_N_INSNS (1), /* fadd, fsub */
20110
+ COSTS_N_INSNS (1), /* fcmp */
20111
+ COSTS_N_INSNS (1), /* fmov, fmovr */
20112
+ COSTS_N_INSNS (1), /* fmul */
20113
+ COSTS_N_INSNS (14), /* fdivs */
20114
+ COSTS_N_INSNS (15), /* fdivd */
20115
+ COSTS_N_INSNS (22), /* fsqrts */
20116
+ COSTS_N_INSNS (23), /* fsqrtd */
20117
+ COSTS_N_INSNS (5), /* imul */
20118
+ COSTS_N_INSNS (5), /* imulX */
20119
+ 0, /* imul bit factor */
20120
+ COSTS_N_INSNS (35), /* idiv */
20121
+ COSTS_N_INSNS (35), /* idivX */
20122
+ COSTS_N_INSNS (1), /* movcc/movr */
20123
+ 0, /* shift penalty */
20127
struct processor_costs sparclet_costs = {
20128
COSTS_N_INSNS (3), /* int load */
20129
COSTS_N_INSNS (3), /* int signed load */
20130
@@ -538,7 +563,6 @@
20131
HOST_WIDE_INT, tree);
20132
static bool sparc_can_output_mi_thunk (const_tree, HOST_WIDE_INT,
20133
HOST_WIDE_INT, const_tree);
20134
-static void sparc_reorg (void);
20135
static struct machine_function * sparc_init_machine_status (void);
20136
static bool sparc_cannot_force_const_mem (enum machine_mode, rtx);
20137
static rtx sparc_tls_get_addr (void);
20138
@@ -680,9 +704,6 @@
20139
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
20140
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK sparc_can_output_mi_thunk
20142
-#undef TARGET_MACHINE_DEPENDENT_REORG
20143
-#define TARGET_MACHINE_DEPENDENT_REORG sparc_reorg
20145
#undef TARGET_RTX_COSTS
20146
#define TARGET_RTX_COSTS sparc_rtx_costs
20147
#undef TARGET_ADDRESS_COST
20148
@@ -804,6 +825,206 @@
20150
struct gcc_target targetm = TARGET_INITIALIZER;
20152
+/* Return the memory reference contained in X if any, zero otherwise. */
20157
+ if (GET_CODE (x) == SIGN_EXTEND || GET_CODE (x) == ZERO_EXTEND)
20166
+/* We use a machine specific pass to enable workarounds for errata.
20167
+ We need to have the (essentially) final form of the insn stream in order
20168
+ to properly detect the various hazards. Therefore, this machine specific
20169
+ pass runs as late as possible. The pass is inserted in the pass pipeline
20170
+ at the end of sparc_option_override. */
20173
+sparc_gate_work_around_errata (void)
20175
+ /* The only errata we handle are those of the AT697F and UT699. */
20176
+ return sparc_fix_at697f != 0 || sparc_fix_ut699 != 0;
20179
+static unsigned int
20180
+sparc_do_work_around_errata (void)
20184
+ /* Force all instructions to be split into their final form. */
20185
+ split_all_insns_noflow ();
20187
+ /* Now look for specific patterns in the insn stream. */
20188
+ for (insn = get_insns (); insn; insn = next)
20190
+ bool insert_nop = false;
20193
+ /* Look into the instruction in a delay slot. */
20194
+ if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE)
20195
+ insn = XVECEXP (PATTERN (insn), 0, 1);
20197
+ /* Look for a single-word load into an odd-numbered FP register. */
20198
+ if (sparc_fix_at697f
20199
+ && NONJUMP_INSN_P (insn)
20200
+ && (set = single_set (insn)) != NULL_RTX
20201
+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
20202
+ && MEM_P (SET_SRC (set))
20203
+ && REG_P (SET_DEST (set))
20204
+ && REGNO (SET_DEST (set)) > 31
20205
+ && REGNO (SET_DEST (set)) % 2 != 0)
20207
+ /* The wrong dependency is on the enclosing double register. */
20208
+ unsigned int x = REGNO (SET_DEST (set)) - 1;
20209
+ unsigned int src1, src2, dest;
20212
+ /* If the insn has a delay slot, then it cannot be problematic. */
20213
+ next = next_active_insn (insn);
20216
+ if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
20219
+ extract_insn (next);
20220
+ code = INSN_CODE (next);
20224
+ case CODE_FOR_adddf3:
20225
+ case CODE_FOR_subdf3:
20226
+ case CODE_FOR_muldf3:
20227
+ case CODE_FOR_divdf3:
20228
+ dest = REGNO (recog_data.operand[0]);
20229
+ src1 = REGNO (recog_data.operand[1]);
20230
+ src2 = REGNO (recog_data.operand[2]);
20231
+ if (src1 != src2)
20234
+ ld [address], %fx+1
20235
+ FPOPd %f{x,y}, %f{y,x}, %f{x,y} */
20236
+ if ((src1 == x || src2 == x)
20237
+ && (dest == src1 || dest == src2))
20238
+ insert_nop = true;
20243
+ ld [address], %fx+1
20244
+ FPOPd %fx, %fx, %fx */
20247
+ && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
20248
+ insert_nop = true;
20252
+ case CODE_FOR_sqrtdf2:
20253
+ dest = REGNO (recog_data.operand[0]);
20254
+ src1 = REGNO (recog_data.operand[1]);
20256
+ ld [address], %fx+1
20257
+ fsqrtd %fx, %fx */
20258
+ if (src1 == x && dest == src1)
20259
+ insert_nop = true;
20267
+ /* Look for a single-word load into an integer register. */
20268
+ else if (sparc_fix_ut699
20269
+ && NONJUMP_INSN_P (insn)
20270
+ && (set = single_set (insn)) != NULL_RTX
20271
+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) <= 4
20272
+ && mem_ref (SET_SRC (set)) != NULL_RTX
20273
+ && REG_P (SET_DEST (set))
20274
+ && REGNO (SET_DEST (set)) < 32)
20276
+ /* There is no problem if the second memory access has a data
20277
+ dependency on the first single-cycle load. */
20278
+ rtx x = SET_DEST (set);
20280
+ /* If the insn has a delay slot, then it cannot be problematic. */
20281
+ next = next_active_insn (insn);
20284
+ if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
20287
+ /* Look for a second memory access to/from an integer register. */
20288
+ if ((set = single_set (next)) != NULL_RTX)
20290
+ rtx src = SET_SRC (set);
20291
+ rtx dest = SET_DEST (set);
20294
+ /* LDD is affected. */
20295
+ if ((mem = mem_ref (src)) != NULL_RTX
20297
+ && REGNO (dest) < 32
20298
+ && !reg_mentioned_p (x, XEXP (mem, 0)))
20299
+ insert_nop = true;
20301
+ /* STD is *not* affected. */
20302
+ else if ((mem = mem_ref (dest)) != NULL_RTX
20303
+ && GET_MODE_SIZE (GET_MODE (mem)) <= 4
20304
+ && (src == const0_rtx
20306
+ && REGNO (src) < 32
20307
+ && REGNO (src) != REGNO (x)))
20308
+ && !reg_mentioned_p (x, XEXP (mem, 0)))
20309
+ insert_nop = true;
20314
+ next = NEXT_INSN (insn);
20317
+ emit_insn_before (gen_nop (), next);
20323
+struct rtl_opt_pass pass_work_around_errata =
20327
+ "errata", /* name */
20328
+ OPTGROUP_NONE, /* optinfo_flags */
20329
+ sparc_gate_work_around_errata, /* gate */
20330
+ sparc_do_work_around_errata, /* execute */
20333
+ 0, /* static_pass_number */
20334
+ TV_MACH_DEP, /* tv_id */
20335
+ 0, /* properties_required */
20336
+ 0, /* properties_provided */
20337
+ 0, /* properties_destroyed */
20338
+ 0, /* todo_flags_start */
20339
+ TODO_verify_rtl_sharing, /* todo_flags_finish */
20343
+struct register_pass_info insert_pass_work_around_errata =
20345
+ &pass_work_around_errata.pass, /* pass */
20346
+ "dbr", /* reference_pass_name */
20347
+ 1, /* ref_pass_instance_number */
20348
+ PASS_POS_INSERT_AFTER /* po_op */
20351
+/* Helpers for TARGET_DEBUG_OPTIONS. */
20353
dump_target_flag_bits (const int flags)
20355
@@ -888,6 +1109,7 @@
20356
{ TARGET_CPU_supersparc, PROCESSOR_SUPERSPARC },
20357
{ TARGET_CPU_hypersparc, PROCESSOR_HYPERSPARC },
20358
{ TARGET_CPU_leon, PROCESSOR_LEON },
20359
+ { TARGET_CPU_leon3, PROCESSOR_LEON3 },
20360
{ TARGET_CPU_sparclite, PROCESSOR_F930 },
20361
{ TARGET_CPU_sparclite86x, PROCESSOR_SPARCLITE86X },
20362
{ TARGET_CPU_sparclet, PROCESSOR_TSC701 },
20363
@@ -902,7 +1124,7 @@
20365
const struct cpu_default *def;
20366
/* Table of values for -m{cpu,tune}=. This must match the order of
20367
- the PROCESSOR_* enumeration. */
20368
+ the enum processor_type in sparc-opts.h. */
20369
static struct cpu_table {
20370
const char *const name;
20372
@@ -914,8 +1136,8 @@
20373
/* TI TMS390Z55 supersparc */
20374
{ "supersparc", MASK_ISA, MASK_V8 },
20375
{ "hypersparc", MASK_ISA, MASK_V8|MASK_FPU },
20377
- { "leon", MASK_ISA, MASK_V8|MASK_FPU },
20378
+ { "leon", MASK_ISA, MASK_V8|MASK_LEON|MASK_FPU },
20379
+ { "leon3", MASK_ISA, MASK_V8|MASK_LEON3|MASK_FPU },
20380
{ "sparclite", MASK_ISA, MASK_SPARCLITE },
20381
/* The Fujitsu MB86930 is the original sparclite chip, with no FPU. */
20382
{ "f930", MASK_ISA|MASK_FPU, MASK_SPARCLITE },
20383
@@ -1075,6 +1297,9 @@
20384
#ifndef HAVE_AS_SPARC4
20387
+#ifndef HAVE_AS_LEON
20388
+ & ~(MASK_LEON | MASK_LEON3)
20392
/* If -mfpu or -mno-fpu was explicitly used, don't override with
20393
@@ -1164,6 +1389,9 @@
20394
case PROCESSOR_LEON:
20395
sparc_costs = &leon_costs;
20397
+ case PROCESSOR_LEON3:
20398
+ sparc_costs = &leon3_costs;
20400
case PROCESSOR_SPARCLET:
20401
case PROCESSOR_TSC701:
20402
sparc_costs = &sparclet_costs;
20403
@@ -1200,6 +1428,10 @@
20404
/* Choose the most relaxed model for the processor. */
20405
else if (TARGET_V9)
20406
sparc_memory_model = SMM_RMO;
20407
+ else if (TARGET_LEON3)
20408
+ sparc_memory_model = SMM_TSO;
20409
+ else if (TARGET_LEON)
20410
+ sparc_memory_model = SMM_SC;
20411
else if (TARGET_V8)
20412
sparc_memory_model = SMM_PSO;
20414
@@ -1241,6 +1473,13 @@
20415
pessimizes for double floating-point registers. */
20416
if (!global_options_set.x_flag_ira_share_save_slots)
20417
flag_ira_share_save_slots = 0;
20419
+ /* We register a machine specific pass to work around errata, if any.
20420
+ The pass mut be scheduled as late as possible so that we have the
20421
+ (essentially) final form of the insn stream to work on.
20422
+ Registering the pass must be done at start up. It's convenient to
20424
+ register_pass (&insert_pass_work_around_errata);
20427
/* Miscellaneous utilities. */
20428
@@ -10355,7 +10594,8 @@
20429
tmp = e0.add_with_sign (tmp, false, &add1_ovf);
20430
if (tmp.is_negative ())
20431
tmp = tmp.neg_with_overflow (&neg2_ovf);
20434
+ neg2_ovf = false;
20435
result = result.add_with_sign (tmp, false, &add2_ovf);
20436
overflow |= neg1_ovf | neg2_ovf | add1_ovf | add2_ovf;
20438
@@ -10897,107 +11137,6 @@
20439
return (vcall_offset >= -32768 || ! fixed_regs[5]);
20442
-/* We use the machine specific reorg pass to enable workarounds for errata. */
20445
-sparc_reorg (void)
20449
- /* The only erratum we handle for now is that of the AT697F processor. */
20450
- if (!sparc_fix_at697f)
20453
- /* We need to have the (essentially) final form of the insn stream in order
20454
- to properly detect the various hazards. Run delay slot scheduling. */
20455
- if (optimize > 0 && flag_delayed_branch)
20457
- cleanup_barriers ();
20458
- dbr_schedule (get_insns ());
20461
- /* Now look for specific patterns in the insn stream. */
20462
- for (insn = get_insns (); insn; insn = next)
20464
- bool insert_nop = false;
20467
- /* Look for a single-word load into an odd-numbered FP register. */
20468
- if (NONJUMP_INSN_P (insn)
20469
- && (set = single_set (insn)) != NULL_RTX
20470
- && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
20471
- && MEM_P (SET_SRC (set))
20472
- && REG_P (SET_DEST (set))
20473
- && REGNO (SET_DEST (set)) > 31
20474
- && REGNO (SET_DEST (set)) % 2 != 0)
20476
- /* The wrong dependency is on the enclosing double register. */
20477
- unsigned int x = REGNO (SET_DEST (set)) - 1;
20478
- unsigned int src1, src2, dest;
20481
- /* If the insn has a delay slot, then it cannot be problematic. */
20482
- next = next_active_insn (insn);
20483
- if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
20487
- extract_insn (next);
20488
- code = INSN_CODE (next);
20493
- case CODE_FOR_adddf3:
20494
- case CODE_FOR_subdf3:
20495
- case CODE_FOR_muldf3:
20496
- case CODE_FOR_divdf3:
20497
- dest = REGNO (recog_data.operand[0]);
20498
- src1 = REGNO (recog_data.operand[1]);
20499
- src2 = REGNO (recog_data.operand[2]);
20500
- if (src1 != src2)
20503
- ld [address], %fx+1
20504
- FPOPd %f{x,y}, %f{y,x}, %f{x,y} */
20505
- if ((src1 == x || src2 == x)
20506
- && (dest == src1 || dest == src2))
20507
- insert_nop = true;
20512
- ld [address], %fx+1
20513
- FPOPd %fx, %fx, %fx */
20516
- && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
20517
- insert_nop = true;
20521
- case CODE_FOR_sqrtdf2:
20522
- dest = REGNO (recog_data.operand[0]);
20523
- src1 = REGNO (recog_data.operand[1]);
20525
- ld [address], %fx+1
20526
- fsqrtd %fx, %fx */
20527
- if (src1 == x && dest == src1)
20528
- insert_nop = true;
20536
- next = NEXT_INSN (insn);
20539
- emit_insn_after (gen_nop (), insn);
20543
/* How to allocate a 'struct machine_function'. */
20545
static struct machine_function *
20546
Index: gcc/config/sparc/leon.md
20547
===================================================================
20548
--- a/src/gcc/config/sparc/leon.md (.../tags/gcc_4_8_2_release)
20549
+++ b/src/gcc/config/sparc/leon.md (.../branches/gcc-4_8-branch)
20550
@@ -17,40 +17,48 @@
20551
;; along with GCC; see the file COPYING3. If not see
20552
;; <http://www.gnu.org/licenses/>.
20554
+;; Leon is a single-issue processor.
20556
(define_automaton "leon")
20558
-(define_cpu_unit "leon_memory, leon_fpalu" "leon")
20559
-(define_cpu_unit "leon_fpmds" "leon")
20560
-(define_cpu_unit "write_buf" "leon")
20561
+(define_cpu_unit "leon_memory" "leon")
20563
(define_insn_reservation "leon_load" 1
20564
- (and (eq_attr "cpu" "leon")
20565
- (eq_attr "type" "load,sload,fpload"))
20566
+ (and (eq_attr "cpu" "leon") (eq_attr "type" "load,sload"))
20569
-(define_insn_reservation "leon_store" 1
20570
- (and (eq_attr "cpu" "leon")
20571
- (eq_attr "type" "store,fpstore"))
20572
- "leon_memory+write_buf")
20574
-(define_insn_reservation "leon_fp_alu" 1
20575
- (and (eq_attr "cpu" "leon")
20576
- (eq_attr "type" "fp,fpmove"))
20577
- "leon_fpalu, nothing")
20578
+;; Use a double reservation to work around the load pipeline hazard on UT699.
20579
+(define_insn_reservation "leon3_load" 1
20580
+ (and (eq_attr "cpu" "leon3") (eq_attr "type" "load,sload"))
20583
-(define_insn_reservation "leon_fp_mult" 1
20584
- (and (eq_attr "cpu" "leon")
20585
- (eq_attr "type" "fpmul"))
20586
- "leon_fpmds, nothing")
20587
+(define_insn_reservation "leon_store" 2
20588
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "store"))
20591
-(define_insn_reservation "leon_fp_div" 16
20592
- (and (eq_attr "cpu" "leon")
20593
- (eq_attr "type" "fpdivs,fpdivd"))
20594
- "leon_fpmds, nothing*15")
20595
+;; This describes Gaisler Research's FPU
20597
-(define_insn_reservation "leon_fp_sqrt" 23
20598
- (and (eq_attr "cpu" "leon")
20599
- (eq_attr "type" "fpsqrts,fpsqrtd"))
20600
- "leon_fpmds, nothing*21")
20601
+(define_automaton "grfpu")
20603
+(define_cpu_unit "grfpu_alu" "grfpu")
20604
+(define_cpu_unit "grfpu_ds" "grfpu")
20606
+(define_insn_reservation "leon_fp_alu" 4
20607
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fp,fpcmp,fpmul"))
20608
+ "grfpu_alu, nothing*3")
20610
+(define_insn_reservation "leon_fp_divs" 16
20611
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpdivs"))
20612
+ "grfpu_ds*14, nothing*2")
20614
+(define_insn_reservation "leon_fp_divd" 17
20615
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpdivd"))
20616
+ "grfpu_ds*15, nothing*2")
20618
+(define_insn_reservation "leon_fp_sqrts" 24
20619
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpsqrts"))
20620
+ "grfpu_ds*22, nothing*2")
20622
+(define_insn_reservation "leon_fp_sqrtd" 25
20623
+ (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpsqrtd"))
20624
+ "grfpu_ds*23, nothing*2")
20625
Index: gcc/config/sparc/sparc.h
20626
===================================================================
20627
--- a/src/gcc/config/sparc/sparc.h (.../tags/gcc_4_8_2_release)
20628
+++ b/src/gcc/config/sparc/sparc.h (.../branches/gcc-4_8-branch)
20629
@@ -136,21 +136,22 @@
20630
#define TARGET_CPU_supersparc 2
20631
#define TARGET_CPU_hypersparc 3
20632
#define TARGET_CPU_leon 4
20633
-#define TARGET_CPU_sparclite 5
20634
-#define TARGET_CPU_f930 5 /* alias */
20635
-#define TARGET_CPU_f934 5 /* alias */
20636
-#define TARGET_CPU_sparclite86x 6
20637
-#define TARGET_CPU_sparclet 7
20638
-#define TARGET_CPU_tsc701 7 /* alias */
20639
-#define TARGET_CPU_v9 8 /* generic v9 implementation */
20640
-#define TARGET_CPU_sparcv9 8 /* alias */
20641
-#define TARGET_CPU_sparc64 8 /* alias */
20642
-#define TARGET_CPU_ultrasparc 9
20643
-#define TARGET_CPU_ultrasparc3 10
20644
-#define TARGET_CPU_niagara 11
20645
-#define TARGET_CPU_niagara2 12
20646
-#define TARGET_CPU_niagara3 13
20647
-#define TARGET_CPU_niagara4 14
20648
+#define TARGET_CPU_leon3 5
20649
+#define TARGET_CPU_sparclite 6
20650
+#define TARGET_CPU_f930 6 /* alias */
20651
+#define TARGET_CPU_f934 6 /* alias */
20652
+#define TARGET_CPU_sparclite86x 7
20653
+#define TARGET_CPU_sparclet 8
20654
+#define TARGET_CPU_tsc701 8 /* alias */
20655
+#define TARGET_CPU_v9 9 /* generic v9 implementation */
20656
+#define TARGET_CPU_sparcv9 9 /* alias */
20657
+#define TARGET_CPU_sparc64 9 /* alias */
20658
+#define TARGET_CPU_ultrasparc 10
20659
+#define TARGET_CPU_ultrasparc3 11
20660
+#define TARGET_CPU_niagara 12
20661
+#define TARGET_CPU_niagara2 13
20662
+#define TARGET_CPU_niagara3 14
20663
+#define TARGET_CPU_niagara4 15
20665
#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 \
20666
|| TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc \
20667
@@ -232,9 +233,10 @@
20668
#define ASM_CPU32_DEFAULT_SPEC ""
20671
-#if TARGET_CPU_DEFAULT == TARGET_CPU_leon
20672
+#if TARGET_CPU_DEFAULT == TARGET_CPU_leon \
20673
+ || TARGET_CPU_DEFAULT == TARGET_CPU_leon3
20674
#define CPP_CPU32_DEFAULT_SPEC "-D__leon__ -D__sparc_v8__"
20675
-#define ASM_CPU32_DEFAULT_SPEC ""
20676
+#define ASM_CPU32_DEFAULT_SPEC AS_LEON_FLAG
20680
@@ -282,6 +284,7 @@
20681
%{mcpu=supersparc:-D__supersparc__ -D__sparc_v8__} \
20682
%{mcpu=hypersparc:-D__hypersparc__ -D__sparc_v8__} \
20683
%{mcpu=leon:-D__leon__ -D__sparc_v8__} \
20684
+%{mcpu=leon3:-D__leon__ -D__sparc_v8__} \
20685
%{mcpu=v9:-D__sparc_v9__} \
20686
%{mcpu=ultrasparc:-D__sparc_v9__} \
20687
%{mcpu=ultrasparc3:-D__sparc_v9__} \
20688
@@ -329,7 +332,8 @@
20690
%{mcpu=supersparc:-Av8} \
20691
%{mcpu=hypersparc:-Av8} \
20692
-%{mcpu=leon:-Av8} \
20693
+%{mcpu=leon:" AS_LEON_FLAG "} \
20694
+%{mcpu=leon3:" AS_LEON_FLAG "} \
20695
%{mv8plus:-Av8plus} \
20697
%{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
20698
@@ -1754,6 +1758,12 @@
20699
#define AS_NIAGARA4_FLAG "-Av9" AS_NIAGARA3_FLAG
20702
+#ifdef HAVE_AS_LEON
20703
+#define AS_LEON_FLAG "-Aleon"
20705
+#define AS_LEON_FLAG "-Av8"
20708
/* We use gcc _mcount for profiling. */
20709
#define NO_PROFILE_COUNTERS 0
20711
Index: gcc/config/i386/i386.h
20712
===================================================================
20713
--- a/src/gcc/config/i386/i386.h (.../tags/gcc_4_8_2_release)
20714
+++ b/src/gcc/config/i386/i386.h (.../branches/gcc-4_8-branch)
20715
@@ -197,10 +197,10 @@
20717
/* Macros used in the machine description to test the flags. */
20719
-/* configure can arrange to make this 2, to force a 486. */
20720
+/* configure can arrange to change it. */
20722
#ifndef TARGET_CPU_DEFAULT
20723
-#define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_generic
20724
+#define TARGET_CPU_DEFAULT PROCESSOR_GENERIC32
20727
#ifndef TARGET_FPMATH_DEFAULT
20728
@@ -591,43 +591,6 @@
20729
/* Target Pragmas. */
20730
#define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas ()
20732
-enum target_cpu_default
20734
- TARGET_CPU_DEFAULT_generic = 0,
20736
- TARGET_CPU_DEFAULT_i386,
20737
- TARGET_CPU_DEFAULT_i486,
20738
- TARGET_CPU_DEFAULT_pentium,
20739
- TARGET_CPU_DEFAULT_pentium_mmx,
20740
- TARGET_CPU_DEFAULT_pentiumpro,
20741
- TARGET_CPU_DEFAULT_pentium2,
20742
- TARGET_CPU_DEFAULT_pentium3,
20743
- TARGET_CPU_DEFAULT_pentium4,
20744
- TARGET_CPU_DEFAULT_pentium_m,
20745
- TARGET_CPU_DEFAULT_prescott,
20746
- TARGET_CPU_DEFAULT_nocona,
20747
- TARGET_CPU_DEFAULT_core2,
20748
- TARGET_CPU_DEFAULT_corei7,
20749
- TARGET_CPU_DEFAULT_haswell,
20750
- TARGET_CPU_DEFAULT_atom,
20752
- TARGET_CPU_DEFAULT_geode,
20753
- TARGET_CPU_DEFAULT_k6,
20754
- TARGET_CPU_DEFAULT_k6_2,
20755
- TARGET_CPU_DEFAULT_k6_3,
20756
- TARGET_CPU_DEFAULT_athlon,
20757
- TARGET_CPU_DEFAULT_athlon_sse,
20758
- TARGET_CPU_DEFAULT_k8,
20759
- TARGET_CPU_DEFAULT_amdfam10,
20760
- TARGET_CPU_DEFAULT_bdver1,
20761
- TARGET_CPU_DEFAULT_bdver2,
20762
- TARGET_CPU_DEFAULT_bdver3,
20763
- TARGET_CPU_DEFAULT_btver1,
20764
- TARGET_CPU_DEFAULT_btver2,
20766
- TARGET_CPU_DEFAULT_max
20770
#define CC1_SPEC "%(cc1_cpu) "
20772
@@ -2089,32 +2052,33 @@
20773
with x86-64 medium memory model */
20774
#define DEFAULT_LARGE_SECTION_THRESHOLD 65536
20776
-/* Which processor to tune code generation for. */
20777
+/* Which processor to tune code generation for. These must be in sync
20778
+ with processor_target_table in i386.c. */
20780
enum processor_type
20782
- PROCESSOR_I386 = 0, /* 80386 */
20783
+ PROCESSOR_GENERIC32 = 0,
20784
+ PROCESSOR_GENERIC64,
20785
+ PROCESSOR_I386, /* 80386 */
20786
PROCESSOR_I486, /* 80486DX, 80486SX, 80486DX[24] */
20788
PROCESSOR_PENTIUMPRO,
20791
- PROCESSOR_ATHLON,
20792
PROCESSOR_PENTIUM4,
20798
- PROCESSOR_GENERIC32,
20799
- PROCESSOR_GENERIC64,
20803
+ PROCESSOR_ATHLON,
20805
PROCESSOR_AMDFAM10,
20815
Index: gcc/config/i386/i386.md
20816
===================================================================
20817
--- a/src/gcc/config/i386/i386.md (.../tags/gcc_4_8_2_release)
20818
+++ b/src/gcc/config/i386/i386.md (.../branches/gcc-4_8-branch)
20819
@@ -363,6 +363,13 @@
20820
(const_string "unknown")]
20821
(const_string "integer")))
20823
+;; The minimum required alignment of vector mode memory operands of the SSE
20824
+;; (non-VEX/EVEX) instruction in bits, if it is different from
20825
+;; GET_MODE_ALIGNMENT of the operand, otherwise 0. If an instruction has
20826
+;; multiple alternatives, this should be conservative maximum of those minimum
20827
+;; required alignments.
20828
+(define_attr "ssememalign" "" (const_int 0))
20830
;; The (bounding maximum) length of an instruction immediate.
20831
(define_attr "length_immediate" ""
20832
(cond [(eq_attr "type" "incdec,setcc,icmov,str,lea,other,multi,idiv,leave,
20833
@@ -1570,7 +1577,7 @@
20834
split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]);
20836
operands[1] = gen_lowpart (DImode, operands[2]);
20837
- operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
20838
+ operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx,
20842
@@ -1587,7 +1594,7 @@
20843
split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]);
20845
operands[1] = gen_lowpart (DImode, operands[2]);
20846
- operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx,
20847
+ operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx,
20851
@@ -6589,7 +6596,7 @@
20852
(set_attr "use_carry" "1")
20853
(set_attr "mode" "<MODE>")])
20855
-;; Overflow setting add and subtract instructions
20856
+;; Overflow setting add instructions
20858
(define_insn "*add<mode>3_cconly_overflow"
20859
[(set (reg:CCC FLAGS_REG)
20860
@@ -6604,43 +6611,31 @@
20861
[(set_attr "type" "alu")
20862
(set_attr "mode" "<MODE>")])
20864
-(define_insn "*sub<mode>3_cconly_overflow"
20865
+(define_insn "*add<mode>3_cc_overflow"
20866
[(set (reg:CCC FLAGS_REG)
20869
- (match_operand:SWI 0 "nonimmediate_operand" "<r>m,<r>")
20870
- (match_operand:SWI 1 "<general_operand>" "<r><i>,<r>m"))
20873
- "cmp{<imodesuffix>}\t{%1, %0|%0, %1}"
20874
- [(set_attr "type" "icmp")
20875
- (set_attr "mode" "<MODE>")])
20877
-(define_insn "*<plusminus_insn><mode>3_cc_overflow"
20878
- [(set (reg:CCC FLAGS_REG)
20881
- (match_operand:SWI 1 "nonimmediate_operand" "<comm>0,0")
20883
+ (match_operand:SWI 1 "nonimmediate_operand" "%0,0")
20884
(match_operand:SWI 2 "<general_operand>" "<r><i>,<r>m"))
20886
(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
20887
- (plusminus:SWI (match_dup 1) (match_dup 2)))]
20888
- "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
20889
- "<plusminus_mnemonic>{<imodesuffix>}\t{%2, %0|%0, %2}"
20890
+ (plus:SWI (match_dup 1) (match_dup 2)))]
20891
+ "ix86_binary_operator_ok (PLUS, <MODE>mode, operands)"
20892
+ "add{<imodesuffix>}\t{%2, %0|%0, %2}"
20893
[(set_attr "type" "alu")
20894
(set_attr "mode" "<MODE>")])
20896
-(define_insn "*<plusminus_insn>si3_zext_cc_overflow"
20897
+(define_insn "*addsi3_zext_cc_overflow"
20898
[(set (reg:CCC FLAGS_REG)
20901
- (match_operand:SI 1 "nonimmediate_operand" "<comm>0")
20903
+ (match_operand:SI 1 "nonimmediate_operand" "%0")
20904
(match_operand:SI 2 "x86_64_general_operand" "rme"))
20906
(set (match_operand:DI 0 "register_operand" "=r")
20907
- (zero_extend:DI (plusminus:SI (match_dup 1) (match_dup 2))))]
20908
- "TARGET_64BIT && ix86_binary_operator_ok (<CODE>, SImode, operands)"
20909
- "<plusminus_mnemonic>{l}\t{%2, %k0|%k0, %2}"
20910
+ (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
20911
+ "TARGET_64BIT && ix86_binary_operator_ok (PLUS, SImode, operands)"
20912
+ "add{l}\t{%2, %k0|%k0, %2}"
20913
[(set_attr "type" "alu")
20914
(set_attr "mode" "SI")])
20916
@@ -8012,7 +8007,18 @@
20918
(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm")
20919
(and:DI (match_dup 1) (match_dup 2)))]
20920
- "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
20922
+ && ix86_match_ccmode
20924
+ /* If we are going to emit andl instead of andq, and the operands[2]
20925
+ constant might have the SImode sign bit set, make sure the sign
20926
+ flag isn't tested, because the instruction will set the sign flag
20927
+ based on bit 31 rather than bit 63. If it isn't CONST_INT,
20928
+ conservatively assume it might have bit 31 set. */
20929
+ (satisfies_constraint_Z (operands[2])
20930
+ && (!CONST_INT_P (operands[2])
20931
+ || val_signbit_known_set_p (SImode, INTVAL (operands[2]))))
20932
+ ? CCZmode : CCNOmode)
20933
&& ix86_binary_operator_ok (AND, DImode, operands)"
20935
and{l}\t{%k2, %k0|%k0, %k2}
20936
Index: gcc/config/i386/t-rtems
20937
===================================================================
20938
--- a/src/gcc/config/i386/t-rtems (.../tags/gcc_4_8_2_release)
20939
+++ b/src/gcc/config/i386/t-rtems (.../branches/gcc-4_8-branch)
20940
@@ -17,11 +17,10 @@
20941
# <http://www.gnu.org/licenses/>.
20944
-MULTILIB_OPTIONS = mtune=i486/mtune=pentium/mtune=pentiumpro \
20946
+MULTILIB_OPTIONS = mtune=i486/mtune=pentium/mtune=pentiumpro msoft-float
20947
MULTILIB_DIRNAMES= m486 mpentium mpentiumpro soft-float
20948
-MULTILIB_MATCHES = msoft-float=mno-m80387
20949
-MULTILIB_MATCHES += mtune?pentium=mtune?k6 mtune?pentiumpro=mtune?mathlon
20950
+MULTILIB_MATCHES = msoft-float=mno-80387
20951
+MULTILIB_MATCHES += mtune?pentium=mtune?k6 mtune?pentiumpro=mtune?athlon
20952
MULTILIB_EXCEPTIONS = \
20953
mtune=pentium/*msoft-float* \
20954
mtune=pentiumpro/*msoft-float*
20955
Index: gcc/config/i386/winnt.c
20956
===================================================================
20957
--- a/src/gcc/config/i386/winnt.c (.../tags/gcc_4_8_2_release)
20958
+++ b/src/gcc/config/i386/winnt.c (.../branches/gcc-4_8-branch)
20959
@@ -547,8 +547,9 @@
20960
sets 'discard' characteristic, rather than telling linker
20961
to warn of size or content mismatch, so do the same. */
20962
bool discard = (flags & SECTION_CODE)
20963
- || lookup_attribute ("selectany",
20964
- DECL_ATTRIBUTES (decl));
20965
+ || (TREE_CODE (decl) != IDENTIFIER_NODE
20966
+ && lookup_attribute ("selectany",
20967
+ DECL_ATTRIBUTES (decl)));
20968
fprintf (asm_out_file, "\t.linkonce %s\n",
20969
(discard ? "discard" : "same_size"));
20971
Index: gcc/config/i386/sse.md
20972
===================================================================
20973
--- a/src/gcc/config/i386/sse.md (.../tags/gcc_4_8_2_release)
20974
+++ b/src/gcc/config/i386/sse.md (.../branches/gcc-4_8-branch)
20975
@@ -605,6 +605,7 @@
20977
[(set_attr "type" "ssemov")
20978
(set_attr "movu" "1")
20979
+ (set_attr "ssememalign" "8")
20980
(set_attr "prefix" "maybe_vex")
20982
(cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
20983
@@ -634,6 +635,7 @@
20985
[(set_attr "type" "ssemov")
20986
(set_attr "movu" "1")
20987
+ (set_attr "ssememalign" "8")
20988
(set_attr "prefix" "maybe_vex")
20990
(cond [(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
20991
@@ -663,6 +665,7 @@
20993
[(set_attr "type" "ssemov")
20994
(set_attr "movu" "1")
20995
+ (set_attr "ssememalign" "8")
20996
(set (attr "prefix_data16")
20998
(match_test "TARGET_AVX")
20999
@@ -696,6 +699,7 @@
21001
[(set_attr "type" "ssemov")
21002
(set_attr "movu" "1")
21003
+ (set_attr "ssememalign" "8")
21004
(set (attr "prefix_data16")
21006
(match_test "TARGET_AVX")
21007
@@ -721,6 +725,7 @@
21008
"%vlddqu\t{%1, %0|%0, %1}"
21009
[(set_attr "type" "ssemov")
21010
(set_attr "movu" "1")
21011
+ (set_attr "ssememalign" "8")
21012
(set (attr "prefix_data16")
21014
(match_test "TARGET_AVX")
21015
@@ -1001,6 +1006,7 @@
21016
vrcpss\t{%1, %2, %0|%0, %2, %1}"
21017
[(set_attr "isa" "noavx,avx")
21018
(set_attr "type" "sse")
21019
+ (set_attr "ssememalign" "32")
21020
(set_attr "atom_sse_attr" "rcp")
21021
(set_attr "btver2_sse_attr" "rcp")
21022
(set_attr "prefix" "orig,vex")
21023
@@ -1089,6 +1095,7 @@
21024
vrsqrtss\t{%1, %2, %0|%0, %2, %1}"
21025
[(set_attr "isa" "noavx,avx")
21026
(set_attr "type" "sse")
21027
+ (set_attr "ssememalign" "32")
21028
(set_attr "prefix" "orig,vex")
21029
(set_attr "mode" "SF")])
21031
@@ -2844,6 +2851,7 @@
21032
"%vcvtdq2pd\t{%1, %0|%0, %q1}"
21033
[(set_attr "type" "ssecvt")
21034
(set_attr "prefix" "maybe_vex")
21035
+ (set_attr "ssememalign" "64")
21036
(set_attr "mode" "V2DF")])
21038
(define_insn "avx_cvtpd2dq256"
21039
@@ -3572,6 +3580,7 @@
21040
%vmovhps\t{%2, %0|%0, %2}"
21041
[(set_attr "isa" "noavx,avx,noavx,avx,*")
21042
(set_attr "type" "ssemov")
21043
+ (set_attr "ssememalign" "64")
21044
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
21045
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
21047
@@ -3617,6 +3626,7 @@
21048
%vmovlps\t{%2, %H0|%H0, %2}"
21049
[(set_attr "isa" "noavx,avx,noavx,avx,*")
21050
(set_attr "type" "ssemov")
21051
+ (set_attr "ssememalign" "64")
21052
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
21053
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
21055
@@ -3941,6 +3951,7 @@
21056
%vmovhlps\t{%1, %d0|%d0, %1}
21057
%vmovlps\t{%H1, %d0|%d0, %H1}"
21058
[(set_attr "type" "ssemov")
21059
+ (set_attr "ssememalign" "64")
21060
(set_attr "prefix" "maybe_vex")
21061
(set_attr "mode" "V2SF,V4SF,V2SF")])
21063
@@ -3980,6 +3991,7 @@
21064
%vmovlps\t{%2, %H0|%H0, %2}"
21065
[(set_attr "isa" "noavx,avx,noavx,avx,*")
21066
(set_attr "type" "ssemov")
21067
+ (set_attr "ssememalign" "64")
21068
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
21069
(set_attr "mode" "V2SF,V2SF,V4SF,V4SF,V2SF")])
21071
@@ -4033,6 +4045,7 @@
21072
%vmovlps\t{%2, %0|%0, %2}"
21073
[(set_attr "isa" "noavx,avx,noavx,avx,*")
21074
(set_attr "type" "sseshuf,sseshuf,ssemov,ssemov,ssemov")
21075
+ (set_attr "ssememalign" "64")
21076
(set_attr "length_immediate" "1,1,*,*,*")
21077
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
21078
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
21079
@@ -4642,7 +4655,8 @@
21080
vmovlpd\t{%H1, %2, %0|%0, %2, %H1}
21081
%vmovhpd\t{%1, %0|%0, %1}"
21082
[(set_attr "isa" "noavx,avx,sse3,noavx,avx,*")
21083
- (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
21084
+ (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
21085
+ (set_attr "ssememalign" "64")
21086
(set_attr "prefix_data16" "*,*,*,1,*,1")
21087
(set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
21088
(set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
21089
@@ -4744,6 +4758,7 @@
21090
%vmovlpd\t{%2, %H0|%H0, %2}"
21091
[(set_attr "isa" "noavx,avx,sse3,noavx,avx,*")
21092
(set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
21093
+ (set_attr "ssememalign" "64")
21094
(set_attr "prefix_data16" "*,*,*,1,*,1")
21095
(set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
21096
(set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
21097
@@ -4982,6 +4997,7 @@
21098
movhlps\t{%1, %0|%0, %1}
21099
movlps\t{%H1, %0|%0, %H1}"
21100
[(set_attr "type" "ssemov")
21101
+ (set_attr "ssememalign" "64")
21102
(set_attr "mode" "V2SF,V4SF,V2SF")])
21104
;; Avoid combining registers from different units in a single alternative,
21105
@@ -5077,6 +5093,7 @@
21107
[(set_attr "isa" "noavx,avx,noavx,avx,*,*,*")
21108
(set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,fmov,imov")
21109
+ (set_attr "ssememalign" "64")
21110
(set_attr "prefix_data16" "1,*,*,*,*,*,*")
21111
(set_attr "prefix" "orig,vex,orig,vex,*,*,*")
21112
(set_attr "mode" "V1DF,V1DF,V2DF,V2DF,DF,DF,DF")])
21113
@@ -5145,6 +5162,7 @@
21114
(const_string "imov")
21116
(const_string "ssemov")))
21117
+ (set_attr "ssememalign" "64")
21118
(set_attr "prefix_data16" "*,1,*,*,*,*,1,*,*,*,*")
21119
(set_attr "length_immediate" "*,*,*,*,*,1,*,*,*,*,*")
21120
(set_attr "prefix" "maybe_vex,orig,vex,orig,vex,orig,orig,vex,*,*,*")
21121
@@ -5189,6 +5207,7 @@
21123
(const_string "*")))
21124
(set_attr "length_immediate" "*,*,*,*,*,1,*,*,*")
21125
+ (set_attr "ssememalign" "64")
21126
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex,orig,orig,vex,maybe_vex")
21127
(set_attr "mode" "DF,DF,V1DF,V1DF,V1DF,V2DF,V1DF,V1DF,V1DF")])
21129
@@ -8736,6 +8755,7 @@
21131
"%vpmov<extsuffix>bw\t{%1, %0|%0, %q1}"
21132
[(set_attr "type" "ssemov")
21133
+ (set_attr "ssememalign" "64")
21134
(set_attr "prefix_extra" "1")
21135
(set_attr "prefix" "maybe_vex")
21136
(set_attr "mode" "TI")])
21137
@@ -8766,6 +8786,7 @@
21139
"%vpmov<extsuffix>bd\t{%1, %0|%0, %k1}"
21140
[(set_attr "type" "ssemov")
21141
+ (set_attr "ssememalign" "32")
21142
(set_attr "prefix_extra" "1")
21143
(set_attr "prefix" "maybe_vex")
21144
(set_attr "mode" "TI")])
21145
@@ -8791,6 +8812,7 @@
21147
"%vpmov<extsuffix>wd\t{%1, %0|%0, %q1}"
21148
[(set_attr "type" "ssemov")
21149
+ (set_attr "ssememalign" "64")
21150
(set_attr "prefix_extra" "1")
21151
(set_attr "prefix" "maybe_vex")
21152
(set_attr "mode" "TI")])
21153
@@ -8818,6 +8840,7 @@
21155
"%vpmov<extsuffix>bq\t{%1, %0|%0, %w1}"
21156
[(set_attr "type" "ssemov")
21157
+ (set_attr "ssememalign" "16")
21158
(set_attr "prefix_extra" "1")
21159
(set_attr "prefix" "maybe_vex")
21160
(set_attr "mode" "TI")])
21161
@@ -8845,6 +8868,7 @@
21163
"%vpmov<extsuffix>wq\t{%1, %0|%0, %k1}"
21164
[(set_attr "type" "ssemov")
21165
+ (set_attr "ssememalign" "32")
21166
(set_attr "prefix_extra" "1")
21167
(set_attr "prefix" "maybe_vex")
21168
(set_attr "mode" "TI")])
21169
@@ -8868,6 +8892,7 @@
21171
"%vpmov<extsuffix>dq\t{%1, %0|%0, %q1}"
21172
[(set_attr "type" "ssemov")
21173
+ (set_attr "ssememalign" "64")
21174
(set_attr "prefix_extra" "1")
21175
(set_attr "prefix" "maybe_vex")
21176
(set_attr "mode" "TI")])
21177
@@ -9151,6 +9176,7 @@
21178
[(set_attr "type" "sselog")
21179
(set_attr "prefix_data16" "1")
21180
(set_attr "prefix_extra" "1")
21181
+ (set_attr "ssememalign" "8")
21182
(set_attr "length_immediate" "1")
21183
(set_attr "memory" "none,load")
21184
(set_attr "mode" "TI")])
21185
@@ -9213,6 +9239,7 @@
21186
[(set_attr "type" "sselog")
21187
(set_attr "prefix_data16" "1")
21188
(set_attr "prefix_extra" "1")
21189
+ (set_attr "ssememalign" "8")
21190
(set_attr "length_immediate" "1")
21191
(set_attr "memory" "load")
21192
(set_attr "mode" "TI")])
21193
@@ -9240,6 +9267,7 @@
21194
(set_attr "prefix_data16" "1")
21195
(set_attr "prefix_extra" "1")
21196
(set_attr "prefix" "maybe_vex")
21197
+ (set_attr "ssememalign" "8")
21198
(set_attr "length_immediate" "1")
21199
(set_attr "btver2_decode" "vector")
21200
(set_attr "memory" "none,load")
21201
@@ -9267,6 +9295,7 @@
21202
[(set_attr "type" "sselog")
21203
(set_attr "prefix_data16" "1")
21204
(set_attr "prefix_extra" "1")
21205
+ (set_attr "ssememalign" "8")
21206
(set_attr "length_immediate" "1")
21207
(set_attr "prefix" "maybe_vex")
21208
(set_attr "btver2_decode" "vector")
21209
@@ -9293,6 +9322,7 @@
21210
[(set_attr "type" "sselog")
21211
(set_attr "prefix_data16" "1")
21212
(set_attr "prefix_extra" "1")
21213
+ (set_attr "ssememalign" "8")
21214
(set_attr "length_immediate" "1")
21215
(set_attr "memory" "none,load,none,load")
21216
(set_attr "btver2_decode" "vector,vector,vector,vector")
21217
@@ -9346,6 +9376,7 @@
21218
[(set_attr "type" "sselog")
21219
(set_attr "prefix_data16" "1")
21220
(set_attr "prefix_extra" "1")
21221
+ (set_attr "ssememalign" "8")
21222
(set_attr "length_immediate" "1")
21223
(set_attr "memory" "none,load")
21224
(set_attr "mode" "TI")])
21225
@@ -9399,6 +9430,7 @@
21226
[(set_attr "type" "sselog")
21227
(set_attr "prefix_data16" "1")
21228
(set_attr "prefix_extra" "1")
21229
+ (set_attr "ssememalign" "8")
21230
(set_attr "length_immediate" "1")
21231
(set_attr "memory" "load")
21232
(set_attr "mode" "TI")])
21233
@@ -9421,6 +9453,7 @@
21234
[(set_attr "type" "sselog")
21235
(set_attr "prefix_data16" "1")
21236
(set_attr "prefix_extra" "1")
21237
+ (set_attr "ssememalign" "8")
21238
(set_attr "length_immediate" "1")
21239
(set_attr "prefix" "maybe_vex")
21240
(set_attr "memory" "none,load")
21241
@@ -9445,6 +9478,7 @@
21242
[(set_attr "type" "sselog")
21243
(set_attr "prefix_data16" "1")
21244
(set_attr "prefix_extra" "1")
21245
+ (set_attr "ssememalign" "8")
21246
(set_attr "length_immediate" "1")
21247
(set_attr "prefix" "maybe_vex")
21248
(set_attr "memory" "none,load")
21249
@@ -9469,6 +9503,7 @@
21250
[(set_attr "type" "sselog")
21251
(set_attr "prefix_data16" "1")
21252
(set_attr "prefix_extra" "1")
21253
+ (set_attr "ssememalign" "8")
21254
(set_attr "length_immediate" "1")
21255
(set_attr "memory" "none,load,none,load")
21256
(set_attr "prefix" "maybe_vex")
21257
@@ -10213,7 +10248,6 @@
21258
[(set_attr "type" "ssecvt1")
21259
(set_attr "mode" "<MODE>")])
21262
(define_expand "xop_vmfrcz<mode>2"
21263
[(set (match_operand:VF_128 0 "register_operand")
21265
@@ -10223,11 +10257,9 @@
21270
- operands[3] = CONST0_RTX (<MODE>mode);
21272
+ "operands[3] = CONST0_RTX (<MODE>mode);")
21274
-(define_insn "*xop_vmfrcz_<mode>"
21275
+(define_insn "*xop_vmfrcz<mode>2"
21276
[(set (match_operand:VF_128 0 "register_operand" "=x")
21279
Index: gcc/config/i386/xopintrin.h
21280
===================================================================
21281
--- a/src/gcc/config/i386/xopintrin.h (.../tags/gcc_4_8_2_release)
21282
+++ b/src/gcc/config/i386/xopintrin.h (.../branches/gcc-4_8-branch)
21283
@@ -745,13 +745,17 @@
21284
extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
21285
_mm_frcz_ss (__m128 __A, __m128 __B)
21287
- return (__m128) __builtin_ia32_vfrczss ((__v4sf)__A, (__v4sf)__B);
21288
+ return (__m128) __builtin_ia32_movss ((__v4sf)__A,
21290
+ __builtin_ia32_vfrczss ((__v4sf)__B));
21293
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
21294
_mm_frcz_sd (__m128d __A, __m128d __B)
21296
- return (__m128d) __builtin_ia32_vfrczsd ((__v2df)__A, (__v2df)__B);
21297
+ return (__m128d) __builtin_ia32_movsd ((__v2df)__A,
21299
+ __builtin_ia32_vfrczsd ((__v2df)__B));
21302
extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
21303
Index: gcc/config/i386/driver-i386.c
21304
===================================================================
21305
--- a/src/gcc/config/i386/driver-i386.c (.../tags/gcc_4_8_2_release)
21306
+++ b/src/gcc/config/i386/driver-i386.c (.../branches/gcc-4_8-branch)
21307
@@ -126,6 +126,18 @@
21309
level1->sizekb = 16; level1->assoc = 4; level1->line = 32;
21312
+ level1->sizekb = 16; level1->assoc = 4; level1->line = 64;
21315
+ level1->sizekb = 24; level1->assoc = 6; level1->line = 64;
21318
+ level2->sizekb = 256; level2->assoc = 8; level2->line = 64;
21321
+ level2->sizekb = 1024; level2->assoc = 16; level2->line = 64;
21324
level1->sizekb = 32; level1->assoc = 8; level1->line = 64;
21326
@@ -162,6 +174,9 @@
21328
level2->sizekb = 2048; level2->assoc = 4; level2->line = 32;
21331
+ level2->sizekb = 3072; level2->assoc = 12; level2->line = 64;
21336
@@ -203,6 +218,9 @@
21338
level2->sizekb = 512; level2->assoc = 2; level2->line = 64;
21341
+ level2->sizekb = 512; level2->assoc = 8; level2->line = 64;
21344
level2->sizekb = 256; level2->assoc = 8; level2->line = 32;
21346
Index: gcc/config/i386/i386.c
21347
===================================================================
21348
--- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_8_2_release)
21349
+++ b/src/gcc/config/i386/i386.c (.../branches/gcc-4_8-branch)
21350
@@ -1378,7 +1378,7 @@
21351
8, /* MMX or SSE register to integer */
21352
8, /* size of l1 cache. */
21353
1024, /* size of l2 cache. */
21354
- 128, /* size of prefetch block */
21355
+ 64, /* size of prefetch block */
21356
8, /* number of parallel prefetches */
21357
1, /* Branch cost */
21358
COSTS_N_INSNS (6), /* cost of FADD and FSUB insns. */
21359
@@ -1894,10 +1894,10 @@
21360
m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_ATOM | m_AMDFAM10 | m_BDVER | m_GENERIC,
21362
/* X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL */
21363
- m_COREI7 | m_AMDFAM10 | m_BDVER | m_BTVER,
21364
+ m_COREI7 | m_HASWELL | m_AMDFAM10 | m_BDVER | m_BTVER,
21366
/* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL */
21367
- m_COREI7 | m_BDVER,
21368
+ m_COREI7 | m_HASWELL| m_BDVER,
21370
/* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL */
21372
@@ -2409,6 +2409,7 @@
21373
/* Processor target table, indexed by processor number */
21376
+ const char *const name; /* processor name */
21377
const struct processor_costs *cost; /* Processor costs */
21378
const int align_loop; /* Default alignments. */
21379
const int align_loop_max_skip;
21380
@@ -2417,67 +2418,32 @@
21381
const int align_func;
21384
+/* This table must be in sync with enum processor_type in i386.h. */
21385
static const struct ptt processor_target_table[PROCESSOR_max] =
21387
- {&i386_cost, 4, 3, 4, 3, 4},
21388
- {&i486_cost, 16, 15, 16, 15, 16},
21389
- {&pentium_cost, 16, 7, 16, 7, 16},
21390
- {&pentiumpro_cost, 16, 15, 16, 10, 16},
21391
- {&geode_cost, 0, 0, 0, 0, 0},
21392
- {&k6_cost, 32, 7, 32, 7, 32},
21393
- {&athlon_cost, 16, 7, 16, 7, 16},
21394
- {&pentium4_cost, 0, 0, 0, 0, 0},
21395
- {&k8_cost, 16, 7, 16, 7, 16},
21396
- {&nocona_cost, 0, 0, 0, 0, 0},
21398
- {&core_cost, 16, 10, 16, 10, 16},
21400
- {&core_cost, 16, 10, 16, 10, 16},
21402
- {&core_cost, 16, 10, 16, 10, 16},
21403
- {&generic32_cost, 16, 7, 16, 7, 16},
21404
- {&generic64_cost, 16, 10, 16, 10, 16},
21405
- {&amdfam10_cost, 32, 24, 32, 7, 32},
21406
- {&bdver1_cost, 16, 10, 16, 7, 11},
21407
- {&bdver2_cost, 16, 10, 16, 7, 11},
21408
- {&bdver3_cost, 16, 10, 16, 7, 11},
21409
- {&btver1_cost, 16, 10, 16, 7, 11},
21410
- {&btver2_cost, 16, 10, 16, 7, 11},
21411
- {&atom_cost, 16, 15, 16, 7, 16}
21412
+ {"generic", &generic32_cost, 16, 7, 16, 7, 16},
21413
+ {"generic", &generic64_cost, 16, 10, 16, 10, 16},
21414
+ {"i386", &i386_cost, 4, 3, 4, 3, 4},
21415
+ {"i486", &i486_cost, 16, 15, 16, 15, 16},
21416
+ {"pentium", &pentium_cost, 16, 7, 16, 7, 16},
21417
+ {"pentiumpro", &pentiumpro_cost, 16, 15, 16, 10, 16},
21418
+ {"pentium4", &pentium4_cost, 0, 0, 0, 0, 0},
21419
+ {"nocona", &nocona_cost, 0, 0, 0, 0, 0},
21420
+ {"core2", &core_cost, 16, 10, 16, 10, 16},
21421
+ {"corei7", &core_cost, 16, 10, 16, 10, 16},
21422
+ {"core-avx2", &core_cost, 16, 10, 16, 10, 16},
21423
+ {"atom", &atom_cost, 16, 15, 16, 7, 16},
21424
+ {"geode", &geode_cost, 0, 0, 0, 0, 0},
21425
+ {"k6", &k6_cost, 32, 7, 32, 7, 32},
21426
+ {"athlon", &athlon_cost, 16, 7, 16, 7, 16},
21427
+ {"k8", &k8_cost, 16, 7, 16, 7, 16},
21428
+ {"amdfam10", &amdfam10_cost, 32, 24, 32, 7, 32},
21429
+ {"bdver1", &bdver1_cost, 16, 10, 16, 7, 11},
21430
+ {"bdver2", &bdver2_cost, 16, 10, 16, 7, 11},
21431
+ {"bdver3", &bdver3_cost, 16, 10, 16, 7, 11},
21432
+ {"btver1", &btver1_cost, 16, 10, 16, 7, 11},
21433
+ {"btver2", &btver2_cost, 16, 10, 16, 7, 11}
21436
-static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
21470
gate_insert_vzeroupper (void)
21471
@@ -2983,7 +2949,7 @@
21472
{"bdver3", PROCESSOR_BDVER3, CPU_BDVER3,
21473
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
21474
| PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
21475
- | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX
21476
+ | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_FMA4
21477
| PTA_XOP | PTA_LWP | PTA_BMI | PTA_TBM | PTA_F16C
21478
| PTA_FMA | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE
21480
@@ -3125,7 +3091,8 @@
21481
ix86_tune_string = ix86_arch_string;
21482
if (!ix86_tune_string)
21484
- ix86_tune_string = cpu_names[TARGET_CPU_DEFAULT];
21486
+ = processor_target_table[TARGET_CPU_DEFAULT].name;
21487
ix86_tune_defaulted = 1;
21490
@@ -4078,19 +4045,15 @@
21491
= ix86_target_string (ptr->x_ix86_isa_flags, ptr->x_target_flags,
21492
NULL, NULL, ptr->x_ix86_fpmath, false);
21494
+ gcc_assert (ptr->arch < PROCESSOR_max);
21495
fprintf (file, "%*sarch = %d (%s)\n",
21498
- ((ptr->arch < TARGET_CPU_DEFAULT_max)
21499
- ? cpu_names[ptr->arch]
21501
+ ptr->arch, processor_target_table[ptr->arch].name);
21503
+ gcc_assert (ptr->tune < PROCESSOR_max);
21504
fprintf (file, "%*stune = %d (%s)\n",
21507
- ((ptr->tune < TARGET_CPU_DEFAULT_max)
21508
- ? cpu_names[ptr->tune]
21510
+ ptr->tune, processor_target_table[ptr->tune].name);
21512
fprintf (file, "%*sbranch_cost = %d\n", indent, "", ptr->branch_cost);
21514
@@ -5409,6 +5372,17 @@
21518
+ /* For pre-AVX disallow unaligned loads/stores where the
21519
+ instructions don't support it. */
21521
+ && VECTOR_MODE_P (GET_MODE (op))
21522
+ && misaligned_operand (op, GET_MODE (op)))
21524
+ int min_align = get_attr_ssememalign (insn);
21525
+ if (min_align == 0)
21529
/* A unary operator may be accepted by the predicate, but it
21530
is irrelevant for matching constraints. */
21532
@@ -5830,7 +5804,8 @@
21534
return TYPE_MODE (type);
21536
- else if ((size == 8 || size == 16) && !TARGET_SSE)
21537
+ else if (((size == 8 && TARGET_64BIT) || size == 16)
21540
static bool warnedsse;
21542
@@ -5842,10 +5817,21 @@
21543
warning (0, "SSE vector argument without SSE "
21544
"enabled changes the ABI");
21550
+ else if ((size == 8 && !TARGET_64BIT) && !TARGET_MMX)
21552
+ static bool warnedmmx;
21556
+ && cum->warn_mmx)
21558
+ warnedmmx = true;
21559
+ warning (0, "MMX vector argument without MMX "
21560
+ "enabled changes the ABI");
21566
gcc_unreachable ();
21567
@@ -7235,9 +7221,15 @@
21575
+ return TARGET_64BIT && ix86_abi != MS_ABI;
21577
- case FIRST_FLOAT_REG:
21578
+ /* Complex values are returned in %st(0)/%st(1) pair. */
21581
/* TODO: The function should depend on current function ABI but
21582
builtins.c would need updating then. Therefore we use the
21584
@@ -7245,10 +7237,12 @@
21586
return TARGET_FLOAT_RETURNS_IN_80387;
21588
- case FIRST_SSE_REG:
21589
+ /* Complex values are returned in %xmm0/%xmm1 pair. */
21594
- case FIRST_MMX_REG:
21596
if (TARGET_MACHO || TARGET_64BIT)
21599
@@ -10560,18 +10554,21 @@
21601
m->fs.sp_offset += allocate;
21603
+ /* Use stack_pointer_rtx for relative addressing so that code
21604
+ works for realigned stack, too. */
21605
if (r10_live && eax_live)
21607
- t = choose_baseaddr (m->fs.sp_offset - allocate);
21608
+ t = plus_constant (Pmode, stack_pointer_rtx, allocate);
21609
emit_move_insn (gen_rtx_REG (word_mode, R10_REG),
21610
gen_frame_mem (word_mode, t));
21611
- t = choose_baseaddr (m->fs.sp_offset - allocate - UNITS_PER_WORD);
21612
+ t = plus_constant (Pmode, stack_pointer_rtx,
21613
+ allocate - UNITS_PER_WORD);
21614
emit_move_insn (gen_rtx_REG (word_mode, AX_REG),
21615
gen_frame_mem (word_mode, t));
21617
else if (eax_live || r10_live)
21619
- t = choose_baseaddr (m->fs.sp_offset - allocate);
21620
+ t = plus_constant (Pmode, stack_pointer_rtx, allocate);
21621
emit_move_insn (gen_rtx_REG (word_mode,
21622
(eax_live ? AX_REG : R10_REG)),
21623
gen_frame_mem (word_mode, t));
21624
@@ -11561,30 +11558,6 @@
21628
-/* Determine if op is suitable SUBREG RTX for address. */
21631
-ix86_address_subreg_operand (rtx op)
21633
- enum machine_mode mode;
21638
- mode = GET_MODE (op);
21640
- if (GET_MODE_CLASS (mode) != MODE_INT)
21643
- /* Don't allow SUBREGs that span more than a word. It can lead to spill
21644
- failures when the register is one word out of a two word structure. */
21645
- if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
21648
- /* Allow only SUBREGs of non-eliminable hard registers. */
21649
- return register_no_elim_operand (op, mode);
21652
/* Extract the parts of an RTL expression that is a valid memory address
21653
for an instruction. Return 0 if the structure of the address is
21654
grossly off. Return -1 if the address contains ASHIFT, so it is not
21655
@@ -11641,7 +11614,7 @@
21657
else if (GET_CODE (addr) == SUBREG)
21659
- if (ix86_address_subreg_operand (SUBREG_REG (addr)))
21660
+ if (REG_P (SUBREG_REG (addr)))
21664
@@ -11705,7 +11678,7 @@
21668
- if (!ix86_address_subreg_operand (SUBREG_REG (op)))
21669
+ if (!REG_P (SUBREG_REG (op)))
21673
@@ -11750,19 +11723,6 @@
21674
scale = 1 << scale;
21677
- else if (CONST_INT_P (addr))
21679
- if (!x86_64_immediate_operand (addr, VOIDmode))
21682
- /* Constant addresses are sign extended to 64bit, we have to
21683
- prevent addresses from 0x80000000 to 0xffffffff in x32 mode. */
21685
- && val_signbit_known_set_p (SImode, INTVAL (addr)))
21691
disp = addr; /* displacement */
21693
@@ -11771,18 +11731,12 @@
21696
else if (GET_CODE (index) == SUBREG
21697
- && ix86_address_subreg_operand (SUBREG_REG (index)))
21698
+ && REG_P (SUBREG_REG (index)))
21704
-/* Address override works only on the (%reg) part of %fs:(%reg). */
21705
- if (seg != SEG_DEFAULT
21706
- && ((base && GET_MODE (base) != word_mode)
21707
- || (index && GET_MODE (index) != word_mode)))
21710
/* Extract the integral value of scale. */
21713
@@ -12258,6 +12212,45 @@
21717
+/* Determine if op is suitable RTX for an address register.
21718
+ Return naked register if a register or a register subreg is
21719
+ found, otherwise return NULL_RTX. */
21722
+ix86_validate_address_register (rtx op)
21724
+ enum machine_mode mode = GET_MODE (op);
21726
+ /* Only SImode or DImode registers can form the address. */
21727
+ if (mode != SImode && mode != DImode)
21732
+ else if (GET_CODE (op) == SUBREG)
21734
+ rtx reg = SUBREG_REG (op);
21736
+ if (!REG_P (reg))
21739
+ mode = GET_MODE (reg);
21741
+ /* Don't allow SUBREGs that span more than a word. It can
21742
+ lead to spill failures when the register is one word out
21743
+ of a two word structure. */
21744
+ if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
21747
+ /* Allow only SUBREGs of non-eliminable hard registers. */
21748
+ if (register_no_elim_operand (reg, mode))
21752
+ /* Op is not a register. */
21756
/* Recognizes RTL expressions that are valid memory addresses for an
21757
instruction. The MODE argument is the machine mode for the MEM
21758
expression that wants to use this address.
21759
@@ -12273,6 +12266,7 @@
21760
struct ix86_address parts;
21761
rtx base, index, disp;
21762
HOST_WIDE_INT scale;
21763
+ enum ix86_address_seg seg;
21765
if (ix86_decompose_address (addr, &parts) <= 0)
21766
/* Decomposition failed. */
21767
@@ -12282,23 +12276,16 @@
21768
index = parts.index;
21770
scale = parts.scale;
21773
/* Validate base register. */
21777
+ rtx reg = ix86_validate_address_register (base);
21779
- if (REG_P (base))
21781
- else if (GET_CODE (base) == SUBREG && REG_P (SUBREG_REG (base)))
21782
- reg = SUBREG_REG (base);
21784
- /* Base is not a register. */
21785
+ if (reg == NULL_RTX)
21788
- if (GET_MODE (base) != SImode && GET_MODE (base) != DImode)
21791
if ((strict && ! REG_OK_FOR_BASE_STRICT_P (reg))
21792
|| (! strict && ! REG_OK_FOR_BASE_NONSTRICT_P (reg)))
21793
/* Base is not valid. */
21794
@@ -12308,19 +12295,11 @@
21795
/* Validate index register. */
21799
+ rtx reg = ix86_validate_address_register (index);
21801
- if (REG_P (index))
21803
- else if (GET_CODE (index) == SUBREG && REG_P (SUBREG_REG (index)))
21804
- reg = SUBREG_REG (index);
21806
- /* Index is not a register. */
21807
+ if (reg == NULL_RTX)
21810
- if (GET_MODE (index) != SImode && GET_MODE (index) != DImode)
21813
if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (reg))
21814
|| (! strict && ! REG_OK_FOR_INDEX_NONSTRICT_P (reg)))
21815
/* Index is not valid. */
21816
@@ -12332,6 +12311,12 @@
21817
&& GET_MODE (base) != GET_MODE (index))
21820
+ /* Address override works only on the (%reg) part of %fs:(%reg). */
21821
+ if (seg != SEG_DEFAULT
21822
+ && ((base && GET_MODE (base) != word_mode)
21823
+ || (index && GET_MODE (index) != word_mode)))
21826
/* Validate scale factor. */
21829
@@ -12453,6 +12438,12 @@
21830
&& !x86_64_immediate_operand (disp, VOIDmode))
21831
/* Displacement is out of range. */
21833
+ /* In x32 mode, constant addresses are sign extended to 64bit, so
21834
+ we have to prevent addresses from 0x80000000 to 0xffffffff. */
21835
+ else if (TARGET_X32 && !(index || base)
21836
+ && CONST_INT_P (disp)
21837
+ && val_signbit_known_set_p (SImode, INTVAL (disp)))
21841
/* Everything looks valid. */
21842
@@ -13817,8 +13808,6 @@
21843
Those same assemblers have the same but opposite lossage on cmov. */
21844
if (mode == CCmode)
21845
suffix = fp ? "nbe" : "a";
21846
- else if (mode == CCCmode)
21849
gcc_unreachable ();
21851
@@ -13840,8 +13829,12 @@
21855
- gcc_assert (mode == CCmode || mode == CCCmode);
21857
+ if (mode == CCmode)
21859
+ else if (mode == CCCmode)
21862
+ gcc_unreachable ();
21866
@@ -13861,20 +13854,20 @@
21870
- /* ??? As above. */
21871
- gcc_assert (mode == CCmode || mode == CCCmode);
21872
- suffix = fp ? "nb" : "ae";
21873
+ if (mode == CCmode)
21874
+ suffix = fp ? "nb" : "ae";
21875
+ else if (mode == CCCmode)
21878
+ gcc_unreachable ();
21881
gcc_assert (mode == CCmode || mode == CCGCmode || mode == CCNOmode);
21885
- /* ??? As above. */
21886
if (mode == CCmode)
21888
- else if (mode == CCCmode)
21889
- suffix = fp ? "nb" : "ae";
21891
gcc_unreachable ();
21893
@@ -15340,7 +15333,7 @@
21894
rtx arg = XEXP (XEXP (link, 0), 0);
21896
if (ix86_check_avx256_register (&arg, NULL))
21897
- return AVX_U128_ANY;
21898
+ return AVX_U128_DIRTY;
21902
@@ -15460,8 +15453,8 @@
21904
bool avx_reg256_found = false;
21905
note_stores (pat, ix86_check_avx256_stores, &avx_reg256_found);
21906
- if (!avx_reg256_found)
21907
- return AVX_U128_CLEAN;
21909
+ return avx_reg256_found ? AVX_U128_DIRTY : AVX_U128_CLEAN;
21912
/* Otherwise, return current mode. Remember that if insn
21913
@@ -18486,12 +18479,7 @@
21915
case GTU: /* CF=0 & ZF=0 */
21916
case LEU: /* CF=1 | ZF=1 */
21917
- /* Detect overflow checks. They need just the carry flag. */
21918
- if (GET_CODE (op0) == MINUS
21919
- && rtx_equal_p (op1, XEXP (op0, 0)))
21924
/* Codes possibly doable only with sign flag when
21925
comparing against zero. */
21926
case GE: /* SF=OF or SF=0 */
21927
@@ -21740,6 +21728,21 @@
21931
+/* Copy the address to a Pmode register. This is used for x32 to
21932
+ truncate DImode TLS address to a SImode register. */
21935
+ix86_copy_addr_to_reg (rtx addr)
21937
+ if (GET_MODE (addr) == Pmode)
21938
+ return copy_addr_to_reg (addr);
21941
+ gcc_assert (GET_MODE (addr) == DImode && Pmode == SImode);
21942
+ return gen_rtx_SUBREG (SImode, copy_to_mode_reg (DImode, addr), 0);
21946
/* When SRCPTR is non-NULL, output simple loop to move memory
21947
pointer to SRCPTR to DESTPTR via chunks of MODE unrolled UNROLL times,
21948
overall size is COUNT specified in bytes. When SRCPTR is NULL, output the
21949
@@ -22728,8 +22731,8 @@
21950
gcc_assert (alg != no_stringop);
21952
count_exp = copy_to_mode_reg (GET_MODE (count_exp), count_exp);
21953
- destreg = copy_addr_to_reg (XEXP (dst, 0));
21954
- srcreg = copy_addr_to_reg (XEXP (src, 0));
21955
+ destreg = ix86_copy_addr_to_reg (XEXP (dst, 0));
21956
+ srcreg = ix86_copy_addr_to_reg (XEXP (src, 0));
21960
@@ -23119,7 +23122,7 @@
21961
gcc_assert (alg != no_stringop);
21963
count_exp = copy_to_mode_reg (counter_mode (count_exp), count_exp);
21964
- destreg = copy_addr_to_reg (XEXP (dst, 0));
21965
+ destreg = ix86_copy_addr_to_reg (XEXP (dst, 0));
21969
@@ -24988,7 +24991,8 @@
21971
ix86_data_alignment (tree type, int align)
21973
- int max_align = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT);
21975
+ = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT);
21977
if (AGGREGATE_TYPE_P (type)
21978
&& TYPE_SIZE (type)
21979
@@ -27984,8 +27988,8 @@
21980
{ OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv8hi3, "__builtin_ia32_vpshlw", IX86_BUILTIN_VPSHLW, UNKNOWN, (int)MULTI_ARG_2_HI },
21981
{ OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv16qi3, "__builtin_ia32_vpshlb", IX86_BUILTIN_VPSHLB, UNKNOWN, (int)MULTI_ARG_2_QI },
21983
- { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv4sf2, "__builtin_ia32_vfrczss", IX86_BUILTIN_VFRCZSS, UNKNOWN, (int)MULTI_ARG_2_SF },
21984
- { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv2df2, "__builtin_ia32_vfrczsd", IX86_BUILTIN_VFRCZSD, UNKNOWN, (int)MULTI_ARG_2_DF },
21985
+ { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv4sf2, "__builtin_ia32_vfrczss", IX86_BUILTIN_VFRCZSS, UNKNOWN, (int)MULTI_ARG_1_SF },
21986
+ { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv2df2, "__builtin_ia32_vfrczsd", IX86_BUILTIN_VFRCZSD, UNKNOWN, (int)MULTI_ARG_1_DF },
21987
{ OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv4sf2, "__builtin_ia32_vfrczps", IX86_BUILTIN_VFRCZPS, UNKNOWN, (int)MULTI_ARG_1_SF },
21988
{ OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv2df2, "__builtin_ia32_vfrczpd", IX86_BUILTIN_VFRCZPD, UNKNOWN, (int)MULTI_ARG_1_DF },
21989
{ OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv8sf2, "__builtin_ia32_vfrczps256", IX86_BUILTIN_VFRCZPS256, UNKNOWN, (int)MULTI_ARG_1_SF2 },
21990
@@ -31245,11 +31249,12 @@
21993
ix86_expand_special_args_builtin (const struct builtin_description *d,
21994
- tree exp, rtx target)
21995
+ tree exp, rtx target)
21999
unsigned int i, nargs, arg_adjust, memory;
22000
+ bool aligned_mem = false;
22004
@@ -31295,6 +31300,15 @@
22010
+ case CODE_FOR_sse4_1_movntdqa:
22011
+ case CODE_FOR_avx2_movntdqa:
22012
+ aligned_mem = true;
22018
case VOID_FTYPE_PV2SF_V4SF:
22019
case VOID_FTYPE_PV4DI_V4DI:
22020
@@ -31312,6 +31326,26 @@
22022
/* Reserve memory operand for target. */
22023
memory = ARRAY_SIZE (args);
22026
+ /* These builtins and instructions require the memory
22027
+ to be properly aligned. */
22028
+ case CODE_FOR_avx_movntv4di:
22029
+ case CODE_FOR_sse2_movntv2di:
22030
+ case CODE_FOR_avx_movntv8sf:
22031
+ case CODE_FOR_sse_movntv4sf:
22032
+ case CODE_FOR_sse4a_vmmovntv4sf:
22033
+ case CODE_FOR_avx_movntv4df:
22034
+ case CODE_FOR_sse2_movntv2df:
22035
+ case CODE_FOR_sse4a_vmmovntv2df:
22036
+ case CODE_FOR_sse2_movntidi:
22037
+ case CODE_FOR_sse_movntq:
22038
+ case CODE_FOR_sse2_movntisi:
22039
+ aligned_mem = true;
22045
case V4SF_FTYPE_V4SF_PCV2SF:
22046
case V2DF_FTYPE_V2DF_PCDOUBLE:
22047
@@ -31368,6 +31402,17 @@
22049
op = force_reg (Pmode, convert_to_mode (Pmode, op, 1));
22050
target = gen_rtx_MEM (tmode, op);
22051
+ /* target at this point has just BITS_PER_UNIT MEM_ALIGN
22052
+ on it. Try to improve it using get_pointer_alignment,
22053
+ and if the special builtin is one that requires strict
22054
+ mode alignment, also from it's GET_MODE_ALIGNMENT.
22055
+ Failure to do so could lead to ix86_legitimate_combined_insn
22056
+ rejecting all changes to such insns. */
22057
+ unsigned int align = get_pointer_alignment (arg);
22058
+ if (aligned_mem && align < GET_MODE_ALIGNMENT (tmode))
22059
+ align = GET_MODE_ALIGNMENT (tmode);
22060
+ if (MEM_ALIGN (target) < align)
22061
+ set_mem_align (target, align);
22064
target = force_reg (tmode, op);
22065
@@ -31413,8 +31458,17 @@
22066
/* This must be the memory operand. */
22067
op = force_reg (Pmode, convert_to_mode (Pmode, op, 1));
22068
op = gen_rtx_MEM (mode, op);
22069
- gcc_assert (GET_MODE (op) == mode
22070
- || GET_MODE (op) == VOIDmode);
22071
+ /* op at this point has just BITS_PER_UNIT MEM_ALIGN
22072
+ on it. Try to improve it using get_pointer_alignment,
22073
+ and if the special builtin is one that requires strict
22074
+ mode alignment, also from it's GET_MODE_ALIGNMENT.
22075
+ Failure to do so could lead to ix86_legitimate_combined_insn
22076
+ rejecting all changes to such insns. */
22077
+ unsigned int align = get_pointer_alignment (arg);
22078
+ if (aligned_mem && align < GET_MODE_ALIGNMENT (mode))
22079
+ align = GET_MODE_ALIGNMENT (mode);
22080
+ if (MEM_ALIGN (op) < align)
22081
+ set_mem_align (op, align);
22085
@@ -32208,7 +32262,9 @@
22086
mode4 = insn_data[icode].operand[5].mode;
22088
if (target == NULL_RTX
22089
- || GET_MODE (target) != insn_data[icode].operand[0].mode)
22090
+ || GET_MODE (target) != insn_data[icode].operand[0].mode
22091
+ || !insn_data[icode].operand[0].predicate (target,
22092
+ GET_MODE (target)))
22093
subtarget = gen_reg_rtx (insn_data[icode].operand[0].mode);
22095
subtarget = target;
22096
@@ -33879,10 +33935,10 @@
22098
/* We implement the move patterns for all vector modes into and
22099
out of SSE registers, even when no operation instructions
22100
- are available. OImode move is available only when AVX is
22102
- return ((TARGET_AVX && mode == OImode)
22103
- || VALID_AVX256_REG_MODE (mode)
22104
+ are available. OImode and AVX modes are available only when
22105
+ AVX is enabled. */
22106
+ return ((TARGET_AVX
22107
+ && VALID_AVX256_REG_OR_OI_MODE (mode))
22108
|| VALID_SSE_REG_MODE (mode)
22109
|| VALID_SSE2_REG_MODE (mode)
22110
|| VALID_MMX_REG_MODE (mode)
22111
@@ -35232,7 +35288,10 @@
22112
The smallest offset in the page INSN can start is the case where START
22113
ends on the offset 0. Offset of INSN is then NBYTES - sizeof (INSN).
22114
We add p2align to 16byte window with maxskip 15 - NBYTES + sizeof (INSN).
22117
+ Don't consider asm goto as jump, while it can contain a jump, it doesn't
22118
+ have to, control transfer to label(s) can be performed through other
22119
+ means, and also we estimate minimum length of all asm stmts as 0. */
22120
for (insn = start; insn; insn = NEXT_INSN (insn))
22123
@@ -35260,6 +35319,7 @@
22125
start = NEXT_INSN (start);
22126
if ((JUMP_P (start)
22127
+ && asm_noperands (PATTERN (start)) < 0
22128
&& GET_CODE (PATTERN (start)) != ADDR_VEC
22129
&& GET_CODE (PATTERN (start)) != ADDR_DIFF_VEC)
22131
@@ -35278,6 +35338,7 @@
22132
fprintf (dump_file, "Insn %i estimated to %i bytes\n",
22133
INSN_UID (insn), min_size);
22135
+ && asm_noperands (PATTERN (insn)) < 0
22136
&& GET_CODE (PATTERN (insn)) != ADDR_VEC
22137
&& GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC)
22139
@@ -35289,6 +35350,7 @@
22141
start = NEXT_INSN (start);
22142
if ((JUMP_P (start)
22143
+ && asm_noperands (PATTERN (start)) < 0
22144
&& GET_CODE (PATTERN (start)) != ADDR_VEC
22145
&& GET_CODE (PATTERN (start)) != ADDR_DIFF_VEC)
22147
Index: gcc/config/sh/predicates.md
22148
===================================================================
22149
--- a/src/gcc/config/sh/predicates.md (.../tags/gcc_4_8_2_release)
22150
+++ b/src/gcc/config/sh/predicates.md (.../branches/gcc-4_8-branch)
22151
@@ -389,6 +389,12 @@
22152
XEXP (XEXP (op, 0), 1),
22153
TARGET_SH2A, true)")))
22155
+;; Returns true if OP is a displacement address that can fit into a
22156
+;; 16 bit (non-SH2A) memory load / store insn.
22157
+(define_predicate "short_displacement_mem_operand"
22158
+ (match_test "sh_disp_addr_displacement (op)
22159
+ <= sh_max_mov_insn_displacement (GET_MODE (op), false)"))
22161
;; Returns 1 if the operand can be used in an SH2A movu.{b|w} insn.
22162
(define_predicate "zero_extend_movu_operand"
22163
(and (match_operand 0 "displacement_mem_operand")
22164
@@ -413,6 +419,11 @@
22165
if (t_reg_operand (op, mode))
22168
+ /* Disallow PC relative QImode loads, since these is no insn to do that
22169
+ and an imm8 load should be used instead. */
22170
+ if (IS_PC_RELATIVE_LOAD_ADDR_P (op) && GET_MODE (op) == QImode)
22175
rtx inside = XEXP (op, 0);
22176
Index: gcc/config/sh/sh-protos.h
22177
===================================================================
22178
--- a/src/gcc/config/sh/sh-protos.h (.../tags/gcc_4_8_2_release)
22179
+++ b/src/gcc/config/sh/sh-protos.h (.../branches/gcc-4_8-branch)
22180
@@ -159,6 +159,8 @@
22181
extern bool sh_cfun_trap_exit_p (void);
22182
extern rtx sh_find_equiv_gbr_addr (rtx cur_insn, rtx mem);
22183
extern int sh_eval_treg_value (rtx op);
22184
+extern HOST_WIDE_INT sh_disp_addr_displacement (rtx mem_op);
22185
+extern int sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a);
22187
/* Result value of sh_find_set_of_reg. */
22189
Index: gcc/config/sh/sh.c
22190
===================================================================
22191
--- a/src/gcc/config/sh/sh.c (.../tags/gcc_4_8_2_release)
22192
+++ b/src/gcc/config/sh/sh.c (.../branches/gcc-4_8-branch)
22193
@@ -310,9 +310,7 @@
22194
static void sh_conditional_register_usage (void);
22195
static bool sh_legitimate_constant_p (enum machine_mode, rtx);
22196
static int mov_insn_size (enum machine_mode, bool);
22197
-static int max_mov_insn_displacement (enum machine_mode, bool);
22198
static int mov_insn_alignment_mask (enum machine_mode, bool);
22199
-static HOST_WIDE_INT disp_addr_displacement (rtx);
22200
static bool sequence_insn_p (rtx);
22201
static void sh_canonicalize_comparison (int *, rtx *, rtx *, bool);
22202
static void sh_canonicalize_comparison (enum rtx_code&, rtx&, rtx&,
22203
@@ -3628,8 +3626,8 @@
22205
/* Determine the maximum possible displacement for a move insn for the
22208
-max_mov_insn_displacement (enum machine_mode mode, bool consider_sh2a)
22210
+sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a)
22212
/* The 4 byte displacement move insns are the same as the 2 byte
22213
versions but take a 12 bit displacement. All we need to do is to
22214
@@ -3665,8 +3663,8 @@
22217
/* Return the displacement value of a displacement address. */
22218
-static inline HOST_WIDE_INT
22219
-disp_addr_displacement (rtx x)
22221
+sh_disp_addr_displacement (rtx x)
22223
gcc_assert (satisfies_constraint_Sdd (x));
22224
return INTVAL (XEXP (XEXP (x, 0), 1));
22225
@@ -3703,12 +3701,12 @@
22226
HImode and QImode loads/stores with displacement put pressure on
22227
R0 which will most likely require another reg copy. Thus account
22228
a higher cost for that. */
22229
- if (offset > 0 && offset <= max_mov_insn_displacement (mode, false))
22230
+ if (offset > 0 && offset <= sh_max_mov_insn_displacement (mode, false))
22231
return (mode == HImode || mode == QImode) ? 2 : 1;
22233
/* The displacement would fit into a 4 byte move insn (SH2A). */
22235
- && offset > 0 && offset <= max_mov_insn_displacement (mode, true))
22236
+ && offset > 0 && offset <= sh_max_mov_insn_displacement (mode, true))
22239
/* The displacement is probably out of range and will require extra
22240
@@ -10218,7 +10216,7 @@
22243
const HOST_WIDE_INT offset = INTVAL (op);
22244
- const int max_disp = max_mov_insn_displacement (mode, consider_sh2a);
22245
+ const int max_disp = sh_max_mov_insn_displacement (mode, consider_sh2a);
22246
const int align_mask = mov_insn_alignment_mask (mode, consider_sh2a);
22248
/* If the mode does not support any displacement always return false.
22249
@@ -10404,7 +10402,7 @@
22250
effectively disable the small displacement insns. */
22251
const int mode_sz = GET_MODE_SIZE (mode);
22252
const int mov_insn_sz = mov_insn_size (mode, false);
22253
- const int max_disp = max_mov_insn_displacement (mode, false);
22254
+ const int max_disp = sh_max_mov_insn_displacement (mode, false);
22255
const int max_disp_next = max_disp + mov_insn_sz;
22256
HOST_WIDE_INT align_modifier = offset > 127 ? mov_insn_sz : 0;
22257
HOST_WIDE_INT offset_adjust;
22258
@@ -13165,7 +13163,8 @@
22259
the insns must have the appropriate alternatives. */
22260
if ((mode == QImode || mode == HImode) && rclass != R0_REGS
22261
&& satisfies_constraint_Sdd (x)
22262
- && disp_addr_displacement (x) <= max_mov_insn_displacement (mode, false))
22263
+ && sh_disp_addr_displacement (x)
22264
+ <= sh_max_mov_insn_displacement (mode, false))
22267
/* When reload is trying to address a QImode or HImode subreg on the stack,
22268
Index: gcc/config/sh/constraints.md
22269
===================================================================
22270
--- a/src/gcc/config/sh/constraints.md (.../tags/gcc_4_8_2_release)
22271
+++ b/src/gcc/config/sh/constraints.md (.../branches/gcc-4_8-branch)
22272
@@ -221,6 +221,7 @@
22273
(define_constraint "Q"
22274
"A pc relative load operand."
22275
(and (match_code "mem")
22276
+ (match_test "GET_MODE (op) != QImode")
22277
(match_test "IS_PC_RELATIVE_LOAD_ADDR_P (XEXP (op, 0))")))
22279
(define_constraint "Bsc"
22280
@@ -295,13 +296,15 @@
22282
(define_memory_constraint "Sdd"
22283
"A memory reference that uses displacement addressing."
22284
- (and (match_test "MEM_P (op) && GET_CODE (XEXP (op, 0)) == PLUS")
22285
+ (and (match_code "mem")
22286
+ (match_test "GET_CODE (XEXP (op, 0)) == PLUS")
22287
(match_test "REG_P (XEXP (XEXP (op, 0), 0))")
22288
(match_test "CONST_INT_P (XEXP (XEXP (op, 0), 1))")))
22290
(define_memory_constraint "Snd"
22291
"A memory reference that excludes displacement addressing."
22292
- (match_test "! satisfies_constraint_Sdd (op)"))
22293
+ (and (match_code "mem")
22294
+ (match_test "! satisfies_constraint_Sdd (op)")))
22296
(define_memory_constraint "Sbv"
22297
"A memory reference, as used in SH2A bclr.b, bset.b, etc."
22298
Index: gcc/config/sh/sh.md
22299
===================================================================
22300
--- a/src/gcc/config/sh/sh.md (.../tags/gcc_4_8_2_release)
22301
+++ b/src/gcc/config/sh/sh.md (.../branches/gcc-4_8-branch)
22302
@@ -6831,34 +6831,9 @@
22303
prepare_move_operands (operands, QImode);
22306
-;; If movqi_reg_reg is specified as an alternative of movqi, movqi will be
22307
-;; selected to copy QImode regs. If one of them happens to be allocated
22308
-;; on the stack, reload will stick to movqi insn and generate wrong
22309
-;; displacement addressing because of the generic m alternatives.
22310
-;; With the movqi_reg_reg being specified before movqi it will be initially
22311
-;; picked to load/store regs. If the regs regs are on the stack reload
22312
-;; try other insns and not stick to movqi_reg_reg, unless there were spilled
22313
-;; pseudos in which case 'm' constraints pertain.
22314
-;; The same applies to the movhi variants.
22316
-;; Notice, that T bit is not allowed as a mov src operand here. This is to
22317
-;; avoid things like (set (reg:QI) (subreg:QI (reg:SI T_REG) 0)), which
22318
-;; introduces zero extensions after T bit stores and redundant reg copies.
22320
-;; FIXME: We can't use 'arith_reg_operand' (which disallows T_REG) as a
22321
-;; predicate for the mov src operand because reload will have trouble
22322
-;; reloading MAC subregs otherwise. For that probably special patterns
22323
-;; would be required.
22324
-(define_insn "*mov<mode>_reg_reg"
22325
- [(set (match_operand:QIHI 0 "arith_reg_dest" "=r,m,*z")
22326
- (match_operand:QIHI 1 "register_operand" "r,*z,m"))]
22327
- "TARGET_SH1 && !t_reg_operand (operands[1], VOIDmode)"
22332
- [(set_attr "type" "move,store,load")])
22334
+;; Specifying the displacement addressing load / store patterns separately
22335
+;; before the generic movqi / movhi pattern allows controlling the order
22336
+;; in which load / store insns are selected in a more fine grained way.
22337
;; FIXME: The non-SH2A and SH2A variants should be combined by adding
22338
;; "enabled" attribute as it is done in other targets.
22339
(define_insn "*mov<mode>_store_mem_disp04"
22340
@@ -6908,38 +6883,44 @@
22341
[(set_attr "type" "load")
22342
(set_attr "length" "2,2,4")])
22344
-;; The m constraints basically allow any kind of addresses to be used with any
22345
-;; source/target register as the other operand. This is not true for
22346
-;; displacement addressing modes on anything but SH2A. That's why the
22347
-;; specialized load/store insns are specified above.
22348
-(define_insn "*movqi"
22349
- [(set (match_operand:QI 0 "general_movdst_operand" "=r,r,m,r,l")
22350
- (match_operand:QI 1 "general_movsrc_operand" "i,m,r,l,r"))]
22351
+;; The order of the constraint alternatives is important here.
22352
+;; Q/r has to come first, otherwise PC relative loads might wrongly get
22353
+;; placed into delay slots. Since there is no QImode PC relative load, the
22354
+;; Q constraint and general_movsrc_operand will reject it for QImode.
22355
+;; The Snd alternatives should come before Sdd in order to avoid a preference
22356
+;; of using r0 als the register operand for addressing modes other than
22357
+;; displacement addressing.
22358
+;; The Sdd alternatives allow only r0 as register operand, even though on
22359
+;; SH2A any register could be allowed by switching to a 32 bit insn.
22360
+;; Generally sticking to the r0 is preferrable, since it generates smaller
22361
+;; code. Obvious r0 reloads can then be eliminated with a peephole on SH2A.
22362
+(define_insn "*mov<mode>"
22363
+ [(set (match_operand:QIHI 0 "general_movdst_operand"
22364
+ "=r,r,r,Snd,r, Sdd,z, r,l")
22365
+ (match_operand:QIHI 1 "general_movsrc_operand"
22366
+ "Q,r,i,r, Snd,z, Sdd,l,r"))]
22368
- && (arith_reg_operand (operands[0], QImode)
22369
- || arith_reg_operand (operands[1], QImode))"
22370
+ && (arith_reg_operand (operands[0], <MODE>mode)
22371
+ || arith_reg_operand (operands[1], <MODE>mode))"
22379
- [(set_attr "type" "movi8,load,store,prget,prset")])
22381
-(define_insn "*movhi"
22382
- [(set (match_operand:HI 0 "general_movdst_operand" "=r,r,r,m,r,l")
22383
- (match_operand:HI 1 "general_movsrc_operand" "Q,i,m,r,l,r"))]
22385
- && (arith_reg_operand (operands[0], HImode)
22386
- || arith_reg_operand (operands[1], HImode))"
22398
- [(set_attr "type" "pcload,movi8,load,store,prget,prset")])
22399
+ [(set_attr "type" "pcload,move,movi8,store,load,store,load,prget,prset")
22400
+ (set (attr "length")
22401
+ (cond [(and (match_operand 0 "displacement_mem_operand")
22402
+ (not (match_operand 0 "short_displacement_mem_operand")))
22404
+ (and (match_operand 1 "displacement_mem_operand")
22405
+ (not (match_operand 1 "short_displacement_mem_operand")))
22407
+ (const_int 2)))])
22409
(define_insn "*movqi_media"
22410
[(set (match_operand:QI 0 "general_movdst_operand" "=r,r,r,m")
22411
@@ -8427,11 +8408,9 @@
22415
- /* It's not safe to go beyond the current basic block after reload. */
22416
set_of_reg s1 = sh_find_set_of_reg (tested_reg, s0.insn,
22418
- ? prev_nonnote_insn_bb
22419
- : prev_nonnote_insn);
22420
+ prev_nonnote_insn);
22422
if (s1.set_src == NULL_RTX)
22425
@@ -8449,15 +8428,25 @@
22429
- /* It's only safe to remove the testing insn if the T bit is not
22430
- modified between the testing insn and the insn that stores the
22431
- T bit. Notice that some T bit stores such as negc also modify
22433
- if (modified_between_p (get_t_reg_rtx (), s1.insn, testing_insn)
22434
- || modified_in_p (get_t_reg_rtx (), s1.insn))
22435
- operands[2] = NULL_RTX;
22436
+ /* It's only safe to remove the testing insn if the T bit is not
22437
+ modified between the testing insn and the insn that stores the
22438
+ T bit. Notice that some T bit stores such as negc also modify
22440
+ if (modified_between_p (get_t_reg_rtx (), s1.insn, testing_insn)
22441
+ || modified_in_p (get_t_reg_rtx (), s1.insn)
22442
+ || !no_labels_between_p (s1.insn, testing_insn))
22443
+ operands[2] = NULL_RTX;
22446
+ /* If the insn that sets the tested reg has a REG_DEAD note on
22447
+ the T bit remove that note since we're extending the usage
22449
+ rtx n = find_regno_note (s1.insn, REG_DEAD, T_REG);
22450
+ if (n != NULL_RTX)
22451
+ remove_note (s1.insn, n);
22458
if (operands[2] == NULL_RTX)
22459
Index: gcc/config/sh/sh.opt
22460
===================================================================
22461
--- a/src/gcc/config/sh/sh.opt (.../tags/gcc_4_8_2_release)
22462
+++ b/src/gcc/config/sh/sh.opt (.../branches/gcc-4_8-branch)
22464
;; Used for various architecture options.
22467
-;; Set if the default precision of th FPU is single.
22468
+;; Set if the default precision of the FPU is single.
22471
;; Set if the a double-precision FPU is present but is restricted to
22472
Index: gcc/config/cris/cris.md
22473
===================================================================
22474
--- a/src/gcc/config/cris/cris.md (.../tags/gcc_4_8_2_release)
22475
+++ b/src/gcc/config/cris/cris.md (.../branches/gcc-4_8-branch)
22476
@@ -758,7 +758,7 @@
22477
(match_operand:SI 1 "const_int_operand" ""))
22478
(match_operand:SI 2 "register_operand" ""))])
22479
(match_operand 3 "register_operand" ""))
22480
- (set (match_operand:SI 4 "register_operand" "")
22481
+ (set (match_operand:SI 4 "cris_nonsp_register_operand" "")
22482
(plus:SI (mult:SI (match_dup 0)
22485
@@ -859,7 +859,7 @@
22486
(match_operand:SI 0 "cris_bdap_operand" "")
22487
(match_operand:SI 1 "cris_bdap_operand" ""))])
22488
(match_operand 2 "register_operand" ""))
22489
- (set (match_operand:SI 3 "register_operand" "")
22490
+ (set (match_operand:SI 3 "cris_nonsp_register_operand" "")
22491
(plus:SI (match_dup 0) (match_dup 1)))])]
22492
"reload_completed && reg_overlap_mentioned_p (operands[3], operands[2])"
22493
[(set (match_dup 4) (match_dup 2))
22494
@@ -3960,7 +3960,7 @@
22498
- [(set (match_operand 0 "register_operand" "")
22499
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22501
4 "cris_operand_extend_operator"
22502
[(match_operand 1 "register_operand" "")
22503
@@ -3990,7 +3990,7 @@
22504
;; Call this op-extend-split-rx=rz
22507
- [(set (match_operand 0 "register_operand" "")
22508
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22510
4 "cris_plus_or_bound_operator"
22511
[(match_operand 1 "register_operand" "")
22512
@@ -4018,7 +4018,7 @@
22513
;; Call this op-extend-split-swapped
22516
- [(set (match_operand 0 "register_operand" "")
22517
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22519
4 "cris_plus_or_bound_operator"
22521
@@ -4044,7 +4044,7 @@
22522
;; bound. Call this op-extend-split-swapped-rx=rz.
22525
- [(set (match_operand 0 "register_operand" "")
22526
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22528
4 "cris_plus_or_bound_operator"
22530
@@ -4075,7 +4075,7 @@
22531
;; Call this op-extend.
22534
- [(set (match_operand 0 "register_operand" "")
22535
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22537
3 "cris_orthogonal_operator"
22538
[(match_operand 1 "register_operand" "")
22539
@@ -4099,7 +4099,7 @@
22540
;; Call this op-split-rx=rz
22543
- [(set (match_operand 0 "register_operand" "")
22544
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22546
3 "cris_commutative_orth_op"
22547
[(match_operand 2 "memory_operand" "")
22548
@@ -4123,7 +4123,7 @@
22549
;; Call this op-split-swapped.
22552
- [(set (match_operand 0 "register_operand" "")
22553
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22555
3 "cris_commutative_orth_op"
22556
[(match_operand 1 "register_operand" "")
22557
@@ -4146,7 +4146,7 @@
22558
;; Call this op-split-swapped-rx=rz.
22561
- [(set (match_operand 0 "register_operand" "")
22562
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22564
3 "cris_orthogonal_operator"
22565
[(match_operand 2 "memory_operand" "")
22566
@@ -4555,10 +4555,11 @@
22567
;; We're not allowed to generate copies of registers with different mode
22568
;; until after reload; copying pseudos upsets reload. CVS as of
22569
;; 2001-08-24, unwind-dw2-fde.c, _Unwind_Find_FDE ICE in
22570
-;; cselib_invalidate_regno.
22571
+;; cselib_invalidate_regno. Also, don't do this for the stack-pointer,
22572
+;; as we don't want it set temporarily to an invalid value.
22574
(define_split ; indir_to_reg_split
22575
- [(set (match_operand 0 "register_operand" "")
22576
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22577
(match_operand 1 "indirect_operand" ""))]
22579
&& REG_P (operands[0])
22580
@@ -4574,7 +4575,7 @@
22581
;; As the above, but MOVS and MOVU.
22584
- [(set (match_operand 0 "register_operand" "")
22585
+ [(set (match_operand 0 "cris_nonsp_register_operand" "")
22587
4 "cris_extend_operator"
22588
[(match_operand 1 "indirect_operand" "")]))]
22589
Index: gcc/config/cris/predicates.md
22590
===================================================================
22591
--- a/src/gcc/config/cris/predicates.md (.../tags/gcc_4_8_2_release)
22592
+++ b/src/gcc/config/cris/predicates.md (.../branches/gcc-4_8-branch)
22594
(match_test "cris_simple_address_operand (XEXP (op, 0),
22597
+(define_predicate "cris_nonsp_register_operand"
22598
+ (and (match_operand 0 "register_operand")
22599
+ (match_test "op != stack_pointer_rtx")))
22601
;; The caller needs to use :SI.
22602
(define_predicate "cris_bdap_sign_extend_operand"
22603
; Disabled until <URL:http://gcc.gnu.org/ml/gcc-patches/2005-10/msg01376.html>
22604
Index: gcc/config/m68k/m68k.c
22605
===================================================================
22606
--- a/src/gcc/config/m68k/m68k.c (.../tags/gcc_4_8_2_release)
22607
+++ b/src/gcc/config/m68k/m68k.c (.../branches/gcc-4_8-branch)
22608
@@ -3325,12 +3325,12 @@
22609
latehalf[1] = adjust_address (operands[1], SImode, 0);
22612
- /* If insn is effectively movd N(sp),-(sp) then we will do the
22613
- high word first. We should use the adjusted operand 1 (which is N+4(sp))
22614
- for the low word as well, to compensate for the first decrement of sp. */
22615
+ /* If insn is effectively movd N(REG),-(REG) then we will do the high
22616
+ word first. We should use the adjusted operand 1 (which is N+4(REG))
22617
+ for the low word as well, to compensate for the first decrement of
22619
if (optype0 == PUSHOP
22620
- && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
22621
- && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
22622
+ && reg_overlap_mentioned_p (XEXP (XEXP (operands[0], 0), 0), operands[1]))
22623
operands[1] = middlehalf[1] = latehalf[1];
22625
/* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
22626
Index: gcc/config/aarch64/aarch64-simd.md
22627
===================================================================
22628
--- a/src/gcc/config/aarch64/aarch64-simd.md (.../tags/gcc_4_8_2_release)
22629
+++ b/src/gcc/config/aarch64/aarch64-simd.md (.../branches/gcc-4_8-branch)
22632
; Main data types used by the insntructions
22634
-(define_attr "simd_mode" "unknown,none,V8QI,V16QI,V4HI,V8HI,V2SI,V4SI,V2DI,V2SF,V4SF,V2DF,OI,CI,XI,DI,DF,SI,HI,QI"
22635
+(define_attr "simd_mode" "unknown,none,V8QI,V16QI,V4HI,V8HI,V2SI,V4SI,V2DI,V2SF,V4SF,V2DF,OI,CI,XI,DI,DF,SI,SF,HI,QI"
22636
(const_string "unknown"))
22639
@@ -1548,12 +1548,12 @@
22643
- emit_insn (gen_aarch64_cmhs<mode> (mask, operands[4], operands[5]));
22644
+ emit_insn (gen_aarch64_cmgeu<mode> (mask, operands[4], operands[5]));
22649
- emit_insn (gen_aarch64_cmhi<mode> (mask, operands[4], operands[5]));
22650
+ emit_insn (gen_aarch64_cmgtu<mode> (mask, operands[4], operands[5]));
22654
@@ -3034,48 +3034,181 @@
22658
-;; cm(eq|ge|le|lt|gt)
22659
+;; cm(eq|ge|gt|lt|le)
22660
+;; Note, we have constraints for Dz and Z as different expanders
22661
+;; have different ideas of what should be passed to this pattern.
22663
-(define_insn "aarch64_cm<cmp><mode>"
22664
+(define_insn "aarch64_cm<optab><mode>"
22665
[(set (match_operand:<V_cmp_result> 0 "register_operand" "=w,w")
22666
- (unspec:<V_cmp_result>
22667
- [(match_operand:VSDQ_I_DI 1 "register_operand" "w,w")
22668
- (match_operand:VSDQ_I_DI 2 "aarch64_simd_reg_or_zero" "w,Z")]
22670
+ (neg:<V_cmp_result>
22671
+ (COMPARISONS:<V_cmp_result>
22672
+ (match_operand:VDQ 1 "register_operand" "w,w")
22673
+ (match_operand:VDQ 2 "aarch64_simd_reg_or_zero" "w,ZDz")
22677
- cm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, %<v>2<Vmtype>
22678
- cm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, #0"
22679
+ cm<n_optab>\t%<v>0<Vmtype>, %<v><cmp_1><Vmtype>, %<v><cmp_2><Vmtype>
22680
+ cm<optab>\t%<v>0<Vmtype>, %<v>1<Vmtype>, #0"
22681
[(set_attr "simd_type" "simd_cmp")
22682
(set_attr "simd_mode" "<MODE>")]
22686
+(define_insn_and_split "aarch64_cm<optab>di"
22687
+ [(set (match_operand:DI 0 "register_operand" "=w,w,r")
22690
+ (match_operand:DI 1 "register_operand" "w,w,r")
22691
+ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz,r")
22695
+ cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2>
22696
+ cm<optab>\t%d0, %d1, #0
22698
+ "reload_completed
22699
+ /* We need to prevent the split from
22700
+ happening in the 'w' constraint cases. */
22701
+ && GP_REGNUM_P (REGNO (operands[0]))
22702
+ && GP_REGNUM_P (REGNO (operands[1]))"
22703
+ [(set (reg:CC CC_REGNUM)
22707
+ (set (match_dup 0)
22710
+ (match_operand 3 "cc_register" "")
22711
+ (const_int 0))))]
22713
+ enum machine_mode mode = SELECT_CC_MODE (<CMP>, operands[1], operands[2]);
22714
+ rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]);
22715
+ rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]);
22716
+ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg));
22719
+ [(set_attr "simd_type" "simd_cmp")
22720
+ (set_attr "simd_mode" "DI")]
22723
-(define_insn "aarch64_cm<cmp><mode>"
22726
+(define_insn "aarch64_cm<optab><mode>"
22727
[(set (match_operand:<V_cmp_result> 0 "register_operand" "=w")
22728
- (unspec:<V_cmp_result>
22729
- [(match_operand:VSDQ_I_DI 1 "register_operand" "w")
22730
- (match_operand:VSDQ_I_DI 2 "register_operand" "w")]
22732
+ (neg:<V_cmp_result>
22733
+ (UCOMPARISONS:<V_cmp_result>
22734
+ (match_operand:VDQ 1 "register_operand" "w")
22735
+ (match_operand:VDQ 2 "register_operand" "w")
22738
- "cm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, %<v>2<Vmtype>"
22739
+ "cm<n_optab>\t%<v>0<Vmtype>, %<v><cmp_1><Vmtype>, %<v><cmp_2><Vmtype>"
22740
[(set_attr "simd_type" "simd_cmp")
22741
(set_attr "simd_mode" "<MODE>")]
22744
-;; fcm(eq|ge|le|lt|gt)
22745
+(define_insn_and_split "aarch64_cm<optab>di"
22746
+ [(set (match_operand:DI 0 "register_operand" "=w,r")
22749
+ (match_operand:DI 1 "register_operand" "w,r")
22750
+ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,r")
22754
+ cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2>
22756
+ "reload_completed
22757
+ /* We need to prevent the split from
22758
+ happening in the 'w' constraint cases. */
22759
+ && GP_REGNUM_P (REGNO (operands[0]))
22760
+ && GP_REGNUM_P (REGNO (operands[1]))"
22761
+ [(set (reg:CC CC_REGNUM)
22765
+ (set (match_dup 0)
22768
+ (match_operand 3 "cc_register" "")
22769
+ (const_int 0))))]
22771
+ enum machine_mode mode = SELECT_CC_MODE (<CMP>, operands[1], operands[2]);
22772
+ rtx cc_reg = aarch64_gen_compare_reg (<CMP>, operands[1], operands[2]);
22773
+ rtx comparison = gen_rtx_<CMP> (mode, operands[1], operands[2]);
22774
+ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg));
22777
+ [(set_attr "simd_type" "simd_cmp")
22778
+ (set_attr "simd_mode" "DI")]
22781
-(define_insn "aarch64_cm<cmp><mode>"
22784
+(define_insn "aarch64_cmtst<mode>"
22785
+ [(set (match_operand:<V_cmp_result> 0 "register_operand" "=w")
22786
+ (neg:<V_cmp_result>
22787
+ (ne:<V_cmp_result>
22789
+ (match_operand:VDQ 1 "register_operand" "w")
22790
+ (match_operand:VDQ 2 "register_operand" "w"))
22791
+ (vec_duplicate:<V_cmp_result> (const_int 0)))))]
22793
+ "cmtst\t%<v>0<Vmtype>, %<v>1<Vmtype>, %<v>2<Vmtype>"
22794
+ [(set_attr "simd_type" "simd_cmp")
22795
+ (set_attr "simd_mode" "<MODE>")]
22798
+(define_insn_and_split "aarch64_cmtstdi"
22799
+ [(set (match_operand:DI 0 "register_operand" "=w,r")
22803
+ (match_operand:DI 1 "register_operand" "w,r")
22804
+ (match_operand:DI 2 "register_operand" "w,r"))
22805
+ (const_int 0))))]
22808
+ cmtst\t%d0, %d1, %d2
22810
+ "reload_completed
22811
+ /* We need to prevent the split from
22812
+ happening in the 'w' constraint cases. */
22813
+ && GP_REGNUM_P (REGNO (operands[0]))
22814
+ && GP_REGNUM_P (REGNO (operands[1]))"
22815
+ [(set (reg:CC_NZ CC_REGNUM)
22817
+ (and:DI (match_dup 1)
22820
+ (set (match_dup 0)
22823
+ (match_operand 3 "cc_register" "")
22824
+ (const_int 0))))]
22826
+ rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]);
22827
+ enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx);
22828
+ rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx);
22829
+ rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx);
22830
+ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg));
22833
+ [(set_attr "simd_type" "simd_cmp")
22834
+ (set_attr "simd_mode" "DI")]
22837
+;; fcm(eq|ge|gt|le|lt)
22839
+(define_insn "aarch64_cm<optab><mode>"
22840
[(set (match_operand:<V_cmp_result> 0 "register_operand" "=w,w")
22841
- (unspec:<V_cmp_result>
22842
- [(match_operand:VDQF 1 "register_operand" "w,w")
22843
- (match_operand:VDQF 2 "aarch64_simd_reg_or_zero" "w,Dz")]
22845
+ (neg:<V_cmp_result>
22846
+ (COMPARISONS:<V_cmp_result>
22847
+ (match_operand:VALLF 1 "register_operand" "w,w")
22848
+ (match_operand:VALLF 2 "aarch64_simd_reg_or_zero" "w,YDz")
22852
- fcm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, %<v>2<Vmtype>
22853
- fcm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, 0"
22854
+ fcm<n_optab>\t%<v>0<Vmtype>, %<v><cmp_1><Vmtype>, %<v><cmp_2><Vmtype>
22855
+ fcm<optab>\t%<v>0<Vmtype>, %<v>1<Vmtype>, 0"
22856
[(set_attr "simd_type" "simd_fcmp")
22857
(set_attr "simd_mode" "<MODE>")]
22859
Index: gcc/config/aarch64/predicates.md
22860
===================================================================
22861
--- a/src/gcc/config/aarch64/predicates.md (.../tags/gcc_4_8_2_release)
22862
+++ b/src/gcc/config/aarch64/predicates.md (.../branches/gcc-4_8-branch)
22864
(ior (match_operand 0 "register_operand")
22865
(match_test "op == const0_rtx"))))
22867
+(define_predicate "aarch64_reg_or_fp_zero"
22868
+ (and (match_code "reg,subreg,const_double")
22869
+ (ior (match_operand 0 "register_operand")
22870
+ (match_test "aarch64_float_const_zero_rtx_p (op)"))))
22872
(define_predicate "aarch64_reg_zero_or_m1_or_1"
22873
(and (match_code "reg,subreg,const_int")
22874
(ior (match_operand 0 "register_operand")
22875
Index: gcc/config/aarch64/arm_neon.h
22876
===================================================================
22877
--- a/src/gcc/config/aarch64/arm_neon.h (.../tags/gcc_4_8_2_release)
22878
+++ b/src/gcc/config/aarch64/arm_neon.h (.../branches/gcc-4_8-branch)
22879
@@ -19551,28 +19551,28 @@
22880
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
22881
vcge_u8 (uint8x8_t __a, uint8x8_t __b)
22883
- return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __a,
22884
+ return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a,
22888
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
22889
vcge_u16 (uint16x4_t __a, uint16x4_t __b)
22891
- return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __a,
22892
+ return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a,
22896
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
22897
vcge_u32 (uint32x2_t __a, uint32x2_t __b)
22899
- return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __a,
22900
+ return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a,
22904
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
22905
vcge_u64 (uint64x1_t __a, uint64x1_t __b)
22907
- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a,
22908
+ return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __a,
22912
@@ -19603,28 +19603,28 @@
22913
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
22914
vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
22916
- return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __a,
22917
+ return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a,
22921
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
22922
vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
22924
- return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __a,
22925
+ return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a,
22929
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
22930
vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
22932
- return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __a,
22933
+ return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a,
22937
__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
22938
vcgeq_u64 (uint64x2_t __a, uint64x2_t __b)
22940
- return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __a,
22941
+ return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a,
22945
@@ -19637,7 +19637,7 @@
22946
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
22947
vcged_u64 (uint64x1_t __a, uint64x1_t __b)
22949
- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a,
22950
+ return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __a,
22954
@@ -19676,28 +19676,28 @@
22955
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
22956
vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
22958
- return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __a,
22959
+ return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a,
22963
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
22964
vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
22966
- return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __a,
22967
+ return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a,
22971
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
22972
vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
22974
- return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __a,
22975
+ return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a,
22979
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
22980
vcgt_u64 (uint64x1_t __a, uint64x1_t __b)
22982
- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a,
22983
+ return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __a,
22987
@@ -19728,28 +19728,28 @@
22988
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
22989
vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
22991
- return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __a,
22992
+ return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a,
22996
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
22997
vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
22999
- return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __a,
23000
+ return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a,
23004
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
23005
vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
23007
- return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __a,
23008
+ return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a,
23012
__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
23013
vcgtq_u64 (uint64x2_t __a, uint64x2_t __b)
23015
- return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __a,
23016
+ return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a,
23020
@@ -19762,7 +19762,7 @@
23021
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
23022
vcgtd_u64 (uint64x1_t __a, uint64x1_t __b)
23024
- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a,
23025
+ return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __a,
23029
@@ -19801,28 +19801,28 @@
23030
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
23031
vcle_u8 (uint8x8_t __a, uint8x8_t __b)
23033
- return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __b,
23034
+ return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __b,
23038
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
23039
vcle_u16 (uint16x4_t __a, uint16x4_t __b)
23041
- return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __b,
23042
+ return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __b,
23046
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
23047
vcle_u32 (uint32x2_t __a, uint32x2_t __b)
23049
- return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __b,
23050
+ return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __b,
23054
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
23055
vcle_u64 (uint64x1_t __a, uint64x1_t __b)
23057
- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __b,
23058
+ return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __b,
23062
@@ -19853,28 +19853,28 @@
23063
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
23064
vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
23066
- return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __b,
23067
+ return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __b,
23071
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
23072
vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
23074
- return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __b,
23075
+ return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __b,
23079
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
23080
vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
23082
- return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __b,
23083
+ return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __b,
23087
__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
23088
vcleq_u64 (uint64x2_t __a, uint64x2_t __b)
23090
- return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __b,
23091
+ return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __b,
23095
@@ -19919,28 +19919,28 @@
23096
__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
23097
vclt_u8 (uint8x8_t __a, uint8x8_t __b)
23099
- return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __b,
23100
+ return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __b,
23104
__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
23105
vclt_u16 (uint16x4_t __a, uint16x4_t __b)
23107
- return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __b,
23108
+ return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __b,
23112
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
23113
vclt_u32 (uint32x2_t __a, uint32x2_t __b)
23115
- return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __b,
23116
+ return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __b,
23120
__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
23121
vclt_u64 (uint64x1_t __a, uint64x1_t __b)
23123
- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __b,
23124
+ return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __b,
23128
@@ -19971,28 +19971,28 @@
23129
__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
23130
vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
23132
- return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __b,
23133
+ return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __b,
23137
__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
23138
vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
23140
- return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __b,
23141
+ return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __b,
23145
__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
23146
vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
23148
- return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __b,
23149
+ return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __b,
23153
__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
23154
vcltq_u64 (uint64x2_t __a, uint64x2_t __b)
23156
- return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __b,
23157
+ return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __b,
23161
Index: gcc/config/aarch64/aarch64.md
23162
===================================================================
23163
--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_4_8_2_release)
23164
+++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-4_8-branch)
23165
@@ -2211,7 +2211,7 @@
23166
(set_attr "mode" "SI")]
23169
-(define_insn "*cstore<mode>_neg"
23170
+(define_insn "cstore<mode>_neg"
23171
[(set (match_operand:ALLI 0 "register_operand" "=r")
23172
(neg:ALLI (match_operator:ALLI 1 "aarch64_comparison_operator"
23173
[(match_operand 2 "cc_register" "") (const_int 0)])))]
23174
Index: gcc/config/aarch64/aarch64-simd-builtins.def
23175
===================================================================
23176
--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def (.../tags/gcc_4_8_2_release)
23177
+++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def (.../branches/gcc-4_8-branch)
23178
@@ -217,8 +217,8 @@
23179
BUILTIN_VSDQ_I_DI (BINOP, cmle)
23180
BUILTIN_VSDQ_I_DI (BINOP, cmlt)
23181
/* Implemented by aarch64_cm<cmp><mode>. */
23182
- BUILTIN_VSDQ_I_DI (BINOP, cmhs)
23183
- BUILTIN_VSDQ_I_DI (BINOP, cmhi)
23184
+ BUILTIN_VSDQ_I_DI (BINOP, cmgeu)
23185
+ BUILTIN_VSDQ_I_DI (BINOP, cmgtu)
23186
BUILTIN_VSDQ_I_DI (BINOP, cmtst)
23188
/* Implemented by aarch64_<fmaxmin><mode>. */
23189
Index: gcc/config/aarch64/aarch64.c
23190
===================================================================
23191
--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_4_8_2_release)
23192
+++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-4_8-branch)
23193
@@ -2274,7 +2274,7 @@
23194
if (ncount < zcount)
23196
emit_move_insn (gen_rtx_REG (Pmode, regnum),
23197
- GEN_INT ((~val) & 0xffff));
23198
+ GEN_INT (val | ~(HOST_WIDE_INT) 0xffff));
23202
Index: gcc/config/aarch64/iterators.md
23203
===================================================================
23204
--- a/src/gcc/config/aarch64/iterators.md (.../tags/gcc_4_8_2_release)
23205
+++ b/src/gcc/config/aarch64/iterators.md (.../branches/gcc-4_8-branch)
23207
;; Vector Float modes.
23208
(define_mode_iterator VDQF [V2SF V4SF V2DF])
23210
+;; All Float modes.
23211
+(define_mode_iterator VALLF [V2SF V4SF V2DF SF DF])
23213
;; Vector Float modes with 2 elements.
23214
(define_mode_iterator V2F [V2SF V2DF])
23216
@@ -213,13 +216,6 @@
23217
UNSPEC_URSHL ; Used in aarch64-simd.md.
23218
UNSPEC_SQRSHL ; Used in aarch64-simd.md.
23219
UNSPEC_UQRSHL ; Used in aarch64-simd.md.
23220
- UNSPEC_CMEQ ; Used in aarch64-simd.md.
23221
- UNSPEC_CMLE ; Used in aarch64-simd.md.
23222
- UNSPEC_CMLT ; Used in aarch64-simd.md.
23223
- UNSPEC_CMGE ; Used in aarch64-simd.md.
23224
- UNSPEC_CMGT ; Used in aarch64-simd.md.
23225
- UNSPEC_CMHS ; Used in aarch64-simd.md.
23226
- UNSPEC_CMHI ; Used in aarch64-simd.md.
23227
UNSPEC_SSLI ; Used in aarch64-simd.md.
23228
UNSPEC_USLI ; Used in aarch64-simd.md.
23229
UNSPEC_SSRI ; Used in aarch64-simd.md.
23230
@@ -227,7 +223,6 @@
23231
UNSPEC_SSHLL ; Used in aarch64-simd.md.
23232
UNSPEC_USHLL ; Used in aarch64-simd.md.
23233
UNSPEC_ADDP ; Used in aarch64-simd.md.
23234
- UNSPEC_CMTST ; Used in aarch64-simd.md.
23235
UNSPEC_FMAX ; Used in aarch64-simd.md.
23236
UNSPEC_FMIN ; Used in aarch64-simd.md.
23237
UNSPEC_BSL ; Used in aarch64-simd.md.
23238
@@ -251,6 +246,7 @@
23240
;; For scalar usage of vector/FP registers
23241
(define_mode_attr v [(QI "b") (HI "h") (SI "s") (DI "d")
23242
+ (SF "s") (DF "d")
23243
(V8QI "") (V16QI "")
23244
(V4HI "") (V8HI "")
23245
(V2SI "") (V4SI "")
23246
@@ -305,7 +301,8 @@
23247
(V4SF ".4s") (V2DF ".2d")
23254
;; Register suffix narrowed modes for VQN.
23255
(define_mode_attr Vmntype [(V8HI ".8b") (V4SI ".4h")
23256
@@ -444,7 +441,8 @@
23257
(V2SI "V2SI") (V4SI "V4SI")
23258
(DI "DI") (V2DI "V2DI")
23259
(V2SF "V2SI") (V4SF "V4SI")
23261
+ (V2DF "V2DI") (DF "DI")
23264
;; Lower case mode of results of comparison operations.
23265
(define_mode_attr v_cmp_result [(V8QI "v8qi") (V16QI "v16qi")
23266
@@ -452,7 +450,8 @@
23267
(V2SI "v2si") (V4SI "v4si")
23268
(DI "di") (V2DI "v2di")
23269
(V2SF "v2si") (V4SF "v4si")
23271
+ (V2DF "v2di") (DF "di")
23274
;; Vm for lane instructions is restricted to FP_LO_REGS.
23275
(define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x")
23276
@@ -543,6 +542,12 @@
23277
;; Code iterator for signed variants of vector saturating binary ops.
23278
(define_code_iterator SBINQOPS [ss_plus ss_minus])
23280
+;; Comparison operators for <F>CM.
23281
+(define_code_iterator COMPARISONS [lt le eq ge gt])
23283
+;; Unsigned comparison operators.
23284
+(define_code_iterator UCOMPARISONS [ltu leu geu gtu])
23286
;; -------------------------------------------------------------------
23288
;; -------------------------------------------------------------------
23289
@@ -571,8 +576,29 @@
23302
+;; For comparison operators we use the FCM* and CM* instructions.
23303
+;; As there are no CMLE or CMLT instructions which act on 3 vector
23304
+;; operands, we must use CMGE or CMGT and swap the order of the
23305
+;; source operands.
23307
+(define_code_attr n_optab [(lt "gt") (le "ge") (eq "eq") (ge "ge") (gt "gt")
23308
+ (ltu "hi") (leu "hs") (geu "hs") (gtu "hi")])
23309
+(define_code_attr cmp_1 [(lt "2") (le "2") (eq "1") (ge "1") (gt "1")
23310
+ (ltu "2") (leu "2") (geu "1") (gtu "1")])
23311
+(define_code_attr cmp_2 [(lt "1") (le "1") (eq "2") (ge "2") (gt "2")
23312
+ (ltu "1") (leu "1") (geu "2") (gtu "2")])
23314
+(define_code_attr CMP [(lt "LT") (le "LE") (eq "EQ") (ge "GE") (gt "GT")
23315
+ (ltu "LTU") (leu "LEU") (geu "GEU") (gtu "GTU")])
23317
;; Optab prefix for sign/zero-extending operations
23318
(define_code_attr su_optab [(sign_extend "") (zero_extend "u")
23319
(div "") (udiv "u")
23320
@@ -680,11 +706,6 @@
23321
UNSPEC_SQSHRN UNSPEC_UQSHRN
23322
UNSPEC_SQRSHRN UNSPEC_UQRSHRN])
23324
-(define_int_iterator VCMP_S [UNSPEC_CMEQ UNSPEC_CMGE UNSPEC_CMGT
23325
- UNSPEC_CMLE UNSPEC_CMLT])
23327
-(define_int_iterator VCMP_U [UNSPEC_CMHS UNSPEC_CMHI UNSPEC_CMTST])
23329
(define_int_iterator PERMUTE [UNSPEC_ZIP1 UNSPEC_ZIP2
23330
UNSPEC_TRN1 UNSPEC_TRN2
23331
UNSPEC_UZP1 UNSPEC_UZP2])
23332
@@ -768,12 +789,6 @@
23333
(UNSPEC_RADDHN2 "add")
23334
(UNSPEC_RSUBHN2 "sub")])
23336
-(define_int_attr cmp [(UNSPEC_CMGE "ge") (UNSPEC_CMGT "gt")
23337
- (UNSPEC_CMLE "le") (UNSPEC_CMLT "lt")
23338
- (UNSPEC_CMEQ "eq")
23339
- (UNSPEC_CMHS "hs") (UNSPEC_CMHI "hi")
23340
- (UNSPEC_CMTST "tst")])
23342
(define_int_attr offsetlr [(UNSPEC_SSLI "1") (UNSPEC_USLI "1")
23343
(UNSPEC_SSRI "0") (UNSPEC_USRI "0")])
23345
Index: gcc/config/rs6000/rs6000.c
23346
===================================================================
23347
--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_4_8_2_release)
23348
+++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-4_8-branch)
23349
@@ -5428,12 +5428,13 @@
23355
if (TARGET_E500_DOUBLE)
23356
return (SPE_CONST_OFFSET_OK (offset)
23357
&& SPE_CONST_OFFSET_OK (offset + 8));
23358
+ /* fall through */
23365
Index: gcc/config/rs6000/rs6000.md
23366
===================================================================
23367
--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_4_8_2_release)
23368
+++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-4_8-branch)
23369
@@ -2412,7 +2412,7 @@
23370
(match_operand:SI 2 "gpc_reg_operand" "r,r"))
23372
(clobber (match_scratch:SI 3 "=r,r"))]
23378
@@ -2425,7 +2425,7 @@
23379
(match_operand:SI 2 "gpc_reg_operand" ""))
23381
(clobber (match_scratch:SI 3 ""))]
23382
- "reload_completed"
23383
+ "TARGET_32BIT && reload_completed"
23384
[(set (match_dup 3)
23385
(mult:SI (match_dup 1) (match_dup 2)))
23387
@@ -2440,7 +2440,7 @@
23389
(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
23390
(mult:SI (match_dup 1) (match_dup 2)))]
23396
@@ -2454,7 +2454,7 @@
23398
(set (match_operand:SI 0 "gpc_reg_operand" "")
23399
(mult:SI (match_dup 1) (match_dup 2)))]
23400
- "reload_completed"
23401
+ "TARGET_32BIT && reload_completed"
23402
[(set (match_dup 0)
23403
(mult:SI (match_dup 1) (match_dup 2)))
23405
Index: gcc/config/arm/arm.c
23406
===================================================================
23407
--- a/src/gcc/config/arm/arm.c (.../tags/gcc_4_8_2_release)
23408
+++ b/src/gcc/config/arm/arm.c (.../branches/gcc-4_8-branch)
23409
@@ -5425,7 +5425,8 @@
23410
if (!crtl->uses_pic_offset_table)
23412
gcc_assert (can_create_pseudo_p ());
23413
- if (arm_pic_register != INVALID_REGNUM)
23414
+ if (arm_pic_register != INVALID_REGNUM
23415
+ && !(TARGET_THUMB1 && arm_pic_register > LAST_LO_REGNUM))
23417
if (!cfun->machine->pic_reg)
23418
cfun->machine->pic_reg = gen_rtx_REG (Pmode, arm_pic_register);
23419
@@ -5451,7 +5452,12 @@
23420
crtl->uses_pic_offset_table = 1;
23423
- arm_load_pic_register (0UL);
23424
+ if (TARGET_THUMB1 && arm_pic_register != INVALID_REGNUM
23425
+ && arm_pic_register > LAST_LO_REGNUM)
23426
+ emit_move_insn (cfun->machine->pic_reg,
23427
+ gen_rtx_REG (Pmode, arm_pic_register));
23429
+ arm_load_pic_register (0UL);
23431
seq = get_insns ();
23433
@@ -5709,6 +5715,14 @@
23434
emit_insn (gen_movsi (pic_offset_table_rtx, pic_tmp));
23435
emit_insn (gen_pic_add_dot_plus_four (pic_reg, pic_reg, labelno));
23437
+ else if (arm_pic_register != INVALID_REGNUM
23438
+ && arm_pic_register > LAST_LO_REGNUM
23439
+ && REGNO (pic_reg) <= LAST_LO_REGNUM)
23441
+ emit_insn (gen_pic_load_addr_unified (pic_reg, pic_rtx, labelno));
23442
+ emit_move_insn (gen_rtx_REG (Pmode, arm_pic_register), pic_reg);
23443
+ emit_use (gen_rtx_REG (Pmode, arm_pic_register));
23446
emit_insn (gen_pic_load_addr_unified (pic_reg, pic_rtx, labelno));
23448
@@ -21279,7 +21293,11 @@
23452
- op[argc] = expand_normal (arg[argc]);
23453
+ /* Use EXPAND_MEMORY for NEON_ARG_MEMORY to ensure a MEM_P
23455
+ op[argc] = expand_expr (arg[argc], NULL_RTX, VOIDmode,
23456
+ (thisarg == NEON_ARG_MEMORY
23457
+ ? EXPAND_MEMORY : EXPAND_NORMAL));
23461
@@ -21298,6 +21316,9 @@
23464
case NEON_ARG_MEMORY:
23465
+ /* Check if expand failed. */
23466
+ if (op[argc] == const0_rtx)
23468
gcc_assert (MEM_P (op[argc]));
23469
PUT_MODE (op[argc], mode[argc]);
23470
/* ??? arm_neon.h uses the same built-in functions for signed
23471
@@ -23555,6 +23576,7 @@
23472
num_regs = bit_count (saved_regs_mask);
23473
if ((offsets->outgoing_args != (1 + num_regs)) || cfun->calls_alloca)
23475
+ emit_insn (gen_blockage ());
23476
/* Unwind the stack to just below the saved registers. */
23477
emit_insn (gen_addsi3 (stack_pointer_rtx,
23478
hard_frame_pointer_rtx,
23479
@@ -23583,8 +23605,8 @@
23481
if (crtl->calls_eh_return)
23482
emit_insn (gen_addsi3 (stack_pointer_rtx,
23483
- stack_pointer_rtx,
23484
- GEN_INT (ARM_EH_STACKADJ_REGNUM)));
23485
+ stack_pointer_rtx,
23486
+ gen_rtx_REG (SImode, ARM_EH_STACKADJ_REGNUM)));
23488
if (IS_STACKALIGN (func_type))
23489
/* Restore the original stack pointer. Before prologue, the stack was
23490
Index: gcc/config/arm/vfp.md
23491
===================================================================
23492
--- a/src/gcc/config/arm/vfp.md (.../tags/gcc_4_8_2_release)
23493
+++ b/src/gcc/config/arm/vfp.md (.../branches/gcc-4_8-branch)
23494
@@ -1264,6 +1264,7 @@
23495
"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
23496
"vrint<vrint_variant>%?.<V_if_elem>\\t%<V_reg>0, %<V_reg>1"
23497
[(set_attr "predicable" "<vrint_predicable>")
23498
+ (set_attr "conds" "<vrint_conds>")
23499
(set_attr "type" "f_rint<vfp_type>")]
23502
@@ -1280,7 +1281,8 @@
23503
(match_operand:SDF 2 "register_operand" "<F_constraint>")))]
23504
"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
23505
"vmaxnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
23506
- [(set_attr "type" "f_minmax<vfp_type>")]
23507
+ [(set_attr "type" "f_minmax<vfp_type>")
23508
+ (set_attr "conds" "unconditional")]
23511
(define_insn "smin<mode>3"
23512
@@ -1289,7 +1291,8 @@
23513
(match_operand:SDF 2 "register_operand" "<F_constraint>")))]
23514
"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>"
23515
"vminnm.<V_if_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
23516
- [(set_attr "type" "f_minmax<vfp_type>")]
23517
+ [(set_attr "type" "f_minmax<vfp_type>")
23518
+ (set_attr "conds" "unconditional")]
23521
;; Unimplemented insns:
23522
Index: gcc/config/arm/ldmstm.md
23523
===================================================================
23524
--- a/src/gcc/config/arm/ldmstm.md (.../tags/gcc_4_8_2_release)
23525
+++ b/src/gcc/config/arm/ldmstm.md (.../branches/gcc-4_8-branch)
23526
@@ -23,15 +23,15 @@
23528
(define_insn "*ldm4_ia"
23529
[(match_parallel 0 "load_multiple_operation"
23530
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23531
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23532
(mem:SI (match_operand:SI 5 "s_register_operand" "rk")))
23533
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23534
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23535
(mem:SI (plus:SI (match_dup 5)
23537
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23538
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23539
(mem:SI (plus:SI (match_dup 5)
23541
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23542
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23543
(mem:SI (plus:SI (match_dup 5)
23544
(const_int 12))))])]
23545
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23546
@@ -41,15 +41,15 @@
23548
(define_insn "*thumb_ldm4_ia"
23549
[(match_parallel 0 "load_multiple_operation"
23550
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23551
+ [(set (match_operand:SI 1 "low_register_operand" "")
23552
(mem:SI (match_operand:SI 5 "s_register_operand" "l")))
23553
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23554
+ (set (match_operand:SI 2 "low_register_operand" "")
23555
(mem:SI (plus:SI (match_dup 5)
23557
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23558
+ (set (match_operand:SI 3 "low_register_operand" "")
23559
(mem:SI (plus:SI (match_dup 5)
23561
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23562
+ (set (match_operand:SI 4 "low_register_operand" "")
23563
(mem:SI (plus:SI (match_dup 5)
23564
(const_int 12))))])]
23565
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
23566
@@ -60,15 +60,15 @@
23567
[(match_parallel 0 "load_multiple_operation"
23568
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23569
(plus:SI (match_dup 5) (const_int 16)))
23570
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23571
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23572
(mem:SI (match_dup 5)))
23573
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23574
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23575
(mem:SI (plus:SI (match_dup 5)
23577
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23578
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23579
(mem:SI (plus:SI (match_dup 5)
23581
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23582
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23583
(mem:SI (plus:SI (match_dup 5)
23584
(const_int 12))))])]
23585
"TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
23586
@@ -80,15 +80,15 @@
23587
[(match_parallel 0 "load_multiple_operation"
23588
[(set (match_operand:SI 5 "s_register_operand" "+&l")
23589
(plus:SI (match_dup 5) (const_int 16)))
23590
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23591
+ (set (match_operand:SI 1 "low_register_operand" "")
23592
(mem:SI (match_dup 5)))
23593
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23594
+ (set (match_operand:SI 2 "low_register_operand" "")
23595
(mem:SI (plus:SI (match_dup 5)
23597
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23598
+ (set (match_operand:SI 3 "low_register_operand" "")
23599
(mem:SI (plus:SI (match_dup 5)
23601
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23602
+ (set (match_operand:SI 4 "low_register_operand" "")
23603
(mem:SI (plus:SI (match_dup 5)
23604
(const_int 12))))])]
23605
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
23606
@@ -98,13 +98,13 @@
23607
(define_insn "*stm4_ia"
23608
[(match_parallel 0 "store_multiple_operation"
23609
[(set (mem:SI (match_operand:SI 5 "s_register_operand" "rk"))
23610
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23611
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23612
(set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
23613
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23614
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23615
(set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
23616
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23617
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23618
(set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
23619
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23620
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23621
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23622
"stm%(ia%)\t%5, {%1, %2, %3, %4}"
23623
[(set_attr "type" "store4")
23624
@@ -115,13 +115,13 @@
23625
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23626
(plus:SI (match_dup 5) (const_int 16)))
23627
(set (mem:SI (match_dup 5))
23628
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23629
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23630
(set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
23631
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23632
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23633
(set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
23634
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23635
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23636
(set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
23637
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23638
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23639
"TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
23640
"stm%(ia%)\t%5!, {%1, %2, %3, %4}"
23641
[(set_attr "type" "store4")
23642
@@ -132,29 +132,29 @@
23643
[(set (match_operand:SI 5 "s_register_operand" "+&l")
23644
(plus:SI (match_dup 5) (const_int 16)))
23645
(set (mem:SI (match_dup 5))
23646
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23647
+ (match_operand:SI 1 "low_register_operand" ""))
23648
(set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
23649
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23650
+ (match_operand:SI 2 "low_register_operand" ""))
23651
(set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
23652
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23653
+ (match_operand:SI 3 "low_register_operand" ""))
23654
(set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
23655
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23656
+ (match_operand:SI 4 "low_register_operand" ""))])]
23657
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
23658
"stm%(ia%)\t%5!, {%1, %2, %3, %4}"
23659
[(set_attr "type" "store4")])
23661
(define_insn "*ldm4_ib"
23662
[(match_parallel 0 "load_multiple_operation"
23663
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23664
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23665
(mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk")
23667
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23668
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23669
(mem:SI (plus:SI (match_dup 5)
23671
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23672
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23673
(mem:SI (plus:SI (match_dup 5)
23675
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23676
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23677
(mem:SI (plus:SI (match_dup 5)
23678
(const_int 16))))])]
23679
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
23680
@@ -166,16 +166,16 @@
23681
[(match_parallel 0 "load_multiple_operation"
23682
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23683
(plus:SI (match_dup 5) (const_int 16)))
23684
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23685
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23686
(mem:SI (plus:SI (match_dup 5)
23688
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23689
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23690
(mem:SI (plus:SI (match_dup 5)
23692
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23693
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23694
(mem:SI (plus:SI (match_dup 5)
23696
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23697
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23698
(mem:SI (plus:SI (match_dup 5)
23699
(const_int 16))))])]
23700
"TARGET_ARM && XVECLEN (operands[0], 0) == 5"
23701
@@ -186,13 +186,13 @@
23702
(define_insn "*stm4_ib"
23703
[(match_parallel 0 "store_multiple_operation"
23704
[(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4)))
23705
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23706
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23707
(set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
23708
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23709
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23710
(set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
23711
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23712
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23713
(set (mem:SI (plus:SI (match_dup 5) (const_int 16)))
23714
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23715
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23716
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
23717
"stm%(ib%)\t%5, {%1, %2, %3, %4}"
23718
[(set_attr "type" "store4")
23719
@@ -203,13 +203,13 @@
23720
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23721
(plus:SI (match_dup 5) (const_int 16)))
23722
(set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
23723
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23724
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23725
(set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
23726
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23727
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23728
(set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
23729
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23730
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23731
(set (mem:SI (plus:SI (match_dup 5) (const_int 16)))
23732
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23733
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23734
"TARGET_ARM && XVECLEN (operands[0], 0) == 5"
23735
"stm%(ib%)\t%5!, {%1, %2, %3, %4}"
23736
[(set_attr "type" "store4")
23737
@@ -217,16 +217,16 @@
23739
(define_insn "*ldm4_da"
23740
[(match_parallel 0 "load_multiple_operation"
23741
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23742
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23743
(mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk")
23745
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23746
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23747
(mem:SI (plus:SI (match_dup 5)
23749
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23750
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23751
(mem:SI (plus:SI (match_dup 5)
23753
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23754
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23755
(mem:SI (match_dup 5)))])]
23756
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
23757
"ldm%(da%)\t%5, {%1, %2, %3, %4}"
23758
@@ -237,16 +237,16 @@
23759
[(match_parallel 0 "load_multiple_operation"
23760
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23761
(plus:SI (match_dup 5) (const_int -16)))
23762
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23763
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23764
(mem:SI (plus:SI (match_dup 5)
23766
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23767
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23768
(mem:SI (plus:SI (match_dup 5)
23770
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23771
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23772
(mem:SI (plus:SI (match_dup 5)
23774
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23775
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23776
(mem:SI (match_dup 5)))])]
23777
"TARGET_ARM && XVECLEN (operands[0], 0) == 5"
23778
"ldm%(da%)\t%5!, {%1, %2, %3, %4}"
23779
@@ -256,13 +256,13 @@
23780
(define_insn "*stm4_da"
23781
[(match_parallel 0 "store_multiple_operation"
23782
[(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12)))
23783
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23784
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23785
(set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
23786
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23787
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23788
(set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
23789
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23790
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23791
(set (mem:SI (match_dup 5))
23792
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23793
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23794
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
23795
"stm%(da%)\t%5, {%1, %2, %3, %4}"
23796
[(set_attr "type" "store4")
23797
@@ -273,13 +273,13 @@
23798
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23799
(plus:SI (match_dup 5) (const_int -16)))
23800
(set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
23801
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23802
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23803
(set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
23804
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23805
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23806
(set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
23807
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23808
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23809
(set (mem:SI (match_dup 5))
23810
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23811
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23812
"TARGET_ARM && XVECLEN (operands[0], 0) == 5"
23813
"stm%(da%)\t%5!, {%1, %2, %3, %4}"
23814
[(set_attr "type" "store4")
23815
@@ -287,16 +287,16 @@
23817
(define_insn "*ldm4_db"
23818
[(match_parallel 0 "load_multiple_operation"
23819
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23820
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23821
(mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk")
23823
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23824
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23825
(mem:SI (plus:SI (match_dup 5)
23827
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23828
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23829
(mem:SI (plus:SI (match_dup 5)
23831
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23832
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23833
(mem:SI (plus:SI (match_dup 5)
23834
(const_int -4))))])]
23835
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23836
@@ -308,16 +308,16 @@
23837
[(match_parallel 0 "load_multiple_operation"
23838
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23839
(plus:SI (match_dup 5) (const_int -16)))
23840
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23841
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23842
(mem:SI (plus:SI (match_dup 5)
23844
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23845
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23846
(mem:SI (plus:SI (match_dup 5)
23848
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23849
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23850
(mem:SI (plus:SI (match_dup 5)
23852
- (set (match_operand:SI 4 "arm_hard_register_operand" "")
23853
+ (set (match_operand:SI 4 "arm_hard_general_register_operand" "")
23854
(mem:SI (plus:SI (match_dup 5)
23855
(const_int -4))))])]
23856
"TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
23857
@@ -328,13 +328,13 @@
23858
(define_insn "*stm4_db"
23859
[(match_parallel 0 "store_multiple_operation"
23860
[(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16)))
23861
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23862
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23863
(set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
23864
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23865
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23866
(set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
23867
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23868
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23869
(set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
23870
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23871
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23872
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23873
"stm%(db%)\t%5, {%1, %2, %3, %4}"
23874
[(set_attr "type" "store4")
23875
@@ -345,13 +345,13 @@
23876
[(set (match_operand:SI 5 "s_register_operand" "+&rk")
23877
(plus:SI (match_dup 5) (const_int -16)))
23878
(set (mem:SI (plus:SI (match_dup 5) (const_int -16)))
23879
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23880
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23881
(set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
23882
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23883
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23884
(set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
23885
- (match_operand:SI 3 "arm_hard_register_operand" ""))
23886
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))
23887
(set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
23888
- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
23889
+ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])]
23890
"TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
23891
"stm%(db%)\t%5!, {%1, %2, %3, %4}"
23892
[(set_attr "type" "store4")
23893
@@ -466,12 +466,12 @@
23895
(define_insn "*ldm3_ia"
23896
[(match_parallel 0 "load_multiple_operation"
23897
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23898
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23899
(mem:SI (match_operand:SI 4 "s_register_operand" "rk")))
23900
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23901
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23902
(mem:SI (plus:SI (match_dup 4)
23904
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23905
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23906
(mem:SI (plus:SI (match_dup 4)
23907
(const_int 8))))])]
23908
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
23909
@@ -481,12 +481,12 @@
23911
(define_insn "*thumb_ldm3_ia"
23912
[(match_parallel 0 "load_multiple_operation"
23913
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
23914
+ [(set (match_operand:SI 1 "low_register_operand" "")
23915
(mem:SI (match_operand:SI 4 "s_register_operand" "l")))
23916
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23917
+ (set (match_operand:SI 2 "low_register_operand" "")
23918
(mem:SI (plus:SI (match_dup 4)
23920
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23921
+ (set (match_operand:SI 3 "low_register_operand" "")
23922
(mem:SI (plus:SI (match_dup 4)
23923
(const_int 8))))])]
23924
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
23925
@@ -497,12 +497,12 @@
23926
[(match_parallel 0 "load_multiple_operation"
23927
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
23928
(plus:SI (match_dup 4) (const_int 12)))
23929
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23930
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
23931
(mem:SI (match_dup 4)))
23932
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23933
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
23934
(mem:SI (plus:SI (match_dup 4)
23936
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23937
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
23938
(mem:SI (plus:SI (match_dup 4)
23939
(const_int 8))))])]
23940
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23941
@@ -514,12 +514,12 @@
23942
[(match_parallel 0 "load_multiple_operation"
23943
[(set (match_operand:SI 4 "s_register_operand" "+&l")
23944
(plus:SI (match_dup 4) (const_int 12)))
23945
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
23946
+ (set (match_operand:SI 1 "low_register_operand" "")
23947
(mem:SI (match_dup 4)))
23948
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
23949
+ (set (match_operand:SI 2 "low_register_operand" "")
23950
(mem:SI (plus:SI (match_dup 4)
23952
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
23953
+ (set (match_operand:SI 3 "low_register_operand" "")
23954
(mem:SI (plus:SI (match_dup 4)
23955
(const_int 8))))])]
23956
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
23957
@@ -529,11 +529,11 @@
23958
(define_insn "*stm3_ia"
23959
[(match_parallel 0 "store_multiple_operation"
23960
[(set (mem:SI (match_operand:SI 4 "s_register_operand" "rk"))
23961
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23962
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23963
(set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
23964
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23965
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23966
(set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
23967
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
23968
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
23969
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
23970
"stm%(ia%)\t%4, {%1, %2, %3}"
23971
[(set_attr "type" "store3")
23972
@@ -544,11 +544,11 @@
23973
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
23974
(plus:SI (match_dup 4) (const_int 12)))
23975
(set (mem:SI (match_dup 4))
23976
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23977
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
23978
(set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
23979
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23980
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
23981
(set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
23982
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
23983
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
23984
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
23985
"stm%(ia%)\t%4!, {%1, %2, %3}"
23986
[(set_attr "type" "store3")
23987
@@ -559,24 +559,24 @@
23988
[(set (match_operand:SI 4 "s_register_operand" "+&l")
23989
(plus:SI (match_dup 4) (const_int 12)))
23990
(set (mem:SI (match_dup 4))
23991
- (match_operand:SI 1 "arm_hard_register_operand" ""))
23992
+ (match_operand:SI 1 "low_register_operand" ""))
23993
(set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
23994
- (match_operand:SI 2 "arm_hard_register_operand" ""))
23995
+ (match_operand:SI 2 "low_register_operand" ""))
23996
(set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
23997
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
23998
+ (match_operand:SI 3 "low_register_operand" ""))])]
23999
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
24000
"stm%(ia%)\t%4!, {%1, %2, %3}"
24001
[(set_attr "type" "store3")])
24003
(define_insn "*ldm3_ib"
24004
[(match_parallel 0 "load_multiple_operation"
24005
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24006
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24007
(mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk")
24009
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24010
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24011
(mem:SI (plus:SI (match_dup 4)
24013
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24014
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24015
(mem:SI (plus:SI (match_dup 4)
24016
(const_int 12))))])]
24017
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24018
@@ -588,13 +588,13 @@
24019
[(match_parallel 0 "load_multiple_operation"
24020
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24021
(plus:SI (match_dup 4) (const_int 12)))
24022
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24023
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24024
(mem:SI (plus:SI (match_dup 4)
24026
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24027
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24028
(mem:SI (plus:SI (match_dup 4)
24030
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24031
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24032
(mem:SI (plus:SI (match_dup 4)
24033
(const_int 12))))])]
24034
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
24035
@@ -605,11 +605,11 @@
24036
(define_insn "*stm3_ib"
24037
[(match_parallel 0 "store_multiple_operation"
24038
[(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4)))
24039
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24040
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24041
(set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
24042
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24043
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24044
(set (mem:SI (plus:SI (match_dup 4) (const_int 12)))
24045
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24046
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24047
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24048
"stm%(ib%)\t%4, {%1, %2, %3}"
24049
[(set_attr "type" "store3")
24050
@@ -620,11 +620,11 @@
24051
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24052
(plus:SI (match_dup 4) (const_int 12)))
24053
(set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
24054
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24055
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24056
(set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
24057
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24058
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24059
(set (mem:SI (plus:SI (match_dup 4) (const_int 12)))
24060
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24061
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24062
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
24063
"stm%(ib%)\t%4!, {%1, %2, %3}"
24064
[(set_attr "type" "store3")
24065
@@ -632,13 +632,13 @@
24067
(define_insn "*ldm3_da"
24068
[(match_parallel 0 "load_multiple_operation"
24069
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24070
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24071
(mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk")
24073
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24074
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24075
(mem:SI (plus:SI (match_dup 4)
24077
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24078
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24079
(mem:SI (match_dup 4)))])]
24080
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24081
"ldm%(da%)\t%4, {%1, %2, %3}"
24082
@@ -649,13 +649,13 @@
24083
[(match_parallel 0 "load_multiple_operation"
24084
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24085
(plus:SI (match_dup 4) (const_int -12)))
24086
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24087
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24088
(mem:SI (plus:SI (match_dup 4)
24090
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24091
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24092
(mem:SI (plus:SI (match_dup 4)
24094
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24095
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24096
(mem:SI (match_dup 4)))])]
24097
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
24098
"ldm%(da%)\t%4!, {%1, %2, %3}"
24099
@@ -665,11 +665,11 @@
24100
(define_insn "*stm3_da"
24101
[(match_parallel 0 "store_multiple_operation"
24102
[(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8)))
24103
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24104
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24105
(set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
24106
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24107
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24108
(set (mem:SI (match_dup 4))
24109
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24110
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24111
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24112
"stm%(da%)\t%4, {%1, %2, %3}"
24113
[(set_attr "type" "store3")
24114
@@ -680,11 +680,11 @@
24115
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24116
(plus:SI (match_dup 4) (const_int -12)))
24117
(set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
24118
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24119
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24120
(set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
24121
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24122
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24123
(set (mem:SI (match_dup 4))
24124
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24125
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24126
"TARGET_ARM && XVECLEN (operands[0], 0) == 4"
24127
"stm%(da%)\t%4!, {%1, %2, %3}"
24128
[(set_attr "type" "store3")
24129
@@ -692,13 +692,13 @@
24131
(define_insn "*ldm3_db"
24132
[(match_parallel 0 "load_multiple_operation"
24133
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24134
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24135
(mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk")
24137
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24138
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24139
(mem:SI (plus:SI (match_dup 4)
24141
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24142
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24143
(mem:SI (plus:SI (match_dup 4)
24144
(const_int -4))))])]
24145
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24146
@@ -710,13 +710,13 @@
24147
[(match_parallel 0 "load_multiple_operation"
24148
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24149
(plus:SI (match_dup 4) (const_int -12)))
24150
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24151
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24152
(mem:SI (plus:SI (match_dup 4)
24154
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24155
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24156
(mem:SI (plus:SI (match_dup 4)
24158
- (set (match_operand:SI 3 "arm_hard_register_operand" "")
24159
+ (set (match_operand:SI 3 "arm_hard_general_register_operand" "")
24160
(mem:SI (plus:SI (match_dup 4)
24161
(const_int -4))))])]
24162
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
24163
@@ -727,11 +727,11 @@
24164
(define_insn "*stm3_db"
24165
[(match_parallel 0 "store_multiple_operation"
24166
[(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12)))
24167
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24168
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24169
(set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
24170
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24171
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24172
(set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
24173
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24174
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24175
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24176
"stm%(db%)\t%4, {%1, %2, %3}"
24177
[(set_attr "type" "store3")
24178
@@ -742,11 +742,11 @@
24179
[(set (match_operand:SI 4 "s_register_operand" "+&rk")
24180
(plus:SI (match_dup 4) (const_int -12)))
24181
(set (mem:SI (plus:SI (match_dup 4) (const_int -12)))
24182
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24183
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24184
(set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
24185
- (match_operand:SI 2 "arm_hard_register_operand" ""))
24186
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))
24187
(set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
24188
- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
24189
+ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])]
24190
"TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
24191
"stm%(db%)\t%4!, {%1, %2, %3}"
24192
[(set_attr "type" "store3")
24193
@@ -847,9 +847,9 @@
24195
(define_insn "*ldm2_ia"
24196
[(match_parallel 0 "load_multiple_operation"
24197
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24198
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24199
(mem:SI (match_operand:SI 3 "s_register_operand" "rk")))
24200
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24201
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24202
(mem:SI (plus:SI (match_dup 3)
24203
(const_int 4))))])]
24204
"TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
24205
@@ -859,9 +859,9 @@
24207
(define_insn "*thumb_ldm2_ia"
24208
[(match_parallel 0 "load_multiple_operation"
24209
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24210
+ [(set (match_operand:SI 1 "low_register_operand" "")
24211
(mem:SI (match_operand:SI 3 "s_register_operand" "l")))
24212
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24213
+ (set (match_operand:SI 2 "low_register_operand" "")
24214
(mem:SI (plus:SI (match_dup 3)
24215
(const_int 4))))])]
24216
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2"
24217
@@ -872,9 +872,9 @@
24218
[(match_parallel 0 "load_multiple_operation"
24219
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24220
(plus:SI (match_dup 3) (const_int 8)))
24221
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24222
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24223
(mem:SI (match_dup 3)))
24224
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24225
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24226
(mem:SI (plus:SI (match_dup 3)
24227
(const_int 4))))])]
24228
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24229
@@ -886,9 +886,9 @@
24230
[(match_parallel 0 "load_multiple_operation"
24231
[(set (match_operand:SI 3 "s_register_operand" "+&l")
24232
(plus:SI (match_dup 3) (const_int 8)))
24233
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24234
+ (set (match_operand:SI 1 "low_register_operand" "")
24235
(mem:SI (match_dup 3)))
24236
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24237
+ (set (match_operand:SI 2 "low_register_operand" "")
24238
(mem:SI (plus:SI (match_dup 3)
24239
(const_int 4))))])]
24240
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
24241
@@ -898,9 +898,9 @@
24242
(define_insn "*stm2_ia"
24243
[(match_parallel 0 "store_multiple_operation"
24244
[(set (mem:SI (match_operand:SI 3 "s_register_operand" "rk"))
24245
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24246
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24247
(set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
24248
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24249
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24250
"TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
24251
"stm%(ia%)\t%3, {%1, %2}"
24252
[(set_attr "type" "store2")
24253
@@ -911,9 +911,9 @@
24254
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24255
(plus:SI (match_dup 3) (const_int 8)))
24256
(set (mem:SI (match_dup 3))
24257
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24258
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24259
(set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
24260
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24261
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24262
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24263
"stm%(ia%)\t%3!, {%1, %2}"
24264
[(set_attr "type" "store2")
24265
@@ -924,19 +924,19 @@
24266
[(set (match_operand:SI 3 "s_register_operand" "+&l")
24267
(plus:SI (match_dup 3) (const_int 8)))
24268
(set (mem:SI (match_dup 3))
24269
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24270
+ (match_operand:SI 1 "low_register_operand" ""))
24271
(set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
24272
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24273
+ (match_operand:SI 2 "low_register_operand" ""))])]
24274
"TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
24275
"stm%(ia%)\t%3!, {%1, %2}"
24276
[(set_attr "type" "store2")])
24278
(define_insn "*ldm2_ib"
24279
[(match_parallel 0 "load_multiple_operation"
24280
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24281
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24282
(mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk")
24284
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24285
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24286
(mem:SI (plus:SI (match_dup 3)
24287
(const_int 8))))])]
24288
"TARGET_ARM && XVECLEN (operands[0], 0) == 2"
24289
@@ -948,10 +948,10 @@
24290
[(match_parallel 0 "load_multiple_operation"
24291
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24292
(plus:SI (match_dup 3) (const_int 8)))
24293
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24294
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24295
(mem:SI (plus:SI (match_dup 3)
24297
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24298
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24299
(mem:SI (plus:SI (match_dup 3)
24300
(const_int 8))))])]
24301
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24302
@@ -962,9 +962,9 @@
24303
(define_insn "*stm2_ib"
24304
[(match_parallel 0 "store_multiple_operation"
24305
[(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4)))
24306
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24307
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24308
(set (mem:SI (plus:SI (match_dup 3) (const_int 8)))
24309
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24310
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24311
"TARGET_ARM && XVECLEN (operands[0], 0) == 2"
24312
"stm%(ib%)\t%3, {%1, %2}"
24313
[(set_attr "type" "store2")
24314
@@ -975,9 +975,9 @@
24315
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24316
(plus:SI (match_dup 3) (const_int 8)))
24317
(set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
24318
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24319
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24320
(set (mem:SI (plus:SI (match_dup 3) (const_int 8)))
24321
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24322
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24323
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24324
"stm%(ib%)\t%3!, {%1, %2}"
24325
[(set_attr "type" "store2")
24326
@@ -985,10 +985,10 @@
24328
(define_insn "*ldm2_da"
24329
[(match_parallel 0 "load_multiple_operation"
24330
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24331
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24332
(mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk")
24334
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24335
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24336
(mem:SI (match_dup 3)))])]
24337
"TARGET_ARM && XVECLEN (operands[0], 0) == 2"
24338
"ldm%(da%)\t%3, {%1, %2}"
24339
@@ -999,10 +999,10 @@
24340
[(match_parallel 0 "load_multiple_operation"
24341
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24342
(plus:SI (match_dup 3) (const_int -8)))
24343
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24344
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24345
(mem:SI (plus:SI (match_dup 3)
24347
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24348
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24349
(mem:SI (match_dup 3)))])]
24350
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24351
"ldm%(da%)\t%3!, {%1, %2}"
24352
@@ -1012,9 +1012,9 @@
24353
(define_insn "*stm2_da"
24354
[(match_parallel 0 "store_multiple_operation"
24355
[(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4)))
24356
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24357
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24358
(set (mem:SI (match_dup 3))
24359
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24360
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24361
"TARGET_ARM && XVECLEN (operands[0], 0) == 2"
24362
"stm%(da%)\t%3, {%1, %2}"
24363
[(set_attr "type" "store2")
24364
@@ -1025,9 +1025,9 @@
24365
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24366
(plus:SI (match_dup 3) (const_int -8)))
24367
(set (mem:SI (plus:SI (match_dup 3) (const_int -4)))
24368
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24369
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24370
(set (mem:SI (match_dup 3))
24371
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24372
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24373
"TARGET_ARM && XVECLEN (operands[0], 0) == 3"
24374
"stm%(da%)\t%3!, {%1, %2}"
24375
[(set_attr "type" "store2")
24376
@@ -1035,10 +1035,10 @@
24378
(define_insn "*ldm2_db"
24379
[(match_parallel 0 "load_multiple_operation"
24380
- [(set (match_operand:SI 1 "arm_hard_register_operand" "")
24381
+ [(set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24382
(mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk")
24384
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24385
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24386
(mem:SI (plus:SI (match_dup 3)
24387
(const_int -4))))])]
24388
"TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
24389
@@ -1050,10 +1050,10 @@
24390
[(match_parallel 0 "load_multiple_operation"
24391
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24392
(plus:SI (match_dup 3) (const_int -8)))
24393
- (set (match_operand:SI 1 "arm_hard_register_operand" "")
24394
+ (set (match_operand:SI 1 "arm_hard_general_register_operand" "")
24395
(mem:SI (plus:SI (match_dup 3)
24397
- (set (match_operand:SI 2 "arm_hard_register_operand" "")
24398
+ (set (match_operand:SI 2 "arm_hard_general_register_operand" "")
24399
(mem:SI (plus:SI (match_dup 3)
24400
(const_int -4))))])]
24401
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24402
@@ -1064,9 +1064,9 @@
24403
(define_insn "*stm2_db"
24404
[(match_parallel 0 "store_multiple_operation"
24405
[(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8)))
24406
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24407
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24408
(set (mem:SI (plus:SI (match_dup 3) (const_int -4)))
24409
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24410
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24411
"TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
24412
"stm%(db%)\t%3, {%1, %2}"
24413
[(set_attr "type" "store2")
24414
@@ -1077,9 +1077,9 @@
24415
[(set (match_operand:SI 3 "s_register_operand" "+&rk")
24416
(plus:SI (match_dup 3) (const_int -8)))
24417
(set (mem:SI (plus:SI (match_dup 3) (const_int -8)))
24418
- (match_operand:SI 1 "arm_hard_register_operand" ""))
24419
+ (match_operand:SI 1 "arm_hard_general_register_operand" ""))
24420
(set (mem:SI (plus:SI (match_dup 3) (const_int -4)))
24421
- (match_operand:SI 2 "arm_hard_register_operand" ""))])]
24422
+ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])]
24423
"TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
24424
"stm%(db%)\t%3!, {%1, %2}"
24425
[(set_attr "type" "store2")
24426
Index: gcc/config/arm/predicates.md
24427
===================================================================
24428
--- a/src/gcc/config/arm/predicates.md (.../tags/gcc_4_8_2_release)
24429
+++ b/src/gcc/config/arm/predicates.md (.../branches/gcc-4_8-branch)
24430
@@ -31,11 +31,11 @@
24431
|| REGNO_REG_CLASS (REGNO (op)) != NO_REGS));
24434
-;; Any hard register.
24435
-(define_predicate "arm_hard_register_operand"
24436
+;; Any general register.
24437
+(define_predicate "arm_hard_general_register_operand"
24440
- return REGNO (op) < FIRST_PSEUDO_REGISTER;
24441
+ return REGNO (op) <= LAST_ARM_REGNUM;
24446
&& REGNO_REG_CLASS (REGNO (op)) == VFP_REGS)));
24449
+(define_predicate "vfp_hard_register_operand"
24450
+ (match_code "reg")
24452
+ return (IS_VFP_REGNUM (REGNO (op)));
24455
(define_predicate "zero_operand"
24456
(and (match_code "const_int,const_double,const_vector")
24457
(match_test "op == CONST0_RTX (mode)")))
24458
Index: gcc/config/arm/arm-ldmstm.ml
24459
===================================================================
24460
--- a/src/gcc/config/arm/arm-ldmstm.ml (.../tags/gcc_4_8_2_release)
24461
+++ b/src/gcc/config/arm/arm-ldmstm.ml (.../branches/gcc-4_8-branch)
24462
@@ -67,10 +67,13 @@
24463
Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")")
24464
(nregs + 1) (inout_constr op_type) (constr thumb)
24466
+let reg_predicate thumb =
24467
+ if thumb then "low_register_operand" else "arm_hard_general_register_operand"
24469
let write_ldm_set thumb nregs offset opnr first =
24470
let indent = " " in
24471
Printf.printf "%s" (if first then " [" else indent);
24472
- Printf.printf "(set (match_operand:SI %d \"arm_hard_register_operand\" \"\")\n" opnr;
24473
+ Printf.printf "(set (match_operand:SI %d \"%s\" \"\")\n" opnr (reg_predicate thumb);
24474
Printf.printf "%s (mem:SI " indent;
24475
begin if offset != 0 then Printf.printf "(plus:SI " end;
24476
Printf.printf "%s" (destreg nregs first IN thumb);
24478
begin if offset != 0 then Printf.printf "(plus:SI " end;
24479
Printf.printf "%s" (destreg nregs first IN thumb);
24480
begin if offset != 0 then Printf.printf " (const_int %d))" offset end;
24481
- Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_register_operand\" \"\"))" indent opnr
24482
+ Printf.printf ")\n%s (match_operand:SI %d \"%s\" \"\"))" indent opnr (reg_predicate thumb)
24484
let write_ldm_peep_set extra_indent nregs opnr first =
24485
let indent = " " ^ extra_indent in
24486
Index: gcc/config/arm/iterators.md
24487
===================================================================
24488
--- a/src/gcc/config/arm/iterators.md (.../tags/gcc_4_8_2_release)
24489
+++ b/src/gcc/config/arm/iterators.md (.../branches/gcc-4_8-branch)
24490
@@ -493,6 +493,10 @@
24491
(UNSPEC_VRINTA "no") (UNSPEC_VRINTM "no")
24492
(UNSPEC_VRINTR "yes") (UNSPEC_VRINTX "yes")])
24494
+(define_int_attr vrint_conds [(UNSPEC_VRINTZ "nocond") (UNSPEC_VRINTP "unconditional")
24495
+ (UNSPEC_VRINTA "unconditional") (UNSPEC_VRINTM "unconditional")
24496
+ (UNSPEC_VRINTR "nocond") (UNSPEC_VRINTX "nocond")])
24498
(define_int_attr nvrint_variant [(UNSPEC_NVRINTZ "z") (UNSPEC_NVRINTP "p")
24499
(UNSPEC_NVRINTA "a") (UNSPEC_NVRINTM "m")
24500
(UNSPEC_NVRINTX "x") (UNSPEC_NVRINTN "n")])
24501
Index: gcc/config/arm/arm.md
24502
===================================================================
24503
--- a/src/gcc/config/arm/arm.md (.../tags/gcc_4_8_2_release)
24504
+++ b/src/gcc/config/arm/arm.md (.../branches/gcc-4_8-branch)
24505
@@ -11036,7 +11036,7 @@
24506
[(set (match_operand:SI 1 "s_register_operand" "+rk")
24507
(plus:SI (match_dup 1)
24508
(match_operand:SI 2 "const_int_operand" "I")))
24509
- (set (match_operand:DF 3 "arm_hard_register_operand" "")
24510
+ (set (match_operand:DF 3 "vfp_hard_register_operand" "")
24511
(mem:DF (match_dup 1)))])]
24512
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
24514
@@ -11270,7 +11270,9 @@
24515
(match_operand:SI 1 "" "")
24516
(match_operand:SI 2 "" ""))]
24517
"TARGET_32BIT && arm_arch5e"
24520
+ [(set_attr "type" "load1")]
24523
;; General predication pattern
24525
Index: gcc/config/pa/pa.c
24526
===================================================================
24527
--- a/src/gcc/config/pa/pa.c (.../tags/gcc_4_8_2_release)
24528
+++ b/src/gcc/config/pa/pa.c (.../branches/gcc-4_8-branch)
24529
@@ -10522,13 +10522,13 @@
24531
/* When INT14_OK_STRICT is false, a secondary reload is needed
24532
to adjust the displacement of SImode and DImode floating point
24533
- instructions. So, we return false when STRICT is true. We
24534
+ instructions but this may fail when the register also needs
24535
+ reloading. So, we return false when STRICT is true. We
24536
also reject long displacements for float mode addresses since
24537
the majority of accesses will use floating point instructions
24538
that don't support 14-bit offsets. */
24539
if (!INT14_OK_STRICT
24540
- && reload_in_progress
24542
+ && (strict || !(reload_in_progress || reload_completed))
24546
@@ -10588,8 +10588,7 @@
24549
if (!INT14_OK_STRICT
24550
- && reload_in_progress
24552
+ && (strict || !(reload_in_progress || reload_completed))
24556
Index: gcc/config/mips/driver-native.c
24557
===================================================================
24558
--- a/src/gcc/config/mips/driver-native.c (.../tags/gcc_4_8_2_release)
24559
+++ b/src/gcc/config/mips/driver-native.c (.../branches/gcc-4_8-branch)
24560
@@ -58,11 +58,17 @@
24561
if (strncmp (buf, "cpu model", sizeof ("cpu model") - 1) == 0)
24563
if (strstr (buf, "Godson2 V0.2") != NULL
24564
- || strstr (buf, "Loongson-2 V0.2") != NULL)
24565
+ || strstr (buf, "Loongson-2 V0.2") != NULL
24566
+ || strstr (buf, "Loongson-2E") != NULL)
24567
cpu = "loongson2e";
24568
else if (strstr (buf, "Godson2 V0.3") != NULL
24569
- || strstr (buf, "Loongson-2 V0.3") != NULL)
24570
+ || strstr (buf, "Loongson-2 V0.3") != NULL
24571
+ || strstr (buf, "Loongson-2F") != NULL)
24572
cpu = "loongson2f";
24573
+ else if (strstr (buf, "Godson3 V0.5") != NULL
24574
+ || strstr (buf, "Loongson-3 V0.5") != NULL
24575
+ || strstr (buf, "Loongson-3A") != NULL)
24576
+ cpu = "loongson3a";
24577
else if (strstr (buf, "SiByte SB1") != NULL)
24579
else if (strstr (buf, "R5000") != NULL)
24580
Index: gcc/config/mips/mips.md
24581
===================================================================
24582
--- a/src/gcc/config/mips/mips.md (.../tags/gcc_4_8_2_release)
24583
+++ b/src/gcc/config/mips/mips.md (.../branches/gcc-4_8-branch)
24588
+ ;; Integer operations that are too cumbersome to describe directly.
24593
;; Floating-point moves.
24596
@@ -1294,20 +1299,32 @@
24598
;; Combiner patterns for unsigned byte-add.
24600
-(define_insn "*baddu_si"
24601
+(define_insn "*baddu_si_eb"
24602
[(set (match_operand:SI 0 "register_operand" "=d")
24604
- (plus:QI (match_operand:QI 1 "register_operand" "d")
24605
- (match_operand:QI 2 "register_operand" "d"))))]
24608
+ (plus:SI (match_operand:SI 1 "register_operand" "d")
24609
+ (match_operand:SI 2 "register_operand" "d")) 3)))]
24610
+ "ISA_HAS_BADDU && BYTES_BIG_ENDIAN"
24612
[(set_attr "alu_type" "add")])
24614
+(define_insn "*baddu_si_el"
24615
+ [(set (match_operand:SI 0 "register_operand" "=d")
24618
+ (plus:SI (match_operand:SI 1 "register_operand" "d")
24619
+ (match_operand:SI 2 "register_operand" "d")) 0)))]
24620
+ "ISA_HAS_BADDU && !BYTES_BIG_ENDIAN"
24621
+ "baddu\\t%0,%1,%2"
24622
+ [(set_attr "alu_type" "add")])
24624
(define_insn "*baddu_di<mode>"
24625
[(set (match_operand:GPR 0 "register_operand" "=d")
24627
- (plus:QI (truncate:QI (match_operand:DI 1 "register_operand" "d"))
24628
- (truncate:QI (match_operand:DI 2 "register_operand" "d")))))]
24630
+ (plus:DI (match_operand:DI 1 "register_operand" "d")
24631
+ (match_operand:DI 2 "register_operand" "d")))))]
24632
"ISA_HAS_BADDU && TARGET_64BIT"
24634
[(set_attr "alu_type" "add")])
24635
@@ -5367,6 +5384,56 @@
24637
[(set_attr "type" "shift")
24638
(set_attr "mode" "<MODE>")])
24640
+(define_insn "bswaphi2"
24641
+ [(set (match_operand:HI 0 "register_operand" "=d")
24642
+ (bswap:HI (match_operand:HI 1 "register_operand" "d")))]
24645
+ [(set_attr "type" "shift")])
24647
+(define_insn_and_split "bswapsi2"
24648
+ [(set (match_operand:SI 0 "register_operand" "=d")
24649
+ (bswap:SI (match_operand:SI 1 "register_operand" "d")))]
24650
+ "ISA_HAS_WSBH && ISA_HAS_ROR"
24653
+ [(set (match_dup 0) (unspec:SI [(match_dup 1)] UNSPEC_WSBH))
24654
+ (set (match_dup 0) (rotatert:SI (match_dup 0) (const_int 16)))]
24656
+ [(set_attr "length" "8")])
24658
+(define_insn_and_split "bswapdi2"
24659
+ [(set (match_operand:DI 0 "register_operand" "=d")
24660
+ (bswap:DI (match_operand:DI 1 "register_operand" "d")))]
24661
+ "TARGET_64BIT && ISA_HAS_WSBH"
24664
+ [(set (match_dup 0) (unspec:DI [(match_dup 1)] UNSPEC_DSBH))
24665
+ (set (match_dup 0) (unspec:DI [(match_dup 0)] UNSPEC_DSHD))]
24667
+ [(set_attr "length" "8")])
24669
+(define_insn "wsbh"
24670
+ [(set (match_operand:SI 0 "register_operand" "=d")
24671
+ (unspec:SI [(match_operand:SI 1 "register_operand" "d")] UNSPEC_WSBH))]
24674
+ [(set_attr "type" "shift")])
24676
+(define_insn "dsbh"
24677
+ [(set (match_operand:DI 0 "register_operand" "=d")
24678
+ (unspec:DI [(match_operand:DI 1 "register_operand" "d")] UNSPEC_DSBH))]
24679
+ "TARGET_64BIT && ISA_HAS_WSBH"
24681
+ [(set_attr "type" "shift")])
24683
+(define_insn "dshd"
24684
+ [(set (match_operand:DI 0 "register_operand" "=d")
24685
+ (unspec:DI [(match_operand:DI 1 "register_operand" "d")] UNSPEC_DSHD))]
24686
+ "TARGET_64BIT && ISA_HAS_WSBH"
24688
+ [(set_attr "type" "shift")])
24691
;; ....................
24692
Index: gcc/config/mips/mips.c
24693
===================================================================
24694
--- a/src/gcc/config/mips/mips.c (.../tags/gcc_4_8_2_release)
24695
+++ b/src/gcc/config/mips/mips.c (.../branches/gcc-4_8-branch)
24696
@@ -3560,17 +3560,6 @@
24700
-/* Return the cost of an operand X that can be trucated for free.
24701
- SPEED says whether we're optimizing for size or speed. */
24704
-mips_truncated_op_cost (rtx x, bool speed)
24706
- if (GET_CODE (x) == TRUNCATE)
24708
- return set_src_cost (x, speed);
24711
/* Implement TARGET_RTX_COSTS. */
24714
@@ -3951,13 +3940,12 @@
24716
if (outer_code == SET
24718
+ && (GET_CODE (XEXP (x, 0)) == TRUNCATE
24719
+ || GET_CODE (XEXP (x, 0)) == SUBREG)
24720
&& GET_MODE (XEXP (x, 0)) == QImode
24721
- && GET_CODE (XEXP (x, 0)) == PLUS)
24722
+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == PLUS)
24724
- rtx plus = XEXP (x, 0);
24725
- *total = (COSTS_N_INSNS (1)
24726
- + mips_truncated_op_cost (XEXP (plus, 0), speed)
24727
- + mips_truncated_op_cost (XEXP (plus, 1), speed));
24728
+ *total = set_src_cost (XEXP (XEXP (x, 0), 0), speed);
24731
*total = mips_zero_extend_cost (mode, XEXP (x, 0));
24732
Index: gcc/config/mips/mips.h
24733
===================================================================
24734
--- a/src/gcc/config/mips/mips.h (.../tags/gcc_4_8_2_release)
24735
+++ b/src/gcc/config/mips/mips.h (.../branches/gcc-4_8-branch)
24736
@@ -949,6 +949,11 @@
24737
|| TARGET_SMARTMIPS) \
24740
+/* ISA has the WSBH (word swap bytes within halfwords) instruction.
24741
+ 64-bit targets also provide DSBH and DSHD. */
24742
+#define ISA_HAS_WSBH ((ISA_MIPS32R2 || ISA_MIPS64R2) \
24743
+ && !TARGET_MIPS16)
24745
/* ISA has data prefetch instructions. This controls use of 'pref'. */
24746
#define ISA_HAS_PREFETCH ((ISA_MIPS4 \
24747
|| TARGET_LOONGSON_2EF \
24748
Index: gcc/regcprop.c
24749
===================================================================
24750
--- a/src/gcc/regcprop.c (.../tags/gcc_4_8_2_release)
24751
+++ b/src/gcc/regcprop.c (.../branches/gcc-4_8-branch)
24752
@@ -747,6 +747,7 @@
24753
int n_ops, i, alt, predicated;
24754
bool is_asm, any_replacements;
24757
bool replaced[MAX_RECOG_OPERANDS];
24758
bool changed = false;
24759
struct kill_set_value_data ksvd;
24760
@@ -815,6 +816,23 @@
24761
if (recog_op_alt[i][alt].earlyclobber)
24762
kill_value (recog_data.operand[i], vd);
24764
+ /* If we have dead sets in the insn, then we need to note these as we
24765
+ would clobbers. */
24766
+ for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
24768
+ if (REG_NOTE_KIND (link) == REG_UNUSED)
24770
+ kill_value (XEXP (link, 0), vd);
24771
+ /* Furthermore, if the insn looked like a single-set,
24772
+ but the dead store kills the source value of that
24773
+ set, then we can no-longer use the plain move
24774
+ special case below. */
24776
+ && reg_overlap_mentioned_p (XEXP (link, 0), SET_SRC (set)))
24781
/* Special-case plain move instructions, since we may well
24782
be able to do the move from a different register class. */
24783
if (set && REG_P (SET_SRC (set)))
24784
Index: libgo/configure
24785
===================================================================
24786
--- a/src/libgo/configure (.../tags/gcc_4_8_2_release)
24787
+++ b/src/libgo/configure (.../branches/gcc-4_8-branch)
24788
@@ -14700,7 +14700,7 @@
24792
-for ac_func in accept4 epoll_create1 faccessat fallocate fchmodat fchownat futimesat inotify_add_watch inotify_init inotify_init1 inotify_rm_watch mkdirat mknodat openat pipe2 renameat sync_file_range splice tee unlinkat unshare utimensat
24793
+for ac_func in accept4 dup3 epoll_create1 faccessat fallocate fchmodat fchownat futimesat getxattr inotify_add_watch inotify_init inotify_init1 inotify_rm_watch listxattr mkdirat mknodat openat pipe2 removexattr renameat setxattr sync_file_range splice tee unlinkat unshare utimensat
24795
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
24796
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
24797
Index: libgo/Makefile.in
24798
===================================================================
24799
--- a/src/libgo/Makefile.in (.../tags/gcc_4_8_2_release)
24800
+++ b/src/libgo/Makefile.in (.../branches/gcc-4_8-branch)
24801
@@ -195,7 +195,7 @@
24802
@LIBGO_IS_LINUX_TRUE@am__objects_5 = getncpu-linux.lo
24803
am__objects_6 = go-append.lo go-assert.lo go-assert-interface.lo \
24804
go-byte-array-to-string.lo go-breakpoint.lo go-caller.lo \
24805
- go-callers.lo go-can-convert-interface.lo go-cgo.lo \
24806
+ go-callers.lo go-can-convert-interface.lo go-cdiv.lo go-cgo.lo \
24807
go-check-interface.lo go-construct-map.lo \
24808
go-convert-interface.lo go-copy.lo go-defer.lo \
24809
go-deferred-recover.lo go-eface-compare.lo \
24810
@@ -757,6 +757,7 @@
24811
runtime/go-caller.c \
24812
runtime/go-callers.c \
24813
runtime/go-can-convert-interface.c \
24814
+ runtime/go-cdiv.c \
24816
runtime/go-check-interface.c \
24817
runtime/go-construct-map.c \
24818
@@ -1446,7 +1447,7 @@
24819
go/go/build/build.go \
24820
go/go/build/doc.go \
24821
go/go/build/read.go \
24823
+ go/go/build/syslist.go
24825
go_go_doc_files = \
24826
go/go/doc/comment.go \
24827
@@ -2368,6 +2369,7 @@
24828
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-caller.Plo@am__quote@
24829
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-callers.Plo@am__quote@
24830
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-can-convert-interface.Plo@am__quote@
24831
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-cdiv.Plo@am__quote@
24832
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-cgo.Plo@am__quote@
24833
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-check-interface.Plo@am__quote@
24834
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-construct-map.Plo@am__quote@
24835
@@ -2554,6 +2556,13 @@
24836
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
24837
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-can-convert-interface.lo `test -f 'runtime/go-can-convert-interface.c' || echo '$(srcdir)/'`runtime/go-can-convert-interface.c
24839
+go-cdiv.lo: runtime/go-cdiv.c
24840
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-cdiv.lo -MD -MP -MF $(DEPDIR)/go-cdiv.Tpo -c -o go-cdiv.lo `test -f 'runtime/go-cdiv.c' || echo '$(srcdir)/'`runtime/go-cdiv.c
24841
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-cdiv.Tpo $(DEPDIR)/go-cdiv.Plo
24842
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='runtime/go-cdiv.c' object='go-cdiv.lo' libtool=yes @AMDEPBACKSLASH@
24843
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
24844
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o go-cdiv.lo `test -f 'runtime/go-cdiv.c' || echo '$(srcdir)/'`runtime/go-cdiv.c
24846
go-cgo.lo: runtime/go-cgo.c
24847
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT go-cgo.lo -MD -MP -MF $(DEPDIR)/go-cgo.Tpo -c -o go-cgo.lo `test -f 'runtime/go-cgo.c' || echo '$(srcdir)/'`runtime/go-cgo.c
24848
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/go-cgo.Tpo $(DEPDIR)/go-cgo.Plo
24849
@@ -5062,15 +5071,6 @@
24851
.PHONY: go/build/check
24853
-syslist.go: s-syslist; @true
24854
-s-syslist: Makefile
24855
- echo '// Generated automatically by make.' >syslist.go.tmp
24856
- echo 'package build' >>syslist.go.tmp
24857
- echo 'const goosList = "$(GOOS)"' >>syslist.go.tmp
24858
- echo 'const goarchList = "$(GOARCH)"' >>syslist.go.tmp
24859
- $(SHELL) $(srcdir)/../move-if-change syslist.go.tmp syslist.go
24862
@go_include@ go/doc.lo.dep
24863
go/doc.lo.dep: $(go_go_doc_files)
24865
Index: libgo/runtime/go-defer.c
24866
===================================================================
24867
--- a/src/libgo/runtime/go-defer.c (.../tags/gcc_4_8_2_release)
24868
+++ b/src/libgo/runtime/go-defer.c (.../branches/gcc-4_8-branch)
24872
n->__retaddr = NULL;
24873
+ n->__makefunc_can_recover = 0;
24877
Index: libgo/runtime/go-defer.h
24878
===================================================================
24879
--- a/src/libgo/runtime/go-defer.h (.../tags/gcc_4_8_2_release)
24880
+++ b/src/libgo/runtime/go-defer.h (.../branches/gcc-4_8-branch)
24882
set by __go_set_defer_retaddr which is called by the thunks
24883
created by defer statements. */
24884
const void *__retaddr;
24886
+ /* Set to true if a function created by reflect.MakeFunc is
24887
+ permitted to recover. The return address of such a function
24888
+ function will be somewhere in libffi, so __retaddr is not
24890
+ _Bool __makefunc_can_recover;
24892
Index: libgo/runtime/go-int-array-to-string.c
24893
===================================================================
24894
--- a/src/libgo/runtime/go-int-array-to-string.c (.../tags/gcc_4_8_2_release)
24895
+++ b/src/libgo/runtime/go-int-array-to-string.c (.../branches/gcc-4_8-branch)
24898
if (v < 0 || v > 0x10ffff)
24900
+ else if (0xd800 <= v && v <= 0xdfff)
24907
if (v < 0 || v > 0x10ffff)
24909
+ else if (0xd800 <= v && v <= 0xdfff)
24914
Index: libgo/runtime/go-nosys.c
24915
===================================================================
24916
--- a/src/libgo/runtime/go-nosys.c (.../tags/gcc_4_8_2_release)
24917
+++ b/src/libgo/runtime/go-nosys.c (.../branches/gcc-4_8-branch)
24924
+dup3 (int oldfd __attribute__ ((unused)),
24925
+ int newfd __attribute__ ((unused)),
24926
+ int flags __attribute__ ((unused)))
24933
#ifndef HAVE_EPOLL_CREATE1
24935
epoll_create1 (int flags __attribute__ ((unused)))
24936
@@ -112,6 +123,18 @@
24940
+#ifndef HAVE_GETXATTR
24942
+getxattr (const char *path __attribute__ ((unused)),
24943
+ const char *name __attribute__ ((unused)),
24944
+ void *value __attribute__ ((unused)),
24945
+ size_t size __attribute__ ((unused)))
24952
#ifndef HAVE_INOTIFY_ADD_WATCH
24954
inotify_add_watch (int fd __attribute__ ((unused)),
24955
@@ -151,6 +174,17 @@
24959
+#ifndef HAVE_LISTXATTR
24961
+listxattr (const char *path __attribute__ ((unused)),
24962
+ char *list __attribute__ ((unused)),
24963
+ size_t size __attribute__ ((unused)))
24970
#ifndef HAVE_MKDIRAT
24972
mkdirat (int dirfd __attribute__ ((unused)),
24973
@@ -196,6 +230,16 @@
24977
+#ifndef HAVE_REMOVEXATTR
24979
+removexattr (const char *path __attribute__ ((unused)),
24980
+ const char *name __attribute__ ((unused)))
24987
#ifndef HAVE_RENAMEAT
24989
renameat (int olddirfd __attribute__ ((unused)),
24990
@@ -208,6 +252,19 @@
24994
+#ifndef HAVE_SETXATTR
24996
+setxattr (const char *path __attribute__ ((unused)),
24997
+ const char *name __attribute__ ((unused)),
24998
+ const void *value __attribute__ ((unused)),
24999
+ size_t size __attribute__ ((unused)),
25000
+ int flags __attribute__ ((unused)))
25007
#ifndef HAVE_SPLICE
25009
splice (int fd __attribute__ ((unused)),
25010
Index: libgo/runtime/runtime.h
25011
===================================================================
25012
--- a/src/libgo/runtime/runtime.h (.../tags/gcc_4_8_2_release)
25013
+++ b/src/libgo/runtime/runtime.h (.../branches/gcc-4_8-branch)
25014
@@ -440,7 +440,7 @@
25016
void runtime_hashinit(void);
25018
-void runtime_traceback();
25019
+void runtime_traceback(void);
25020
void runtime_tracebackothers(G*);
25023
@@ -756,6 +756,7 @@
25024
extern _Bool __go_file_line(uintptr, String*, String*, intgo *);
25025
extern byte* runtime_progname();
25026
extern void runtime_main(void*);
25027
+extern uint32 runtime_in_callers;
25029
int32 getproccount(void);
25031
Index: libgo/runtime/proc.c
25032
===================================================================
25033
--- a/src/libgo/runtime/proc.c (.../tags/gcc_4_8_2_release)
25034
+++ b/src/libgo/runtime/proc.c (.../branches/gcc-4_8-branch)
25035
@@ -2239,6 +2239,14 @@
25036
if(prof.fn == nil || prof.hz == 0)
25039
+ if(runtime_atomicload(&runtime_in_callers) > 0) {
25040
+ // If SIGPROF arrived while already fetching runtime
25041
+ // callers we can have trouble on older systems
25042
+ // because the unwind library calls dl_iterate_phdr
25043
+ // which was not recursive in the past.
25047
runtime_lock(&prof);
25048
if(prof.fn == nil) {
25049
runtime_unlock(&prof);
25050
Index: libgo/runtime/mgc0.c
25051
===================================================================
25052
--- a/src/libgo/runtime/mgc0.c (.../tags/gcc_4_8_2_release)
25053
+++ b/src/libgo/runtime/mgc0.c (.../branches/gcc-4_8-branch)
25054
@@ -239,8 +239,7 @@
25055
// (Manually inlined copy of MHeap_LookupMaybe.)
25056
k = (uintptr)obj>>PageShift;
25058
- if(sizeof(void*) == 8)
25059
- x -= (uintptr)runtime_mheap->arena_start>>PageShift;
25060
+ x -= (uintptr)runtime_mheap->arena_start>>PageShift;
25061
s = runtime_mheap->map[x];
25062
if(s == nil || k < s->start || k - s->start >= s->npages || s->state != MSpanInUse)
25064
@@ -418,8 +417,7 @@
25065
// (Manually inlined copy of MHeap_LookupMaybe.)
25066
k = (uintptr)obj>>PageShift;
25068
- if(sizeof(void*) == 8)
25069
- x -= (uintptr)arena_start>>PageShift;
25070
+ x -= (uintptr)arena_start>>PageShift;
25071
s = runtime_mheap->map[x];
25072
if(s == nil || k < s->start || k - s->start >= s->npages || s->state != MSpanInUse)
25074
@@ -466,8 +464,7 @@
25075
// Ask span about size class.
25076
// (Manually inlined copy of MHeap_Lookup.)
25077
x = (uintptr)obj >> PageShift;
25078
- if(sizeof(void*) == 8)
25079
- x -= (uintptr)arena_start>>PageShift;
25080
+ x -= (uintptr)arena_start>>PageShift;
25081
s = runtime_mheap->map[x];
25084
@@ -585,8 +582,7 @@
25087
x = (uintptr)obj >> PageShift;
25088
- if(sizeof(void*) == 8)
25089
- x -= (uintptr)(runtime_mheap->arena_start)>>PageShift;
25090
+ x -= (uintptr)(runtime_mheap->arena_start)>>PageShift;
25091
s = runtime_mheap->map[x];
25092
objstart = (byte*)((uintptr)s->start<<PageShift);
25093
if(s->sizeclass != 0) {
25094
Index: libgo/runtime/go-signal.c
25095
===================================================================
25096
--- a/src/libgo/runtime/go-signal.c (.../tags/gcc_4_8_2_release)
25097
+++ b/src/libgo/runtime/go-signal.c (.../branches/gcc-4_8-branch)
25098
@@ -234,7 +234,7 @@
25102
- runtime_traceback (g);
25103
+ runtime_traceback ();
25104
runtime_tracebackothers (g);
25106
/* The gc library calls runtime_dumpregs here, and provides
25107
@@ -399,6 +399,9 @@
25111
+#ifdef USING_SPLIT_STACK
25112
+ void *stack_context[10];
25115
/* We are now running on the stack registered via sigaltstack.
25116
(Actually there is a small span of time between runtime_siginit
25117
@@ -409,7 +412,7 @@
25120
#ifdef USING_SPLIT_STACK
25121
- __splitstack_getcontext (&gp->stack_context[0]);
25122
+ __splitstack_getcontext (&stack_context[0]);
25126
@@ -432,7 +435,7 @@
25129
#ifdef USING_SPLIT_STACK
25130
- __splitstack_setcontext (&gp->stack_context[0]);
25131
+ __splitstack_setcontext (&stack_context[0]);
25135
Index: libgo/runtime/go-callers.c
25136
===================================================================
25137
--- a/src/libgo/runtime/go-callers.c (.../tags/gcc_4_8_2_release)
25138
+++ b/src/libgo/runtime/go-callers.c (.../branches/gcc-4_8-branch)
25140
#include "runtime.h"
25143
+/* This is set to non-zero when calling backtrace_full. This is used
25144
+ to avoid getting hanging on a recursive lock in dl_iterate_phdr on
25145
+ older versions of glibc when a SIGPROF signal arrives while
25146
+ collecting a backtrace. */
25148
+uint32 runtime_in_callers;
25150
/* Argument passed to callback function. */
25152
struct callers_data
25153
@@ -111,8 +118,10 @@
25154
data.skip = skip + 1;
25157
+ runtime_xadd (&runtime_in_callers, 1);
25158
backtrace_full (__go_get_backtrace_state (), 0, callback, error_callback,
25160
+ runtime_xadd (&runtime_in_callers, -1);
25164
Index: libgo/runtime/go-cdiv.c
25165
===================================================================
25166
--- a/src/libgo/runtime/go-cdiv.c (.../tags/gcc_4_8_2_release)
25167
+++ b/src/libgo/runtime/go-cdiv.c (.../branches/gcc-4_8-branch)
25169
+/* go-cdiv.c -- complex division routines
25171
+ Copyright 2013 The Go Authors. All rights reserved.
25172
+ Use of this source code is governed by a BSD-style
25173
+ license that can be found in the LICENSE file. */
25175
+/* Calls to these functions are generated by the Go frontend for
25176
+ division of complex64 or complex128. We use these because Go's
25177
+ complex division expects slightly different results from the GCC
25178
+ default. When dividing NaN+1.0i / 0+0i, Go expects NaN+NaNi but
25179
+ GCC generates NaN+Infi. NaN+Infi seems wrong seems the rules of
25180
+ C99 Annex G specify that if either side of a complex number is Inf,
25181
+ the the whole number is Inf, but an operation involving NaN ought
25182
+ to result in NaN, not Inf. */
25185
+__go_complex64_div (__complex float a, __complex float b)
25187
+ if (__builtin_expect (b == 0+0i, 0))
25189
+ if (!__builtin_isinff (__real__ a)
25190
+ && !__builtin_isinff (__imag__ a)
25191
+ && (__builtin_isnanf (__real__ a) || __builtin_isnanf (__imag__ a)))
25193
+ /* Pass "1" to nanf to match math/bits.go. */
25194
+ return __builtin_nanf("1") + __builtin_nanf("1")*1i;
25201
+__go_complex128_div (__complex double a, __complex double b)
25203
+ if (__builtin_expect (b == 0+0i, 0))
25205
+ if (!__builtin_isinf (__real__ a)
25206
+ && !__builtin_isinf (__imag__ a)
25207
+ && (__builtin_isnan (__real__ a) || __builtin_isnan (__imag__ a)))
25209
+ /* Pass "1" to nan to match math/bits.go. */
25210
+ return __builtin_nan("1") + __builtin_nan("1")*1i;
25215
Index: libgo/runtime/go-reflect-call.c
25216
===================================================================
25217
--- a/src/libgo/runtime/go-reflect-call.c (.../tags/gcc_4_8_2_release)
25218
+++ b/src/libgo/runtime/go-reflect-call.c (.../branches/gcc-4_8-branch)
25220
const struct __go_struct_field *fields;
25223
+ field_count = descriptor->__fields.__count;
25224
+ if (field_count == 0) {
25225
+ return &ffi_type_void;
25227
ret = (ffi_type *) __go_alloc (sizeof (ffi_type));
25228
ret->type = FFI_TYPE_STRUCT;
25229
- field_count = descriptor->__fields.__count;
25230
fields = (const struct __go_struct_field *) descriptor->__fields.__values;
25231
ret->elements = (ffi_type **) __go_alloc ((field_count + 1)
25232
* sizeof (ffi_type *));
25233
Index: libgo/runtime/go-recover.c
25234
===================================================================
25235
--- a/src/libgo/runtime/go-recover.c (.../tags/gcc_4_8_2_release)
25236
+++ b/src/libgo/runtime/go-recover.c (.../branches/gcc-4_8-branch)
25237
@@ -16,12 +16,14 @@
25238
__go_can_recover--this is, the thunk. */
25241
-__go_can_recover (const void* retaddr)
25242
+__go_can_recover (const void *retaddr)
25245
struct __go_defer_stack *d;
25249
+ const byte *name;
25256
dret = (const char *) d->__retaddr;
25257
- return ret <= dret && ret + 16 >= dret;
25258
+ if (ret <= dret && ret + 16 >= dret)
25261
+ /* If the function calling recover was created by reflect.MakeFunc,
25262
+ then RETADDR will be somewhere in libffi. Our caller is
25263
+ permitted to recover if it was called from libffi. */
25264
+ if (!d->__makefunc_can_recover)
25267
+ if (runtime_callers (2, &loc, 1) < 1)
25270
+ /* If we have no function name, then we weren't called by Go code.
25271
+ Guess that we were called by libffi. */
25272
+ if (loc.function.len == 0)
25275
+ if (loc.function.len < 4)
25277
+ name = loc.function.str;
25278
+ if (*name == '_')
25280
+ if (loc.function.len < 5)
25285
+ if (name[0] == 'f' && name[1] == 'f' && name[2] == 'i' && name[3] == '_')
25288
+ /* We may also be called by reflect.makeFuncImpl.call, for a
25289
+ function created by reflect.MakeFunc. */
25290
+ if (__builtin_strstr ((const char *) name, "makeFuncImpl") != NULL)
25296
+/* This function is called when code is about to enter a function
25297
+ created by reflect.MakeFunc. It is called by the function stub
25298
+ used by MakeFunc. If the stub is permitted to call recover, then a
25299
+ real MakeFunc function is permitted to call recover. */
25302
+__go_makefunc_can_recover (const void *retaddr)
25304
+ struct __go_defer_stack *d;
25306
+ d = runtime_g ()->defer;
25308
+ && !d->__makefunc_can_recover
25309
+ && __go_can_recover (retaddr))
25310
+ d->__makefunc_can_recover = 1;
25313
+/* This function is called when code is about to exit a function
25314
+ created by reflect.MakeFunc. It is called by the function stub
25315
+ used by MakeFunc. It clears the __makefunc_can_recover field.
25316
+ It's OK to always clear this field, because __go_can_recover will
25317
+ only be called by a stub created for a function that calls recover.
25318
+ That stub will not call a function created by reflect.MakeFunc, so
25319
+ by the time we get here any caller higher up on the call stack no
25320
+ longer needs the information. */
25323
+__go_makefunc_returning (void)
25325
+ struct __go_defer_stack *d;
25327
+ d = runtime_g ()->defer;
25329
+ d->__makefunc_can_recover = 0;
25332
/* This is only called when it is valid for the caller to recover the
25333
value on top of the panic stack, if there is one. */
25335
Index: libgo/runtime/malloc.goc
25336
===================================================================
25337
--- a/src/libgo/runtime/malloc.goc (.../tags/gcc_4_8_2_release)
25338
+++ b/src/libgo/runtime/malloc.goc (.../branches/gcc-4_8-branch)
25339
@@ -541,8 +541,7 @@
25341
// (Manually inlined copy of runtime_MHeap_Lookup)
25342
p = (uintptr)v>>PageShift;
25343
- if(sizeof(void*) == 8)
25344
- p -= (uintptr)runtime_mheap->arena_start >> PageShift;
25345
+ p -= (uintptr)runtime_mheap->arena_start >> PageShift;
25346
s = runtime_mheap->map[p];
25348
if(s->sizeclass == 0) {
25349
Index: libgo/runtime/go-make-slice.c
25350
===================================================================
25351
--- a/src/libgo/runtime/go-make-slice.c (.../tags/gcc_4_8_2_release)
25352
+++ b/src/libgo/runtime/go-make-slice.c (.../branches/gcc-4_8-branch)
25354
std = (const struct __go_slice_type *) td;
25356
ilen = (intgo) len;
25357
- if (ilen < 0 || (uintptr_t) ilen != len)
25359
+ || (uintptr_t) ilen != len
25360
+ || (std->__element_type->__size > 0
25361
+ && len > MaxMem / std->__element_type->__size))
25362
runtime_panicstring ("makeslice: len out of range");
25364
icap = (intgo) cap;
25365
Index: libgo/runtime/mheap.c
25366
===================================================================
25367
--- a/src/libgo/runtime/mheap.c (.../tags/gcc_4_8_2_release)
25368
+++ b/src/libgo/runtime/mheap.c (.../branches/gcc-4_8-branch)
25369
@@ -150,8 +150,7 @@
25370
runtime_MSpan_Init(t, s->start + npage, s->npages - npage);
25373
- if(sizeof(void*) == 8)
25374
- p -= ((uintptr)h->arena_start>>PageShift);
25375
+ p -= ((uintptr)h->arena_start>>PageShift);
25379
@@ -169,8 +168,7 @@
25380
s->elemsize = (sizeclass==0 ? s->npages<<PageShift : (uintptr)runtime_class_to_size[sizeclass]);
25381
s->types.compression = MTypes_Empty;
25383
- if(sizeof(void*) == 8)
25384
- p -= ((uintptr)h->arena_start>>PageShift);
25385
+ p -= ((uintptr)h->arena_start>>PageShift);
25386
for(n=0; n<npage; n++)
25389
@@ -241,8 +239,7 @@
25390
mstats.mspan_sys = h->spanalloc.sys;
25391
runtime_MSpan_Init(s, (uintptr)v>>PageShift, ask>>PageShift);
25393
- if(sizeof(void*) == 8)
25394
- p -= ((uintptr)h->arena_start>>PageShift);
25395
+ p -= ((uintptr)h->arena_start>>PageShift);
25397
h->map[p + s->npages - 1] = s;
25398
s->state = MSpanInUse;
25399
@@ -259,8 +256,7 @@
25403
- if(sizeof(void*) == 8)
25404
- p -= (uintptr)h->arena_start;
25405
+ p -= (uintptr)h->arena_start;
25406
return h->map[p >> PageShift];
25409
@@ -281,8 +277,7 @@
25411
p = (uintptr)v>>PageShift;
25413
- if(sizeof(void*) == 8)
25414
- q -= (uintptr)h->arena_start >> PageShift;
25415
+ q -= (uintptr)h->arena_start >> PageShift;
25417
if(s == nil || p < s->start || p - s->start >= s->npages)
25419
@@ -332,8 +327,7 @@
25421
// Coalesce with earlier, later spans.
25423
- if(sizeof(void*) == 8)
25424
- p -= (uintptr)h->arena_start >> PageShift;
25425
+ p -= (uintptr)h->arena_start >> PageShift;
25426
if(p > 0 && (t = h->map[p-1]) != nil && t->state != MSpanInUse) {
25427
tp = (uintptr*)(t->start<<PageShift);
25428
*tp |= *sp; // propagate "needs zeroing" mark
25429
Index: libgo/mksysinfo.sh
25430
===================================================================
25431
--- a/src/libgo/mksysinfo.sh (.../tags/gcc_4_8_2_release)
25432
+++ b/src/libgo/mksysinfo.sh (.../branches/gcc-4_8-branch)
25433
@@ -1035,6 +1035,10 @@
25434
grep '^const _LOCK_' gen-sysinfo.go |
25435
sed -e 's/^\(const \)_\(LOCK_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
25437
+# The PRIO constants.
25438
+grep '^const _PRIO_' gen-sysinfo.go | \
25439
+ sed -e 's/^\(const \)_\(PRIO_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
25441
# The GNU/Linux LINUX_REBOOT flags.
25442
grep '^const _LINUX_REBOOT_' gen-sysinfo.go |
25443
sed -e 's/^\(const \)_\(LINUX_REBOOT_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
25444
Index: libgo/config.h.in
25445
===================================================================
25446
--- a/src/libgo/config.h.in (.../tags/gcc_4_8_2_release)
25447
+++ b/src/libgo/config.h.in (.../branches/gcc-4_8-branch)
25449
/* Define to 1 if you have the `dl_iterate_phdr' function. */
25450
#undef HAVE_DL_ITERATE_PHDR
25452
+/* Define to 1 if you have the `dup3' function. */
25455
/* Define to 1 if you have the `epoll_create1' function. */
25456
#undef HAVE_EPOLL_CREATE1
25459
/* Define if _Unwind_GetIPInfo is available. */
25460
#undef HAVE_GETIPINFO
25462
+/* Define to 1 if you have the `getxattr' function. */
25463
+#undef HAVE_GETXATTR
25465
/* Define to 1 if you have the `inotify_add_watch' function. */
25466
#undef HAVE_INOTIFY_ADD_WATCH
25468
@@ -111,6 +117,9 @@
25469
/* Define to 1 if you have the <linux/rtnetlink.h> header file. */
25470
#undef HAVE_LINUX_RTNETLINK_H
25472
+/* Define to 1 if you have the `listxattr' function. */
25473
+#undef HAVE_LISTXATTR
25475
/* Define to 1 if the system has the type `loff_t'. */
25478
@@ -171,6 +180,9 @@
25479
/* Define to 1 if you have the `pipe2' function. */
25482
+/* Define to 1 if you have the `removexattr' function. */
25483
+#undef HAVE_REMOVEXATTR
25485
/* Define to 1 if you have the `renameat' function. */
25486
#undef HAVE_RENAMEAT
25488
@@ -180,6 +192,9 @@
25489
/* Define to 1 if you have the `setenv' function. */
25492
+/* Define to 1 if you have the `setxattr' function. */
25493
+#undef HAVE_SETXATTR
25495
/* Define to 1 if you have the `sinl' function. */
25498
Index: libgo/configure.ac
25499
===================================================================
25500
--- a/src/libgo/configure.ac (.../tags/gcc_4_8_2_release)
25501
+++ b/src/libgo/configure.ac (.../branches/gcc-4_8-branch)
25502
@@ -503,7 +503,7 @@
25503
AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
25504
AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
25506
-AC_CHECK_FUNCS(accept4 epoll_create1 faccessat fallocate fchmodat fchownat futimesat inotify_add_watch inotify_init inotify_init1 inotify_rm_watch mkdirat mknodat openat pipe2 renameat sync_file_range splice tee unlinkat unshare utimensat)
25507
+AC_CHECK_FUNCS(accept4 dup3 epoll_create1 faccessat fallocate fchmodat fchownat futimesat getxattr inotify_add_watch inotify_init inotify_init1 inotify_rm_watch listxattr mkdirat mknodat openat pipe2 removexattr renameat setxattr sync_file_range splice tee unlinkat unshare utimensat)
25509
AC_CHECK_TYPES([loff_t])
25511
Index: libgo/go/reflect/value.go
25512
===================================================================
25513
--- a/src/libgo/go/reflect/value.go (.../tags/gcc_4_8_2_release)
25514
+++ b/src/libgo/go/reflect/value.go (.../branches/gcc-4_8-branch)
25519
+ flagMethodFn // gccgo: first fn parameter is always pointer
25520
flagKindShift = iota
25521
flagKindWidth = 5 // there are 27 kinds
25522
flagKindMask flag = 1<<flagKindWidth - 1
25523
@@ -433,7 +434,7 @@
25524
if v.flag&flagMethod != 0 {
25527
- firstPointer := len(in) > 0 && t.In(0).Kind() != Ptr && v.flag&flagMethod == 0 && isMethod(v.typ)
25528
+ firstPointer := len(in) > 0 && t.In(0).Kind() != Ptr && v.flag&flagMethodFn != 0
25529
params := make([]unsafe.Pointer, nin)
25531
if v.flag&flagMethod != 0 {
25532
@@ -484,33 +485,6 @@
25536
-// gccgo specific test to see if typ is a method. We can tell by
25537
-// looking at the string to see if there is a receiver. We need this
25538
-// because for gccgo all methods take pointer receivers.
25539
-func isMethod(t *rtype) bool {
25540
- if Kind(t.kind) != Func {
25547
- for i, c := range s {
25553
- } else if c == ')' {
25555
- } else if parens == 0 && c == ' ' && s[i+1] != '(' && !sawRet {
25560
- return params > 2
25563
// methodReceiver returns information about the receiver
25564
// described by v. The Value v may or may not have the
25565
// flagMethod bit set, so the kind cached in v.flag should
25566
@@ -917,6 +891,16 @@
25567
v = makeMethodValue("Interface", v)
25570
+ if v.flag&flagMethodFn != 0 {
25571
+ if v.typ.Kind() != Func {
25572
+ panic("reflect: MethodFn of non-Func")
25574
+ ft := (*funcType)(unsafe.Pointer(v.typ))
25575
+ if ft.in[0].Kind() != Ptr {
25576
+ v = makeValueMethod(v)
25581
if k == Interface {
25582
// Special case: return the element inside the interface.
25583
@@ -1230,8 +1214,7 @@
25584
// created via reflect have the same underlying code pointer,
25585
// so their Pointers are equal. The function used here must
25586
// match the one used in makeMethodValue.
25587
- // This is not properly implemented for gccgo.
25589
+ f := makeFuncStub
25590
return **(**uintptr)(unsafe.Pointer(&f))
25593
Index: libgo/go/reflect/makefuncgo_386.go
25594
===================================================================
25595
--- a/src/libgo/go/reflect/makefuncgo_386.go (.../tags/gcc_4_8_2_release)
25596
+++ b/src/libgo/go/reflect/makefuncgo_386.go (.../branches/gcc-4_8-branch)
25598
// registers that might hold result values.
25599
type i386Regs struct {
25601
- eax uint32 // Value to return in %eax.
25602
- st0 uint64 // Value to return in %st(0).
25603
+ eax uint32 // Value to return in %eax.
25604
+ st0 float64 // Value to return in %st(0).
25605
+ sr bool // Set to true if hidden struct pointer.
25606
+ sf bool // Set to true if returning float
25609
// MakeFuncStubGo implements the 386 calling convention for MakeFunc.
25610
@@ -56,10 +58,13 @@
25611
in := make([]Value, 0, len(ftyp.in))
25612
ap := uintptr(regs.esp)
25616
var retPtr unsafe.Pointer
25618
retPtr = *(*unsafe.Pointer)(unsafe.Pointer(ap))
25623
for _, rt := range ftyp.in {
25626
// Call the real function.
25629
+ out := c.call(in)
25631
if len(out) != len(ftyp.out) {
25632
panic("reflect: wrong return count from function created by MakeFunc")
25633
@@ -123,13 +128,16 @@
25637
- if v.Kind() != Ptr && v.Kind() != UnsafePointer {
25638
- w = loadIword(unsafe.Pointer(w), v.typ.size)
25641
- case Float32, Float64:
25642
- regs.st0 = uint64(uintptr(w))
25643
+ case Ptr, UnsafePointer:
25644
+ regs.eax = uint32(uintptr(w))
25646
+ regs.st0 = float64(*(*float32)(unsafe.Pointer(w)))
25649
+ regs.st0 = *(*float64)(unsafe.Pointer(w))
25652
- regs.eax = uint32(uintptr(w))
25653
+ regs.eax = uint32(uintptr(loadIword(unsafe.Pointer(w), v.typ.size)))
25656
Index: libgo/go/reflect/makefunc_amd64.S
25657
===================================================================
25658
--- a/src/libgo/go/reflect/makefunc_amd64.S (.../tags/gcc_4_8_2_release)
25659
+++ b/src/libgo/go/reflect/makefunc_amd64.S (.../branches/gcc-4_8-branch)
25661
movdqa %xmm6, 0xa0(%rsp)
25662
movdqa %xmm7, 0xb0(%rsp)
25664
+ /* For MakeFunc functions that call recover. */
25665
+ movq 8(%rbp), %rdi
25667
+ call __go_makefunc_can_recover@PLT
25669
+ call __go_makefunc_can_recover
25672
# Get function type.
25674
call __go_get_closure@PLT
25676
call reflect.MakeFuncStubGo
25679
+ /* MakeFunc functions can no longer call recover. */
25681
+ call __go_makefunc_returning@PLT
25683
+ call __go_makefunc_returning
25686
# The structure will be updated with any return values. Load
25687
# all possible return registers before returning to the caller.
25689
Index: libgo/go/reflect/type.go
25690
===================================================================
25691
--- a/src/libgo/go/reflect/type.go (.../tags/gcc_4_8_2_release)
25692
+++ b/src/libgo/go/reflect/type.go (.../branches/gcc-4_8-branch)
25693
@@ -508,7 +508,7 @@
25694
m.Type = toType(mt)
25695
x := new(unsafe.Pointer)
25696
*x = unsafe.Pointer(&p.tfn)
25697
- m.Func = Value{mt, unsafe.Pointer(x), fl | flagIndir}
25698
+ m.Func = Value{mt, unsafe.Pointer(x), fl | flagIndir | flagMethodFn}
25702
Index: libgo/go/reflect/makefunc_386.S
25703
===================================================================
25704
--- a/src/libgo/go/reflect/makefunc_386.S (.../tags/gcc_4_8_2_release)
25705
+++ b/src/libgo/go/reflect/makefunc_386.S (.../branches/gcc-4_8-branch)
25710
- st0 uint64 // 0x8
25711
+ st0 float64 // 0x8
25716
+ The sr field is set by the function to a non-zero value if
25717
+ the function takes a struct hidden pointer that must be
25718
+ popped off the stack. */
25723
leal 8(%ebp), %eax /* Set esp field in struct. */
25724
movl %eax, -24(%ebp)
25726
+ /* For MakeFunc functions that call recover. */
25727
+ movl 4(%ebp), %eax
25728
+ movl %eax, (%esp)
25730
+ call __go_makefunc_can_recover@PLT
25732
+ call __go_makefunc_can_recover
25736
call __go_get_closure@PLT
25738
call __go_get_closure
25740
call reflect.MakeFuncStubGo
25743
+ /* MakeFunc functions can no longer call recover. */
25745
+ call __go_makefunc_returning@PLT
25747
+ call __go_makefunc_returning
25750
/* Set return registers. */
25752
movl -20(%ebp), %eax
25754
+ cmpb $0, -7(%ebp)
25760
@@ -73,12 +97,20 @@
25761
movsd -16(%ebp), %xmm0
25765
+ movb -8(%ebp), %dl
25780
.size reflect.makeFuncStub, . - reflect.makeFuncStub
25781
Index: libgo/go/reflect/all_test.go
25782
===================================================================
25783
--- a/src/libgo/go/reflect/all_test.go (.../tags/gcc_4_8_2_release)
25784
+++ b/src/libgo/go/reflect/all_test.go (.../branches/gcc-4_8-branch)
25785
@@ -1430,6 +1430,46 @@
25789
+type emptyStruct struct{}
25791
+type nonEmptyStruct struct {
25795
+func returnEmpty() emptyStruct {
25796
+ return emptyStruct{}
25799
+func takesEmpty(e emptyStruct) {
25802
+func returnNonEmpty(i int) nonEmptyStruct {
25803
+ return nonEmptyStruct{member: i}
25806
+func takesNonEmpty(n nonEmptyStruct) int {
25810
+func TestCallWithStruct(t *testing.T) {
25811
+ r := ValueOf(returnEmpty).Call([]Value{})
25812
+ if len(r) != 1 || r[0].Type() != TypeOf(emptyStruct{}) {
25813
+ t.Errorf("returning empty struct returned %s instead", r)
25815
+ r = ValueOf(takesEmpty).Call([]Value{ValueOf(emptyStruct{})})
25817
+ t.Errorf("takesEmpty returned values: %s", r)
25819
+ r = ValueOf(returnNonEmpty).Call([]Value{ValueOf(42)})
25820
+ if len(r) != 1 || r[0].Type() != TypeOf(nonEmptyStruct{}) || r[0].Field(0).Int() != 42 {
25821
+ t.Errorf("returnNonEmpty returned %s", r)
25823
+ r = ValueOf(takesNonEmpty).Call([]Value{ValueOf(nonEmptyStruct{member: 42})})
25824
+ if len(r) != 1 || r[0].Type() != TypeOf(1) || r[0].Int() != 42 {
25825
+ t.Errorf("takesNonEmpty returned %s", r)
25829
func TestMakeFunc(t *testing.T) {
25830
switch runtime.GOARCH {
25831
case "amd64", "386":
25832
@@ -1587,9 +1627,13 @@
25836
-/* Not yet implemented for gccgo
25837
+func TestMethodValue(t *testing.T) {
25838
+ switch runtime.GOARCH {
25839
+ case "amd64", "386":
25841
+ t.Skip("reflect method values not implemented for " + runtime.GOARCH)
25844
-func TestMethodValue(t *testing.T) {
25848
@@ -1658,8 +1702,6 @@
25854
// Reflect version of $GOROOT/test/method5.go
25856
// Concrete types implementing M method.
25857
@@ -1744,14 +1786,18 @@
25858
func (t4 Tm4) M(x int, b byte) (byte, int) { return b, x + 40 }
25860
func TestMethod5(t *testing.T) {
25861
- /* Not yet used for gccgo
25862
+ switch runtime.GOARCH {
25863
+ case "amd64", "386":
25865
+ t.Skip("reflect method values not implemented for " + runtime.GOARCH)
25868
CheckF := func(name string, f func(int, byte) (byte, int), inc int) {
25869
b, x := f(1000, 99)
25870
if b != 99 || x != 1000+inc {
25871
t.Errorf("%s(1000, 99) = %v, %v, want 99, %v", name, b, x, 1000+inc)
25876
CheckV := func(name string, i Value, inc int) {
25877
bx := i.Method(0).Call([]Value{ValueOf(1000), ValueOf(byte(99))})
25878
@@ -1761,9 +1807,7 @@
25879
t.Errorf("direct %s.M(1000, 99) = %v, %v, want 99, %v", name, b, x, 1000+inc)
25882
- /* Not yet implemented for gccgo
25883
CheckF(name+".M", i.Method(0).Interface().(func(int, byte) (byte, int)), inc)
25887
var TinterType = TypeOf(new(Tinter)).Elem()
25888
Index: libgo/go/reflect/makefunc.go
25889
===================================================================
25890
--- a/src/libgo/go/reflect/makefunc.go (.../tags/gcc_4_8_2_release)
25891
+++ b/src/libgo/go/reflect/makefunc.go (.../branches/gcc-4_8-branch)
25895
fn func([]Value) []Value
25897
+ // For gccgo we use the same entry point for functions and for
25898
+ // method values.
25903
// MakeFunc returns a new function of the given Type
25905
dummy := makeFuncStub
25906
code := **(**uintptr)(unsafe.Pointer(&dummy))
25908
- impl := &makeFuncImpl{code: code, typ: ftyp, fn: fn}
25909
+ impl := &makeFuncImpl{code: code, typ: ftyp, fn: fn, method: -1}
25911
return Value{t, unsafe.Pointer(&impl), flag(Func<<flagKindShift) | flagIndir}
25913
@@ -85,15 +90,94 @@
25914
panic("reflect: internal error: invalid use of makePartialFunc")
25917
+ switch runtime.GOARCH {
25918
+ case "amd64", "386":
25920
+ panic("reflect.makeMethodValue not implemented for " + runtime.GOARCH)
25923
// Ignoring the flagMethod bit, v describes the receiver, not the method type.
25924
fl := v.flag & (flagRO | flagAddr | flagIndir)
25925
fl |= flag(v.typ.Kind()) << flagKindShift
25926
rcvr := Value{v.typ, v.val, fl}
25928
+ // v.Type returns the actual type of the method value.
25929
+ ft := v.Type().(*rtype)
25931
+ // Indirect Go func value (dummy) to obtain
25932
+ // actual code address. (A Go func value is a pointer
25933
+ // to a C function pointer. http://golang.org/s/go11func.)
25934
+ dummy := makeFuncStub
25935
+ code := **(**uintptr)(unsafe.Pointer(&dummy))
25937
// Cause panic if method is not appropriate.
25938
// The panic would still happen during the call if we omit this,
25939
// but we want Interface() and other operations to fail early.
25940
- methodReceiver(op, rcvr, int(v.flag)>>flagMethodShift)
25941
+ t, _, _ := methodReceiver(op, rcvr, int(v.flag)>>flagMethodShift)
25943
- panic("reflect makeMethodValue not implemented")
25944
+ fv := &makeFuncImpl{
25946
+ typ: (*funcType)(unsafe.Pointer(t)),
25947
+ method: int(v.flag) >> flagMethodShift,
25951
+ return Value{ft, unsafe.Pointer(&fv), v.flag&flagRO | flag(Func)<<flagKindShift | flagIndir}
25954
+// makeValueMethod takes a method function and returns a function that
25955
+// takes a value receiver and calls the real method with a pointer to
25957
+func makeValueMethod(v Value) Value {
25959
+ if typ.Kind() != Func {
25960
+ panic("reflect: call of makeValueMethod with non-Func type")
25962
+ if v.flag&flagMethodFn == 0 {
25963
+ panic("reflect: call of makeValueMethod with non-MethodFn")
25966
+ switch runtime.GOARCH {
25967
+ case "amd64", "386":
25969
+ panic("reflect.makeValueMethod not implemented for " + runtime.GOARCH)
25972
+ t := typ.common()
25973
+ ftyp := (*funcType)(unsafe.Pointer(t))
25975
+ // Indirect Go func value (dummy) to obtain
25976
+ // actual code address. (A Go func value is a pointer
25977
+ // to a C function pointer. http://golang.org/s/go11func.)
25978
+ dummy := makeFuncStub
25979
+ code := **(**uintptr)(unsafe.Pointer(&dummy))
25981
+ impl := &makeFuncImpl{
25988
+ return Value{t, unsafe.Pointer(&impl), flag(Func<<flagKindShift) | flagIndir}
25991
+// Call the function represented by a makeFuncImpl.
25992
+func (c *makeFuncImpl) call(in []Value) []Value {
25993
+ if c.method == -1 {
25995
+ } else if c.method == -2 {
25996
+ if c.typ.IsVariadic() {
25997
+ return c.rcvr.CallSlice(in)
25999
+ return c.rcvr.Call(in)
26002
+ m := c.rcvr.Method(c.method)
26003
+ if c.typ.IsVariadic() {
26004
+ return m.CallSlice(in)
26006
+ return m.Call(in)
26010
Index: libgo/go/reflect/makefuncgo_amd64.go
26011
===================================================================
26012
--- a/src/libgo/go/reflect/makefuncgo_amd64.go (.../tags/gcc_4_8_2_release)
26013
+++ b/src/libgo/go/reflect/makefuncgo_amd64.go (.../branches/gcc-4_8-branch)
26014
@@ -319,7 +319,7 @@
26015
// All the real arguments have been found and turned into
26016
// Value's. Call the real function.
26019
+ out := c.call(in)
26021
if len(out) != len(ftyp.out) {
26022
panic("reflect: wrong return count from function created by MakeFunc")
26023
Index: libgo/go/net/fd_unix.go
26024
===================================================================
26025
--- a/src/libgo/go/net/fd_unix.go (.../tags/gcc_4_8_2_release)
26026
+++ b/src/libgo/go/net/fd_unix.go (.../branches/gcc-4_8-branch)
26036
if err == nil || err == syscall.EISCONN {
26040
+ // On Solaris we can see EINVAL if the socket has
26041
+ // already been accepted and closed by the server.
26042
+ // Treat this as a successful connection--writes to
26043
+ // the socket will see EOF. For details and a test
26044
+ // case in C see http://golang.org/issue/6828.
26045
+ if runtime.GOOS == "solaris" && err == syscall.EINVAL {
26049
if err != syscall.EINPROGRESS && err != syscall.EALREADY && err != syscall.EINTR {
26052
Index: libgo/go/go/build/syslist.go
26053
===================================================================
26054
--- a/src/libgo/go/go/build/syslist.go (.../tags/gcc_4_8_2_release)
26055
+++ b/src/libgo/go/go/build/syslist.go (.../branches/gcc-4_8-branch)
26057
+// Copyright 2011 The Go Authors. All rights reserved.
26058
+// Use of this source code is governed by a BSD-style
26059
+// license that can be found in the LICENSE file.
26063
+const goosList = "darwin dragonfly freebsd linux netbsd openbsd plan9 windows solaris "
26064
+const goarchList = "386 amd64 arm alpha m68k mipso32 mipsn32 mipsn64 mipso64 ppc ppc64 sparc sparc64 "
26065
Index: libgo/go/syscall/libcall_linux.go
26066
===================================================================
26067
--- a/src/libgo/go/syscall/libcall_linux.go (.../tags/gcc_4_8_2_release)
26068
+++ b/src/libgo/go/syscall/libcall_linux.go (.../branches/gcc-4_8-branch)
26069
@@ -190,6 +190,9 @@
26070
//sys Adjtimex(buf *Timex) (state int, err error)
26071
//adjtimex(buf *Timex) _C_int
26073
+//sysnb Dup3(oldfd int, newfd int, flags int) (err error)
26074
+//dup3(oldfd _C_int, newfd _C_int, flags _C_int) _C_int
26076
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
26077
//faccessat(dirfd _C_int, pathname *byte, mode _C_int, flags _C_int) _C_int
26079
@@ -268,6 +271,9 @@
26080
return origlen - len(buf), count, names
26083
+//sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
26084
+//getxattr(path *byte, attr *byte, buf *byte, count Size_t) Ssize_t
26086
//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
26087
//inotify_add_watch(fd _C_int, pathname *byte, mask uint32) _C_int
26089
@@ -283,6 +289,9 @@
26090
//sys Klogctl(typ int, buf []byte) (n int, err error)
26091
//klogctl(typ _C_int, bufp *byte, len _C_int) _C_int
26093
+//sys Listxattr(path string, dest []byte) (sz int, err error)
26094
+//listxattr(path *byte, list *byte, size Size_t) Ssize_t
26096
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
26097
//mkdirat(dirfd _C_int, path *byte, mode Mode_t) _C_int
26099
@@ -305,6 +314,9 @@
26100
//sys PivotRoot(newroot string, putold string) (err error)
26101
//pivot_root(newroot *byte, putold *byte) _C_int
26103
+//sys Removexattr(path string, attr string) (err error)
26104
+//removexattr(path *byte, name *byte) _C_int
26106
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
26107
//renameat(olddirfd _C_int, oldpath *byte, newdirfd _C_int, newpath *byte) _C_int
26109
@@ -338,6 +350,9 @@
26110
//sysnb Setresuid(ruid int, eguid int, suid int) (err error)
26111
//setresuid(ruid Uid_t, euid Uid_t, suid Uid_t) _C_int
26113
+//sys Setxattr(path string, attr string, data []byte, flags int) (err error)
26114
+//setxattr(path *byte, name *byte, value *byte, size Size_t, flags _C_int) _C_int
26116
//sys splice(rfd int, roff *_loff_t, wfd int, woff *_loff_t, len int, flags int) (n int64, err error)
26117
//splice(rfd _C_int, roff *_loff_t, wfd _C_int, woff *_loff_t, len Size_t, flags _C_uint) Ssize_t
26118
func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
26119
Index: libgo/go/syscall/socket.go
26120
===================================================================
26121
--- a/src/libgo/go/syscall/socket.go (.../tags/gcc_4_8_2_release)
26122
+++ b/src/libgo/go/syscall/socket.go (.../branches/gcc-4_8-branch)
26127
-const SizeofSockaddrAny = 0x1c
26128
+const SizeofSockaddrAny = 0x6c
26130
type SockaddrInet4 struct {
26132
Index: libgo/go/syscall/libcall_posix.go
26133
===================================================================
26134
--- a/src/libgo/go/syscall/libcall_posix.go (.../tags/gcc_4_8_2_release)
26135
+++ b/src/libgo/go/syscall/libcall_posix.go (.../branches/gcc-4_8-branch)
26136
@@ -238,6 +238,9 @@
26137
//sysnb Getppid() (ppid int)
26140
+//sys Getpriority(which int, who int) (prio int, err error)
26141
+//getpriority(which _C_int, who _C_int) _C_int
26143
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
26144
//getrlimit(resource _C_int, rlim *Rlimit) _C_int
26146
@@ -307,6 +310,9 @@
26147
//sysnb Setpgid(pid int, pgid int) (err error)
26148
//setpgid(pid Pid_t, pgid Pid_t) _C_int
26150
+//sys Setpriority(which int, who int, prio int) (err error)
26151
+//setpriority(which _C_int, who _C_int, prio _C_int) _C_int
26153
//sysnb Setreuid(ruid int, euid int) (err error)
26154
//setreuid(ruid Uid_t, euid Uid_t) _C_int
26156
Index: libgo/Makefile.am
26157
===================================================================
26158
--- a/src/libgo/Makefile.am (.../tags/gcc_4_8_2_release)
26159
+++ b/src/libgo/Makefile.am (.../branches/gcc-4_8-branch)
26160
@@ -424,6 +424,7 @@
26161
runtime/go-caller.c \
26162
runtime/go-callers.c \
26163
runtime/go-can-convert-interface.c \
26164
+ runtime/go-cdiv.c \
26166
runtime/go-check-interface.c \
26167
runtime/go-construct-map.c \
26168
@@ -1254,7 +1255,7 @@
26169
go/go/build/build.go \
26170
go/go/build/doc.go \
26171
go/go/build/read.go \
26173
+ go/go/build/syslist.go
26174
go_go_doc_files = \
26175
go/go/doc/comment.go \
26177
@@ -2712,15 +2713,6 @@
26179
.PHONY: go/build/check
26181
-syslist.go: s-syslist; @true
26182
-s-syslist: Makefile
26183
- echo '// Generated automatically by make.' >syslist.go.tmp
26184
- echo 'package build' >>syslist.go.tmp
26185
- echo 'const goosList = "$(GOOS)"' >>syslist.go.tmp
26186
- echo 'const goarchList = "$(GOARCH)"' >>syslist.go.tmp
26187
- $(SHELL) $(srcdir)/../move-if-change syslist.go.tmp syslist.go
26190
@go_include@ go/doc.lo.dep
26191
go/doc.lo.dep: $(go_go_doc_files)
26193
Index: libcpp/po/pt_BR.po
26194
===================================================================
26195
--- a/src/libcpp/po/pt_BR.po (.../tags/gcc_4_8_2_release)
26196
+++ b/src/libcpp/po/pt_BR.po (.../branches/gcc-4_8-branch)
26198
+# Brazilian Portuguese translation for cpplib
26199
+# Copyright (C) 2013 Free Software Foundation, Inc.
26200
+# This file is distributed under the same license as the gcc package.
26201
+# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013.
26205
+"Project-Id-Version: cpplib 4.8.0\n"
26206
+"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
26207
+"POT-Creation-Date: 2013-03-15 17:42+0000\n"
26208
+"PO-Revision-Date: 2013-12-18 03:12-0300\n"
26209
+"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
26210
+"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
26211
+"Language: pt_BR\n"
26212
+"MIME-Version: 1.0\n"
26213
+"Content-Type: text/plain; charset=UTF-8\n"
26214
+"Content-Transfer-Encoding: 8bit\n"
26215
+"X-Generator: Poedit 1.5.7\n"
26216
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
26220
+msgid "conversion from %s to %s not supported by iconv"
26221
+msgstr "sem suporte a conversão de %s para %s por iconv"
26224
+msgid "iconv_open"
26225
+msgstr "iconv_open"
26229
+msgid "no iconv implementation, cannot convert from %s to %s"
26230
+msgstr "nenhuma implementação iconv, não foi possível converter de %s para %s"
26234
+msgid "character 0x%lx is not in the basic source character set\n"
26235
+msgstr "caractere 0x%lx não está no conjunto de caracteres fonte básico\n"
26237
+#: charset.c:797 charset.c:1443
26238
+msgid "converting to execution character set"
26239
+msgstr "convertendo para conjunto de caracteres da execução"
26243
+msgid "character 0x%lx is not unibyte in execution character set"
26244
+msgstr "caractere 0x%lx não é unibyte no conjunto de caracteres de execução"
26248
+msgid "Character %x might not be NFKC"
26249
+msgstr "Caractere %x pode não ser NFKC"
26252
+msgid "universal character names are only valid in C++ and C99"
26253
+msgstr "nomes de caractere universais são válidos apenas em C++ e C99"
26257
+msgid "the meaning of '\\%c' is different in traditional C"
26258
+msgstr "o significado de \"\\%c\" é diferente em C tradicional"
26261
+msgid "In _cpp_valid_ucn but not a UCN"
26262
+msgstr "Em _cpp_valid_ucn, mas não é um UCN"
26266
+msgid "incomplete universal character name %.*s"
26267
+msgstr "nome de caractere universal incompleto %.*s"
26271
+msgid "%.*s is not a valid universal character"
26272
+msgstr "%.*s não é um caractere universal válido"
26274
+#: charset.c:1055 lex.c:1117
26275
+msgid "'$' in identifier or number"
26276
+msgstr "\"$\" em identificador ou número"
26280
+msgid "universal character %.*s is not valid in an identifier"
26281
+msgstr "caractere universal %.*s não é válido em um identificador"
26285
+msgid "universal character %.*s is not valid at the start of an identifier"
26286
+msgstr "caractere universal %.*s não é válido no começo de um identificador"
26288
+#: charset.c:1101 charset.c:1673
26289
+msgid "converting UCN to source character set"
26290
+msgstr "convertendo UCN para conjunto de caracteres fonte"
26293
+msgid "converting UCN to execution character set"
26294
+msgstr "convertendo UCN para conjunto de caracteres de execução"
26297
+msgid "the meaning of '\\x' is different in traditional C"
26298
+msgstr "o significado de \"\\x\" é diferente em C tradicional"
26301
+msgid "\\x used with no following hex digits"
26302
+msgstr "\\x usado com nenhum dígito hexa"
26305
+msgid "hex escape sequence out of range"
26306
+msgstr "sequência de escape hexa fora de alcance"
26309
+msgid "octal escape sequence out of range"
26310
+msgstr "sequência de escape octal fora de alcance"
26313
+msgid "the meaning of '\\a' is different in traditional C"
26314
+msgstr "o significado de \"\\a\" é diferente em C tradicional"
26318
+msgid "non-ISO-standard escape sequence, '\\%c'"
26319
+msgstr "sequência de escape não padrão ISO, \"\\%c\""
26323
+msgid "unknown escape sequence: '\\%c'"
26324
+msgstr "sequência de escape desconhecida: \"\\%c\""
26328
+msgid "unknown escape sequence: '\\%s'"
26329
+msgstr "sequência de escape desconhecida: \"\\%s\""
26332
+msgid "converting escape sequence to execution character set"
26333
+msgstr "convertendo sequência de escape para conjunto de caracteres de execução"
26335
+#: charset.c:1508 charset.c:1572
26336
+msgid "character constant too long for its type"
26337
+msgstr "constante caractere muito longa para seu tipo"
26340
+msgid "multi-character character constant"
26341
+msgstr "constante de caractere multi-caractere"
26344
+msgid "empty character constant"
26345
+msgstr "constante caractere vazia"
26349
+msgid "failure to convert %s to %s"
26350
+msgstr "falha ao converter %s para %s"
26352
+#: directives.c:224 directives.c:250
26354
+msgid "extra tokens at end of #%s directive"
26355
+msgstr "tokens extras ao final da diretiva %#s"
26357
+#: directives.c:357
26359
+msgid "#%s is a GCC extension"
26360
+msgstr "#%s é uma extensão GCC"
26362
+#: directives.c:362
26364
+msgid "#%s is a deprecated GCC extension"
26365
+msgstr "#%s é uma extensão GCC obsoleta"
26367
+#: directives.c:375
26368
+msgid "suggest not using #elif in traditional C"
26369
+msgstr "sugere-se não usar #elif em C tradicional"
26371
+#: directives.c:378
26373
+msgid "traditional C ignores #%s with the # indented"
26374
+msgstr "C tradicional ignora #%s com o # com recuo"
26376
+#: directives.c:382
26378
+msgid "suggest hiding #%s from traditional C with an indented #"
26379
+msgstr "sugere-se ocultar #%s do C tradicional com um # com recuo"
26381
+#: directives.c:408
26382
+msgid "embedding a directive within macro arguments is not portable"
26383
+msgstr "embutir uma diretiva dentro de argumentos macro não é portátil"
26385
+#: directives.c:428
26386
+msgid "style of line directive is a GCC extension"
26387
+msgstr "estilo de diretiva de linha é uma extensão GCC"
26389
+#: directives.c:483
26391
+msgid "invalid preprocessing directive #%s"
26392
+msgstr "diretiva de preprocessamento inválida #%s"
26394
+#: directives.c:551
26395
+msgid "\"defined\" cannot be used as a macro name"
26396
+msgstr "\"defined\" não pode ser usado como um nome de macro"
26398
+#: directives.c:557
26400
+msgid "\"%s\" cannot be used as a macro name as it is an operator in C++"
26401
+msgstr "\"%s\" não pode ser usado como um nome de macro, pois é um operador em C++"
26403
+#: directives.c:560
26405
+msgid "no macro name given in #%s directive"
26406
+msgstr "nenhum nome de macro fornecido na diretiva #%s"
26408
+#: directives.c:563
26409
+msgid "macro names must be identifiers"
26410
+msgstr "nomes de macro devem ser identificadores"
26412
+#: directives.c:612
26414
+msgid "undefining \"%s\""
26415
+msgstr "removendo definição de \"%s\""
26417
+#: directives.c:667
26418
+msgid "missing terminating > character"
26419
+msgstr "faltando caractere terminador >"
26421
+#: directives.c:726
26423
+msgid "#%s expects \"FILENAME\" or <FILENAME>"
26424
+msgstr "#%s espera \"NOME DE ARQUIVO\" OU <NOME DE ARQUIVO>"
26426
+#: directives.c:772
26428
+msgid "empty filename in #%s"
26429
+msgstr "nome de arquivo vazio em #%s"
26431
+#: directives.c:782
26432
+msgid "#include nested too deeply"
26433
+msgstr "#include aninhado profundo demais"
26435
+#: directives.c:823
26436
+msgid "#include_next in primary source file"
26437
+msgstr "#include_next no arquivo fonte primário"
26439
+#: directives.c:849
26441
+msgid "invalid flag \"%s\" in line directive"
26442
+msgstr "opção inválida \"%s\" na diretiva line"
26444
+#: directives.c:909
26445
+msgid "unexpected end of file after #line"
26446
+msgstr "fim de arquivo inesperado após #line"
26448
+#: directives.c:912
26450
+msgid "\"%s\" after #line is not a positive integer"
26451
+msgstr "\"%s\" após #line não é um inteiro positivo"
26453
+#: directives.c:918 directives.c:920
26454
+msgid "line number out of range"
26455
+msgstr "número da linha fora de alcance"
26457
+#: directives.c:933 directives.c:1013
26459
+msgid "\"%s\" is not a valid filename"
26460
+msgstr "\"%s\" não é um nome de arquivo válido"
26462
+#: directives.c:973
26464
+msgid "\"%s\" after # is not a positive integer"
26465
+msgstr "\"%s\" após # não é um inteiro positivo"
26467
+#: directives.c:1068 directives.c:1070 directives.c:1072 directives.c:1658
26472
+#: directives.c:1096
26474
+msgid "invalid #%s directive"
26475
+msgstr "diretiva inválida #%s"
26477
+#: directives.c:1159
26479
+msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
26480
+msgstr "registrando pragmas em espaço de nomes \"%s\" com expansão de nome incompatível"
26482
+#: directives.c:1168
26484
+msgid "registering pragma \"%s\" with name expansion and no namespace"
26485
+msgstr "registrando pragma \"%s\" com expansão de nome e nenhum espaço de nomes"
26487
+#: directives.c:1186
26489
+msgid "registering \"%s\" as both a pragma and a pragma namespace"
26490
+msgstr "registrando \"%s\" como tanto um pragma e um espaço de nomes de pragma"
26492
+#: directives.c:1189
26494
+msgid "#pragma %s %s is already registered"
26495
+msgstr "#pragma %s %s já está registrado"
26497
+#: directives.c:1192
26499
+msgid "#pragma %s is already registered"
26500
+msgstr "#pragma %s já está registrado"
26502
+#: directives.c:1222
26503
+msgid "registering pragma with NULL handler"
26504
+msgstr "registrando pragma com manipulador NULO"
26506
+#: directives.c:1439
26507
+msgid "#pragma once in main file"
26508
+msgstr "#pragma ocorre uma vez no arquivo principal"
26510
+#: directives.c:1462
26511
+msgid "invalid #pragma push_macro directive"
26512
+msgstr "diretiva inválida #pragma push_macro"
26514
+#: directives.c:1517
26515
+msgid "invalid #pragma pop_macro directive"
26516
+msgstr "diretiva inválida #pragma pop_macro"
26518
+#: directives.c:1572
26519
+msgid "invalid #pragma GCC poison directive"
26520
+msgstr "diretiva inválida #pragma GCC poison"
26522
+#: directives.c:1581
26524
+msgid "poisoning existing macro \"%s\""
26525
+msgstr "envenenando macro existente \"%s\""
26527
+#: directives.c:1600
26528
+msgid "#pragma system_header ignored outside include file"
26529
+msgstr "#pragma system_header ignorado fora do arquivo include"
26531
+#: directives.c:1625
26533
+msgid "cannot find source file %s"
26534
+msgstr "não foi possível localizar o arquivo fonte %s"
26536
+#: directives.c:1629
26538
+msgid "current file is older than %s"
26539
+msgstr "arquivo atual é mais velho do que %s"
26541
+#: directives.c:1653
26543
+msgid "invalid \"#pragma GCC %s\" directive"
26544
+msgstr "diretiva inválida \"#pragma GCC %s\""
26546
+#: directives.c:1847
26547
+msgid "_Pragma takes a parenthesized string literal"
26548
+msgstr "_Pragma leva uma literal de string entre parenteses"
26550
+#: directives.c:1968
26551
+msgid "#else without #if"
26552
+msgstr "#else sem #if"
26554
+#: directives.c:1973
26555
+msgid "#else after #else"
26556
+msgstr "#else após #else"
26558
+#: directives.c:1975 directives.c:2008
26559
+msgid "the conditional began here"
26560
+msgstr "a condicional começou aqui"
26562
+#: directives.c:2001
26563
+msgid "#elif without #if"
26564
+msgstr "#elif sem #if"
26566
+#: directives.c:2006
26567
+msgid "#elif after #else"
26568
+msgstr "#elif após #else"
26570
+#: directives.c:2044
26571
+msgid "#endif without #if"
26572
+msgstr "#endif sem #if"
26574
+#: directives.c:2124
26575
+msgid "missing '(' after predicate"
26576
+msgstr "faltando \"(\" após predicado"
26578
+#: directives.c:2139
26579
+msgid "missing ')' to complete answer"
26580
+msgstr "faltando \")\" para uma resposta completa"
26582
+#: directives.c:2159
26583
+msgid "predicate's answer is empty"
26584
+msgstr "resposta do predicado está vazia"
26586
+#: directives.c:2186
26587
+msgid "assertion without predicate"
26588
+msgstr "asserção sem predicado"
26590
+#: directives.c:2189
26591
+msgid "predicate must be an identifier"
26592
+msgstr "predicado deve ser um identificador"
26594
+#: directives.c:2275
26596
+msgid "\"%s\" re-asserted"
26597
+msgstr "\"%s\" re-assertado"
26599
+#: directives.c:2567
26601
+msgid "unterminated #%s"
26602
+msgstr "#%s não terminado"
26604
+#: directives-only.c:221 lex.c:2234 traditional.c:162
26605
+msgid "unterminated comment"
26606
+msgstr "comentário não terminado"
26610
+msgstr "saída padrão"
26617
+#: expr.c:479 expr.c:577
26618
+msgid "fixed-point constants are a GCC extension"
26619
+msgstr "constantes de ponto fixo (fixed-point constants) é uma extensão GCC"
26622
+msgid "invalid prefix \"0b\" for floating constant"
26623
+msgstr "prefixo inválido \"0b\" para constante flutuante"
26626
+msgid "use of C99 hexadecimal floating constant"
26627
+msgstr "uso de constante flutuante hexadecimal de C99"
26631
+msgid "invalid suffix \"%.*s\" on floating constant"
26632
+msgstr "sufixo inválido \"%.*s\" na constante flutuante"
26634
+#: expr.c:556 expr.c:616
26636
+msgid "traditional C rejects the \"%.*s\" suffix"
26637
+msgstr "C tradicional rejeita o sufixo \"%.*s\""
26640
+msgid "suffix for double constant is a GCC extension"
26641
+msgstr "sufixo para constante dupla (suffix for double constant) é uma extensão GCC"
26645
+msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
26646
+msgstr "sufixo inválido \"%.*s\" com constante flutuante hexadecimal"
26649
+msgid "decimal float constants are a GCC extension"
26650
+msgstr "constantes flutuante decimais (decimal float constants) é uma extensão GCC"
26654
+msgid "invalid suffix \"%.*s\" on integer constant"
26655
+msgstr "sufixo inválido \"%.*s\" em constante inteiro"
26658
+msgid "use of C++0x long long integer constant"
26659
+msgstr "uso de constante longo longo inteiro de C++0x"
26662
+msgid "use of C99 long long integer constant"
26663
+msgstr "uso de constante longo longo inteiro de C99"
26666
+msgid "imaginary constants are a GCC extension"
26667
+msgstr "constantes imaginárias (imaginary constants) é uma extensão GCC"
26670
+msgid "binary constants are a GCC extension"
26671
+msgstr "constantes binárias (binary constants) é uma extensão GCC"
26674
+msgid "integer constant is too large for its type"
26675
+msgstr "constante inteira é muito grande para seu tipo"
26678
+msgid "integer constant is so large that it is unsigned"
26679
+msgstr "constante inteira é tão grande que não está assinada"
26682
+msgid "missing ')' after \"defined\""
26683
+msgstr "faltando \")\" após \"defined\""
26686
+msgid "operator \"defined\" requires an identifier"
26687
+msgstr "operador \"defined\" requer um identificador"
26691
+msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
26692
+msgstr "(\"%s\" é um token alternativo para \"%s\" em C++)"
26695
+msgid "this use of \"defined\" may not be portable"
26696
+msgstr "esse uso de \"defined\" pode não ser portátil"
26699
+msgid "user-defined literal in preprocessor expression"
26700
+msgstr "literal definida pelo usuário em expressão do preprocessador"
26703
+msgid "floating constant in preprocessor expression"
26704
+msgstr "constante flutuante em expressão do preprocessador"
26707
+msgid "imaginary number in preprocessor expression"
26708
+msgstr "número imaginário em expressão do preprocessador"
26712
+msgid "\"%s\" is not defined"
26713
+msgstr "\"%s\" não está definido"
26716
+msgid "assertions are a GCC extension"
26717
+msgstr "asserções (assertions) é uma extensão GCC"
26720
+msgid "assertions are a deprecated extension"
26721
+msgstr "asserções (assertions) é uma extensão obsoleta"
26725
+msgid "unbalanced stack in %s"
26726
+msgstr "pilha não balanceada em %s"
26730
+msgid "impossible operator '%u'"
26731
+msgstr "operador impossível \"%u\""
26734
+msgid "missing ')' in expression"
26735
+msgstr "faltando \")\" na expressão"
26738
+msgid "'?' without following ':'"
26739
+msgstr "\"?\" sem estar seguido por \":\""
26742
+msgid "integer overflow in preprocessor expression"
26743
+msgstr "estouro de inteiro em expressão do preprocessador"
26746
+msgid "missing '(' in expression"
26747
+msgstr "faltando \"(\" na expressão"
26751
+msgid "the left operand of \"%s\" changes sign when promoted"
26752
+msgstr "o operador à esquerda de \"%s\" altera o sinal quando promovido"
26756
+msgid "the right operand of \"%s\" changes sign when promoted"
26757
+msgstr "o operador à direita de \"%s\" altera o sinal quando promovido"
26760
+msgid "traditional C rejects the unary plus operator"
26761
+msgstr "C tradicional rejeita o operador unário mais"
26764
+msgid "comma operator in operand of #if"
26765
+msgstr "operador vírgula em operando de #if"
26768
+msgid "division by zero in #if"
26769
+msgstr "divisão por zero em #if"
26772
+msgid "NULL directory in find_file"
26773
+msgstr "diretório NULO em find_file"
26776
+msgid "one or more PCH files were found, but they were invalid"
26777
+msgstr "um ou mais arquivos PCH foram encontrados, mas são inválidos"
26780
+msgid "use -Winvalid-pch for more information"
26781
+msgstr "use -Winvalid-pch para mais informações"
26785
+msgid "%s is a block device"
26786
+msgstr "%s é um dispositivo de bloco"
26790
+msgid "%s is too large"
26791
+msgstr "%s é muito grande"
26795
+msgid "%s is shorter than expected"
26796
+msgstr "%s é muito menor do que esperado"
26800
+msgid "no include path in which to search for %s"
26801
+msgstr "não foi incluído nenhum caminho no qual se possa procurar por %s"
26804
+msgid "Multiple include guards may be useful for:\n"
26805
+msgstr "Múltiplos include guards podem ser úteis para:\n"
26808
+msgid "cppchar_t must be an unsigned type"
26809
+msgstr "cppchar_t deve ser um tipo não assinado"
26813
+msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits"
26814
+msgstr "aritmética do preprocessador possui uma precisão máxima de %lu bits; o alvo requer %lu bits"
26817
+msgid "CPP arithmetic must be at least as precise as a target int"
26818
+msgstr "aritmética do CPP deve ser pelo menos tão precisa quanto um int alvo"
26821
+msgid "target char is less than 8 bits wide"
26822
+msgstr "char alvo é menor do que 8 bits"
26825
+msgid "target wchar_t is narrower than target char"
26826
+msgstr "wchar_t alvo é mais estreito do que o char alvo"
26829
+msgid "target int is narrower than target char"
26830
+msgstr "int alvo é mais estreito do que o char alvo"
26833
+msgid "CPP half-integer narrower than CPP character"
26834
+msgstr "meio-inteiro do CPP é mais estreito do que o caractere do CPP"
26838
+msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits"
26839
+msgstr "CPP nesta máquina não consegue manipular constantes de wide character acima de %lu bits, mas o alvo requer %lu bits"
26842
+msgid "backslash and newline separated by space"
26843
+msgstr "barra invertida e nova linha separadas por espaço"
26846
+msgid "backslash-newline at end of file"
26847
+msgstr "barra invertida e nova linha no final do arquivo"
26851
+msgid "trigraph ??%c converted to %c"
26852
+msgstr "trígrafo ??%c convertido para %c"
26856
+msgid "trigraph ??%c ignored, use -trigraphs to enable"
26857
+msgstr "trígrafo ??%c ignorado, use -trigraphs para habilitá-lo"
26860
+msgid "\"/*\" within comment"
26861
+msgstr "\"/*\" dentro de comentário"
26865
+msgid "%s in preprocessing directive"
26866
+msgstr "%s em diretiva de preprocessamento"
26869
+msgid "null character(s) ignored"
26870
+msgstr "um ou mais caracteres nulos ignorados"
26874
+msgid "`%.*s' is not in NFKC"
26875
+msgstr "\"%.*s\" não está em NFKC"
26879
+msgid "`%.*s' is not in NFC"
26880
+msgstr "\"%.*s\" não está em NFC"
26882
+#: lex.c:1164 lex.c:1241
26884
+msgid "attempt to use poisoned \"%s\""
26885
+msgstr "tentativa de usar \"%s\" envenenado"
26887
+#: lex.c:1172 lex.c:1249
26888
+msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro"
26889
+msgstr "__VA_ARGS__ pode aparecer apenas na expansão de uma macro variádica C99"
26891
+#: lex.c:1178 lex.c:1255
26893
+msgid "identifier \"%s\" is a special operator name in C++"
26894
+msgstr "identificador \"%s\" é o nome de um operador especial em C++"
26897
+msgid "raw string delimiter longer than 16 characters"
26898
+msgstr "delimitador de string não tratada (raw) maior do que 16 caracteres"
26902
+msgid "invalid character '%c' in raw string delimiter"
26903
+msgstr "caractere inválido \"%c\" em delimitador de string não tratada (raw)"
26905
+#: lex.c:1525 lex.c:1547
26906
+msgid "unterminated raw string"
26907
+msgstr "string não tratada (raw) não terminada"
26909
+#: lex.c:1573 lex.c:1706
26910
+msgid "invalid suffix on literal; C++11 requires a space between literal and identifier"
26911
+msgstr "sufixo inválido em literal; C++11 requer um espaço entre literal e identificador"
26914
+msgid "null character(s) preserved in literal"
26915
+msgstr "um ou mais caracteres nulos preservados em literal"
26919
+msgid "missing terminating %c character"
26920
+msgstr "faltando o caractere de terminação %c"
26923
+msgid "C++ style comments are not allowed in ISO C90"
26924
+msgstr "comentários no estilo C++ não são permitidos em ISO C90"
26927
+msgid "(this will be reported only once per input file)"
26928
+msgstr "(isso será relatado apenas uma vez por arquivo de entrada)"
26931
+msgid "multi-line comment"
26932
+msgstr "comentário multilinha"
26936
+msgid "unspellable token %s"
26937
+msgstr "token %s impronunciável"
26941
+msgid "macro \"%s\" is not used"
26942
+msgstr "macro \"%s\" não é usada"
26944
+#: macro.c:229 macro.c:426
26946
+msgid "invalid built-in macro \"%s\""
26947
+msgstr "macro interna inválida \"%s\""
26950
+msgid "could not determine file timestamp"
26951
+msgstr "não foi possível determinar o arquivo de marca de tempo"
26954
+msgid "could not determine date and time"
26955
+msgstr "não foi possível determinar a data e a hora"
26958
+msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
26959
+msgstr "__COUNTER__ expandido dentro diretiva com -fdirectives-only"
26962
+msgid "invalid string literal, ignoring final '\\'"
26963
+msgstr "literal de string inválida, ignorando final \"\\\""
26967
+msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
26968
+msgstr "colar \"%s\" em \"%s\" não resulta em nenhum token de preprocessamento válido"
26971
+msgid "ISO C99 requires rest arguments to be used"
26972
+msgstr "ISO C99 requer que argumentos restantes sejam usados"
26976
+msgid "macro \"%s\" requires %u arguments, but only %u given"
26977
+msgstr "macro \"%s\" requer %u argumentos, mas apenas %u foram fornecidos"
26981
+msgid "macro \"%s\" passed %u arguments, but takes just %u"
26982
+msgstr "macro \"%s\" passou %u argumentos, mas usa apenas %u"
26984
+#: macro.c:923 traditional.c:680
26986
+msgid "unterminated argument list invoking macro \"%s\""
26987
+msgstr "lista de argumentos interminável chamando macro \"%s\""
26991
+msgid "function-like macro \"%s\" must be used with arguments in traditional C"
26992
+msgstr "macro \"%s\" do tipo função deve ser usada com argumento em C tradicional"
26994
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33305
26997
+msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90 and ISO C++98"
26998
+msgstr "chamando macro %s argumento %d: argumentos de macro vazios estão indefinidos em ISO C90 e ISO C++98"
27002
+msgid "duplicate macro parameter \"%s\""
27003
+msgstr "parâmetro de macro \"%s\" duplicado"
27007
+msgid "\"%s\" may not appear in macro parameter list"
27008
+msgstr "\"%s\" não pode aparecer na lista de parâmetros de macro"
27011
+msgid "macro parameters must be comma-separated"
27012
+msgstr "parâmetros de macro devem ser separados por vírgula"
27015
+msgid "parameter name missing"
27016
+msgstr "faltando nome de parâmetro"
27019
+msgid "anonymous variadic macros were introduced in C99"
27020
+msgstr "macros variádicas anônimas foram introduzidas em C99"
27023
+msgid "ISO C does not permit named variadic macros"
27024
+msgstr "ISO C não permite macros variádicas nomeadas"
27027
+msgid "missing ')' in macro parameter list"
27028
+msgstr "faltando \")\" na lista de parâmetros de macro"
27031
+msgid "'##' cannot appear at either end of a macro expansion"
27032
+msgstr "\"##\" não pode aparecer no final da expansão de macro"
27035
+msgid "ISO C99 requires whitespace after the macro name"
27036
+msgstr "ISO C99 requer espaço em branco após o nome de macro"
27039
+msgid "missing whitespace after the macro name"
27040
+msgstr "faltando espaço em branco após o nome de macro"
27043
+msgid "'#' is not followed by a macro parameter"
27044
+msgstr "\"#\" não está seguido por um parâmetro de macro"
27048
+msgid "\"%s\" redefined"
27049
+msgstr "\"%s\" re-definido"
27052
+msgid "this is the location of the previous definition"
27053
+msgstr "essa é a localização da definição anterior"
27057
+msgid "macro argument \"%s\" would be stringified in traditional C"
27058
+msgstr "argumento de macro \"%s\" estaria em uma string no C tradicional"
27062
+msgid "invalid hash type %d in cpp_macro_definition"
27063
+msgstr "tipo de hash inválido %d em cpp_macro_definition"
27065
+#: pch.c:87 pch.c:345 pch.c:359 pch.c:377 pch.c:383 pch.c:392 pch.c:399
27066
+msgid "while writing precompiled header"
27067
+msgstr "enquanto realizava escrita de header pré-compilado"
27071
+msgid "%s: not used because `%.*s' is poisoned"
27072
+msgstr "%s: não usado porque \"%.*s\" está envenenado"
27076
+msgid "%s: not used because `%.*s' not defined"
27077
+msgstr "%s: não usado porque \"%.*s\" não está definido"
27081
+msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
27082
+msgstr "%s: não usado porque \"%.*s\" está definido como \"%s\", e não \"%.*s\""
27086
+msgid "%s: not used because `%s' is defined"
27087
+msgstr "%s: não usado porque \"%s\" está definido"
27091
+msgid "%s: not used because `__COUNTER__' is invalid"
27092
+msgstr "%s: não usado porque \"__COUNTER__\" é inválido"
27094
+#: pch.c:723 pch.c:898
27095
+msgid "while reading precompiled header"
27096
+msgstr "enquanto realizava leitura de header pré-compilado"
27098
+#: traditional.c:750
27100
+msgid "detected recursion whilst expanding macro \"%s\""
27101
+msgstr "detectada recursão enquanto expandia macro \"%s\""
27103
+#: traditional.c:968
27104
+msgid "syntax error in macro parameter list"
27105
+msgstr "erro de sintaxe na lista de parâmetros de macro"
27106
Index: libcpp/po/ChangeLog
27107
===================================================================
27108
--- a/src/libcpp/po/ChangeLog (.../tags/gcc_4_8_2_release)
27109
+++ b/src/libcpp/po/ChangeLog (.../branches/gcc-4_8-branch)
27111
+2013-12-18 Joseph Myers <joseph@codesourcery.com>
27115
+2013-11-01 Joseph Myers <joseph@codesourcery.com>
27119
2013-10-16 Release Manager
27121
* GCC 4.8.2 released.
27122
Index: libcpp/po/tr.po
27123
===================================================================
27124
--- a/src/libcpp/po/tr.po (.../tags/gcc_4_8_2_release)
27125
+++ b/src/libcpp/po/tr.po (.../branches/gcc-4_8-branch)
27127
# Turkish translations for cpplib messages.
27128
# Copyright (C) 2007 Free Software Foundation, Inc.
27129
+# This file is distributed under the same license as the gcc package.
27131
# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2001, ..., 2007.
27132
+# Volkan Gezer <vlkngzr@gmail.com>, 2013.
27135
-"Project-Id-Version: cpplib 4.2.0\n"
27136
+"Project-Id-Version: cpplib 4.8.0\n"
27137
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
27138
-"POT-Creation-Date: 2013-02-24 01:05+0000\n"
27139
-"PO-Revision-Date: 2007-05-23 01:17+0300\n"
27140
-"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
27141
+"POT-Creation-Date: 2013-03-15 17:42+0000\n"
27142
+"PO-Revision-Date: 2013-11-01 22:29+0100\n"
27143
+"Last-Translator: Volkan Gezer <vlkngzr@gmail.com>\n"
27144
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
27146
"MIME-Version: 1.0\n"
27147
"Content-Type: text/plain; charset=UTF-8\n"
27148
"Content-Transfer-Encoding: 8bit\n"
27149
-"X-Generator: KBabel 1.11.4\n"
27150
+"X-Generator: Lokalize 1.5\n"
27151
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
27154
@@ -121,10 +123,9 @@
27155
msgstr "ISO standardı olmayan önceleme dizgesi, '\\%c'"
27158
-#, fuzzy, c-format
27159
-#| msgid "unknown escape sequence '\\%c'"
27161
msgid "unknown escape sequence: '\\%c'"
27162
-msgstr "bilinmeyen önceleme dizgesi '\\%c'"
27163
+msgstr "bilinmeyen kaçış dizgesi: '\\%c'"
27167
@@ -163,10 +164,9 @@
27168
msgstr "#%s bir GCC uzantısıdır"
27170
#: directives.c:362
27171
-#, fuzzy, c-format
27172
-#| msgid "#%s is a GCC extension"
27174
msgid "#%s is a deprecated GCC extension"
27175
-msgstr "#%s bir GCC uzantısıdır"
27176
+msgstr "#%s eskimiş bir GCC uzantısıdır"
27178
#: directives.c:375
27179
msgid "suggest not using #elif in traditional C"
27180
@@ -247,7 +247,7 @@
27182
#: directives.c:909
27183
msgid "unexpected end of file after #line"
27185
+msgstr "#line satırından sonra beklenmeyen dosya sonu"
27187
#: directives.c:912
27189
@@ -271,7 +271,7 @@
27190
#: directives.c:1068 directives.c:1070 directives.c:1072 directives.c:1658
27196
#: directives.c:1096
27198
@@ -312,16 +312,12 @@
27199
msgstr "main dosyasında '#pragma once'"
27201
#: directives.c:1462
27203
-#| msgid "invalid #pragma GCC poison directive"
27204
msgid "invalid #pragma push_macro directive"
27205
-msgstr "geçersiz #pragma GCC poison yönergesi"
27206
+msgstr "geçersiz #pragma güdümlü_makro yönergesi"
27208
#: directives.c:1517
27210
-#| msgid "invalid #pragma GCC poison directive"
27211
msgid "invalid #pragma pop_macro directive"
27212
-msgstr "geçersiz #pragma GCC poison yönergesi"
27213
+msgstr "geçersiz #pragma güdümlü_makro yönergesi"
27215
#: directives.c:1572
27216
msgid "invalid #pragma GCC poison directive"
27217
@@ -347,10 +343,9 @@
27218
msgstr "mevcut dosya %s den daha eski"
27220
#: directives.c:1653
27221
-#, fuzzy, c-format
27222
-#| msgid "invalid #pragma GCC poison directive"
27224
msgid "invalid \"#pragma GCC %s\" directive"
27225
-msgstr "geçersiz #pragma GCC poison yönergesi"
27226
+msgstr "geçersiz \"#pragma GCC %s\" yönergesi"
27228
#: directives.c:1847
27229
msgid "_Pragma takes a parenthesized string literal"
27230
@@ -405,7 +400,7 @@
27231
msgid "\"%s\" re-asserted"
27232
msgstr "\"%s\" tekrar olumlanmış"
27234
-#: directives.c:2566
27235
+#: directives.c:2567
27237
msgid "unterminated #%s"
27238
msgstr "sonlandırılmamış #%s"
27239
@@ -424,16 +419,12 @@
27242
#: expr.c:479 expr.c:577
27244
-#| msgid "imaginary constants are a GCC extension"
27245
msgid "fixed-point constants are a GCC extension"
27246
-msgstr "sanal sabitler bir GCC genişletmesidir"
27247
+msgstr "sabit noktalı sabitler bir GCC uzantısıdır"
27251
-#| msgid "invalid suffix \"%.*s\" on floating constant"
27252
msgid "invalid prefix \"0b\" for floating constant"
27253
-msgstr "gerçel sabitin \"%.*s\" soneki geçersiz"
27254
+msgstr "kayan nokta için geçerisz \"0b\" öntakısı"
27257
msgid "use of C99 hexadecimal floating constant"
27258
@@ -450,10 +441,8 @@
27259
msgstr "geleneksel C \"%.*s\" sonekini kullanmaz"
27263
-#| msgid "imaginary constants are a GCC extension"
27264
msgid "suffix for double constant is a GCC extension"
27265
-msgstr "sanal sabitler bir GCC genişletmesidir"
27266
+msgstr "çift sabit için öntakı bir GCC uzantısıdır"
27270
@@ -461,10 +450,8 @@
27271
msgstr "onaltılık kayan sabitli \"%.*s\" soneki geçersiz"
27275
-#| msgid "imaginary constants are a GCC extension"
27276
msgid "decimal float constants are a GCC extension"
27277
-msgstr "sanal sabitler bir GCC genişletmesidir"
27278
+msgstr "onluk kayan sabitler bir GCC uzantısıdır"
27282
@@ -472,10 +459,8 @@
27283
msgstr "tamsayı sabitte sonek \"%.*s\" soneki geçersiz"
27287
-#| msgid "use of C99 long long integer constant"
27288
msgid "use of C++0x long long integer constant"
27289
-msgstr "ISO C99 long long tamsayı sabitleri yasaklar"
27290
+msgstr "ISO C++0x long long tamsayı sabitlerinin kullanımı"
27293
msgid "use of C99 long long integer constant"
27294
@@ -486,10 +471,8 @@
27295
msgstr "sanal sabitler bir GCC genişletmesidir"
27299
-#| msgid "imaginary constants are a GCC extension"
27300
msgid "binary constants are a GCC extension"
27301
-msgstr "sanal sabitler bir GCC genişletmesidir"
27302
+msgstr "ikili sabitler bir GCC uzantısıdır"
27305
msgid "integer constant is too large for its type"
27306
@@ -517,10 +500,8 @@
27307
msgstr "\"defined\" bu kullanımıyla uyarlanabilir olmayabilir"
27311
-#| msgid "integer overflow in preprocessor expression"
27312
msgid "user-defined literal in preprocessor expression"
27313
-msgstr "önişlemci ifadesinde tamsayı taşması"
27314
+msgstr "önişleyici ifadesinde kullanıcı tanımlı bağımlı"
27317
msgid "floating constant in preprocessor expression"
27318
@@ -536,20 +517,17 @@
27319
msgstr "\"%s\" tanımlı değil"
27323
-#| msgid "#%s is a GCC extension"
27324
msgid "assertions are a GCC extension"
27325
-msgstr "#%s bir GCC uzantısıdır"
27326
+msgstr "belirteçler bir GCC uzantısıdır"
27329
msgid "assertions are a deprecated extension"
27331
+msgstr "belirteçler artık kullanılmayan bir ifadedir"
27334
-#, fuzzy, c-format
27335
-#| msgid "unbalanced stack in #if"
27337
msgid "unbalanced stack in %s"
27338
-msgstr "#if ifadesinde karşılıksız yığın"
27339
+msgstr "%s içinde dengelenmemiş yığın"
27343
@@ -594,39 +572,39 @@
27344
msgid "division by zero in #if"
27345
msgstr "#if içinde sıfırla bölme"
27349
msgid "NULL directory in find_file"
27350
msgstr "find_file içinde boş dizin"
27354
msgid "one or more PCH files were found, but they were invalid"
27355
msgstr "bir veya daha fazla PCH dosyası bulundu ama bunlar geçersiz"
27359
msgid "use -Winvalid-pch for more information"
27360
msgstr "daha fazla bilgi almak için -Winvalid-pch kullanın"
27365
msgid "%s is a block device"
27366
msgstr "%s bir blok aygıtıdır"
27371
msgid "%s is too large"
27372
msgstr "%s çok büyük"
27377
msgid "%s is shorter than expected"
27378
msgstr "%s beklenenden daha kısa"
27383
msgid "no include path in which to search for %s"
27384
msgstr "%s için aranacaklar içinde başlık dosyaları yolu yok"
27388
msgid "Multiple include guards may be useful for:\n"
27389
msgstr "Çoklu include önlemleri aşağıdakiler için kullanışlı olabilir:\n"
27391
@@ -717,27 +695,24 @@
27392
#: lex.c:1178 lex.c:1255
27394
msgid "identifier \"%s\" is a special operator name in C++"
27396
+msgstr "\"%s\" belirteci, C++'da özel bir işleç adıdır"
27399
msgid "raw string delimiter longer than 16 characters"
27401
+msgstr "ham dizge ayracı 16 karakterden uzun"
27404
-#, fuzzy, c-format
27405
-#| msgid "universal character %.*s is not valid in an identifier"
27407
msgid "invalid character '%c' in raw string delimiter"
27408
-msgstr "evrensel karakter %.*s bir belirteç içinde geçerli değil"
27409
+msgstr "ham dizge ayracında geçersiz karakter '%c'"
27411
#: lex.c:1525 lex.c:1547
27413
-#| msgid "unterminated #%s"
27414
msgid "unterminated raw string"
27415
-msgstr "sonlandırılmamış #%s"
27416
+msgstr "bitirilmemiş ham dizge"
27418
#: lex.c:1573 lex.c:1706
27419
msgid "invalid suffix on literal; C++11 requires a space between literal and identifier"
27421
+msgstr "geçersiz ifade soneki; C++11 ifade ve tanımlayıcı arasında bir boşluk gerektirir"
27424
msgid "null character(s) preserved in literal"
27425
@@ -785,7 +760,7 @@
27428
msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
27430
+msgstr "__COUNTER__ -fdirectives-only ile talimat içerisinde genişletildi"
27433
msgid "invalid string literal, ignoring final '\\'"
27434
@@ -823,7 +798,7 @@
27437
msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90 and ISO C++98"
27439
+msgstr "%s makrosu %d argümanı uygulanıyor: ISO C90 ve ISO C++98 içerisinde boş makro argümanları tanımsızdır"
27443
@@ -890,38 +865,36 @@
27444
msgid "invalid hash type %d in cpp_macro_definition"
27445
msgstr "cpp_macro_definition içindeki isimli yapı türü %d geçersiz"
27447
-#: pch.c:87 pch.c:335 pch.c:347 pch.c:365 pch.c:371 pch.c:380 pch.c:387
27448
+#: pch.c:87 pch.c:345 pch.c:359 pch.c:377 pch.c:383 pch.c:392 pch.c:399
27449
msgid "while writing precompiled header"
27450
msgstr "önderlemeli başlık yazılırken"
27453
-#, fuzzy, c-format
27454
-#| msgid "%s: not used because `%s' is defined"
27457
msgid "%s: not used because `%.*s' is poisoned"
27458
-msgstr "%s: `%s' tanımlı olduğundan kullanılmadı"
27459
+msgstr "%s: `%.*s' zehirli olduğu için kullanılmadı"
27464
msgid "%s: not used because `%.*s' not defined"
27465
msgstr "%s: `%.*s' tanımlı olmadığından kullanılmadı"
27470
msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'"
27471
msgstr "%s: `%.*s' kullanılmadı çünkü `%s' olarak tanımlı, `%.*s' değil"
27476
msgid "%s: not used because `%s' is defined"
27477
msgstr "%s: `%s' tanımlı olduğundan kullanılmadı"
27480
-#, fuzzy, c-format
27481
-#| msgid "%s: not used because `%s' is defined"
27484
msgid "%s: not used because `__COUNTER__' is invalid"
27485
-msgstr "%s: `%s' tanımlı olduğundan kullanılmadı"
27486
+msgstr "%s: `__COUNTER__' geçersiz olduğundan kullanılmadı"
27488
-#: pch.c:711 pch.c:886
27489
+#: pch.c:723 pch.c:898
27490
msgid "while reading precompiled header"
27491
msgstr "önderlemeli başlık okunurken"
27494
===================================================================
27495
--- a/src/. (.../tags/gcc_4_8_2_release)
27496
+++ b/src/. (.../branches/gcc-4_8-branch)
27498
Property changes on: .
27499
___________________________________________________________________
27500
Modified: svn:mergeinfo
27501
Merged /trunk:r202766,204547,206123-206126,206395,206628