~ubuntu-branches/debian/sid/gcc-4.8/sid

« back to all changes in this revision

Viewing changes to .svn/pristine/29/29ffb48c728738e66ff449b123f45c39c055d72e.svn-base

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-12-19 19:48:34 UTC
  • Revision ID: package-import@ubuntu.com-20141219194834-4dz1q7rrn5pad823
Tags: 4.8.4-1
* GCC 4.8.4 release.
  - Fix PR target/61407 (darwin), PR middle-end/58624 (ice),
    PR sanitizer/64265 (wrong code).
* Require recent binutils to pass go test failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# DP: updates from the 4.8 branch upto 20140117 (r206708).
 
2
 
 
3
last_updated()
 
4
{
 
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)
 
8
EOF
 
9
}
 
10
 
 
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'
 
14
 
 
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)
 
19
@@ -1,3 +1,9 @@
 
20
+2013-12-12  Jakub Jelinek  <jakub@redhat.com>
 
21
+
 
22
+       PR libgomp/59467
 
23
+       * testsuite/libgomp.fortran/crayptr2.f90: Add private (d) clause to
 
24
+       !$omp parallel.
 
25
+
 
26
 2013-10-16  Release Manager
 
27
 
 
28
        * GCC 4.8.2 released.
 
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)
 
33
@@ -12,7 +12,7 @@
 
34
   b = 2
 
35
   c = 3
 
36
   l = .false.
 
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
 
40
     ip = loc (a)
 
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 @@
 
47
 fi
 
48
 
 
49
 # For libtool versioning info, format is CURRENT:REVISION:AGE
 
50
-libtool_VERSION=6:18:0
 
51
+libtool_VERSION=6:19:0
 
52
 
 
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)
 
59
@@ -203,6 +203,7 @@
 
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>
 
64
     </itemizedlist>
 
65
     </listitem>
 
66
 
 
67
@@ -261,6 +262,7 @@
 
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>
 
72
     </itemizedlist>
 
73
     <para>
 
74
       Note 1: Error should be libstdc++.so.3.0.3.
 
75
@@ -324,6 +326,7 @@
 
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>
 
80
     </itemizedlist>
 
81
     </listitem>
 
82
 
 
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)
 
87
@@ -877,10 +877,11 @@
 
88
       <entry/>
 
89
     </row>
 
90
     <row>
 
91
+      <?dbhtml bgcolor="#B0B0B0" ?>
 
92
       <entry>20.9.7.6</entry>
 
93
       <entry>Other transformations</entry>
 
94
-      <entry>Y</entry>
 
95
-      <entry/>
 
96
+      <entry>Partial</entry>
 
97
+      <entry>Missing <code>aligned_union</code>.</entry>
 
98
     </row>
 
99
     <row>
 
100
       <entry>20.10</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)
 
105
@@ -20,6 +20,7 @@
 
106
     <year>2010</year>
 
107
     <year>2011</year>
 
108
     <year>2012</year>
 
109
+    <year>2013</year>
 
110
     <holder>
 
111
       <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
 
112
     </holder>
 
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)
 
117
@@ -1,2 +1,2 @@
 
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)
 
127
@@ -1,2 +1,2 @@
 
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)
 
137
@@ -1,9 +1,9 @@
 
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 © 
 
141
       2008, 2010
 
142
      
 
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">
 
146
       What is libstdc++?
 
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)
 
153
@@ -1,5 +1,5 @@
 
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
 
159
       </a>
 
160
@@ -20,7 +20,7 @@
 
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. 
 
166
   Introduction
 
167
   
 
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. 
 
169
@@ -34,13 +34,13 @@
 
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. 
 
171
   Utilities
 
172
   
 
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. 
 
175
   Strings
 
176
   
 
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. 
 
178
   Localization
 
179
   
 
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. 
 
182
   Containers
 
183
   
 
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)
 
189
@@ -1,12 +1,12 @@
 
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 © 
 
193
       2008
 
194
     , 
 
195
       2010
 
196
      
 
197
       <a class="link" href="http://www.fsf.org/" target="_top">FSF
 
198
       </a>
 
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
 
202
       </a>
 
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)
 
208
@@ -1,5 +1,5 @@
 
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. 
 
212
   Support
 
213
   
 
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)
 
219
@@ -1,13 +1,13 @@
 
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. 
 
223
   Iterators
 
224
   
 
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. 
 
226
     Standard Contents
 
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. 
 
228
   Iterators
 
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>
 
233
      The following
 
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)
 
240
@@ -1,5 +1,5 @@
 
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)
 
251
@@ -1,5 +1,5 @@
 
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. 
 
255
   Numerics
 
256
   
 
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)
 
262
@@ -1,8 +1,8 @@
 
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. 
 
266
   Extensions
 
267
   
 
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)
 
277
@@ -1,5 +1,5 @@
 
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. 
 
281
   Containers
 
282
   
 
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)
 
288
@@ -1,5 +1,5 @@
 
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)
 
299
@@ -1,13 +1,13 @@
 
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. 
 
303
   Introduction
 
304
   
 
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.
 
308
 </p><p>
 
309
 This page describes the C++ support in mainline GCC SVN, not in any
 
310
 particular release.
 
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>
 
316
@@ -157,7 +157,7 @@
 
317
 </p><p>
 
318
 This page describes the C++11 support in mainline GCC SVN, not in any
 
319
 particular release.
 
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>
 
325
@@ -183,7 +183,7 @@
 
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">&lt;ratio&gt;</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">&lt;scoped_allocator&gt;</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">&lt;ratio&gt;</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">&lt;scoped_allocator&gt;</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>
 
334
@@ -302,7 +302,7 @@
 
335
 </p><p>
 
336
 This page describes the TR1 support in mainline GCC SVN, not in any particular
 
337
 release.
 
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">&lt;functional&gt;</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">&lt;memory&gt;</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">&lt;functional&gt;</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">&lt;memory&gt;</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">
 
340
        <p>
 
341
          Uses code from
 
342
          <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
 
343
@@ -323,7 +323,7 @@
 
344
 </p><p>
 
345
 This page describes the TR 24733 support in mainline GCC SVN, not in any
 
346
 particular release.
 
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)
 
356
@@ -1,5 +1,5 @@
 
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)
 
367
@@ -1,5 +1,5 @@
 
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
 
374
@@ -391,7 +391,7 @@
 
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)
 
387
@@ -1,5 +1,5 @@
 
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
 
394
@@ -170,7 +170,7 @@
 
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
 
403
@@ -252,7 +252,7 @@
 
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
 
412
@@ -305,7 +305,7 @@
 
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
 
421
@@ -344,7 +344,7 @@
 
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
 
430
@@ -428,7 +428,7 @@
 
431
        </p><p>
 
432
          This library contains a container tag hierarchy corresponding to the
 
433
          diagram below.
 
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>.
 
439
@@ -487,7 +487,7 @@
 
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 -
 
448
@@ -504,7 +504,7 @@
 
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
 
457
@@ -524,7 +524,7 @@
 
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">
 
463
                g(r, m) = r mod m
 
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
 
466
@@ -535,9 +535,9 @@
 
467
            implement using the low
 
468
            level % (modulo) operation (for any m), or the
 
469
            low level &amp; (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">
 
472
                g(r, m) = r % m
 
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 &amp; 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
 
478
@@ -563,7 +563,7 @@
 
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 =
 
487
@@ -575,7 +575,7 @@
 
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>
 
508
                Probing tables
 
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>,
 
511
@@ -634,7 +634,7 @@
 
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">
 
532
                p<sub>1</sub> = 
 
533
@@ -684,7 +684,7 @@
 
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>)
 
536
            . Let
 
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 ) = 
 
542
@@ -723,7 +723,7 @@
 
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>
 
551
@@ -732,8 +732,8 @@
 
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>
 
562
@@ -876,7 +876,7 @@
 
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,
 
571
@@ -890,7 +890,7 @@
 
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>
 
580
@@ -919,7 +919,7 @@
 
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>.
 
589
@@ -938,7 +938,7 @@
 
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
 
598
@@ -946,7 +946,7 @@
 
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?
 
607
@@ -988,7 +988,7 @@
 
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
 
646
          D.
 
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&lt;Cntnr&gt;</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)
 
674
@@ -1,8 +1,8 @@
 
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. 
 
678
   Introduction
 
679
   
 
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
 
683
       by
 
684
       several <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Invoking-GCC.html" target="_top">GCC
 
685
@@ -10,5 +10,5 @@
 
686
       enumerated and detailed in the table below.
 
687
     </p><p>
 
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 &lt;thread&gt;, &lt;future&gt;,
 
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 &lt;thread&gt;, &lt;future&gt;,
 
691
       &lt;mutex&gt;, or &lt;condition_variable&gt;.</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)
 
697
@@ -1,5 +1,5 @@
 
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)
 
708
@@ -1,8 +1,8 @@
 
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. 
 
712
   Extensions
 
713
   
 
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
 
718
     with bits:
 
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)
 
723
@@ -1,5 +1,5 @@
 
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 &lt;ext/concurrence.h&gt;
 
729
 
 
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)
 
734
@@ -1,8 +1,8 @@
 
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. 
 
738
   Extensions
 
739
   
 
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)
 
749
@@ -1,5 +1,5 @@
 
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. 
 
753
   Support
 
754
   
 
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)
 
760
@@ -1,5 +1,5 @@
 
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>.
 
765
    </p><p>
 
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)
 
771
@@ -1,13 +1,13 @@
 
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. 
 
775
   Concurrency
 
776
   
 
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. 
 
778
     Standard Contents
 
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. 
 
780
   Concurrency
 
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)
 
792
@@ -1,5 +1,5 @@
 
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. 
 
796
   Extensions
 
797
   
 
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)
 
803
@@ -1,8 +1,8 @@
 
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. 
 
807
   Extensions
 
808
   
 
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
 
814
@@ -248,7 +248,7 @@
 
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
 
823
@@ -256,7 +256,7 @@
 
824
          </p><p>
 
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
 
832
@@ -375,7 +375,7 @@
 
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
 
835
              label B.
 
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
 
841
@@ -426,7 +426,7 @@
 
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
 
844
              complicated.
 
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.
 
850
@@ -442,7 +442,7 @@
 
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.
 
859
@@ -678,7 +678,7 @@
 
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
 
875
        </a>
 
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
 
883
        </a>
 
884
       </em>. </span><span class="date">
 
885
        January 1996
 
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)
 
890
@@ -1,5 +1,5 @@
 
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. 
 
894
   Extensions
 
895
   
 
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)
 
901
@@ -1,5 +1,5 @@
 
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
 
908
@@ -75,7 +75,7 @@
 
909
   </p><p>
 
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 -&gt; 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 -&gt; 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)
 
921
@@ -1,13 +1,13 @@
 
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. 
 
925
   Contributing
 
926
   
 
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. 
 
928
   Appendices
 
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>
 
930
   Contributing
 
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
 
938
@@ -36,7 +36,7 @@
 
939
           for this group is quite useful.
 
940
       </p></li><li class="listitem"><p>
 
941
          Peruse
 
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)
 
951
@@ -1,5 +1,5 @@
 
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.
 
957
   </p><p>
 
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)
 
962
@@ -1,8 +1,8 @@
 
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. 
 
966
   Extensions
 
967
   
 
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.
 
972
   </p><p>
 
973
@@ -137,7 +137,7 @@
 
974
    call context.
 
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)
 
986
@@ -1,5 +1,5 @@
 
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. 
 
990
   Input and Output
 
991
   
 
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)
 
997
@@ -1,5 +1,5 @@
 
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. 
 
1001
   Utilities
 
1002
   
 
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)
 
1008
@@ -1,10 +1,9 @@
 
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).
 
1014
     </p><p>
 
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)
 
1025
@@ -1,5 +1,5 @@
 
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. 
 
1029
   Containers
 
1030
   
 
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)
 
1036
@@ -1,8 +1,8 @@
 
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. 
 
1040
   Extensions
 
1041
   
 
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">&lt;ext/concurrence.h&gt;</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">&lt;ext/concurrence.h&gt;</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)
 
1051
@@ -1,13 +1,13 @@
 
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. 
 
1055
   Support
 
1056
   
 
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. 
 
1058
     Standard Contents
 
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. 
 
1060
   Support
 
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.
 
1067
   </p><p>
 
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)
 
1072
@@ -1,8 +1,8 @@
 
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. 
 
1076
   Extensions
 
1077
   
 
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)
 
1087
@@ -1,5 +1,5 @@
 
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.
 
1093
     </p><p>
 
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)
 
1098
@@ -1,13 +1,13 @@
 
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. 
 
1102
   Numerics
 
1103
   
 
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. 
 
1105
     Standard Contents
 
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. 
 
1107
   Numerics
 
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&lt;&gt;</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)
 
1119
@@ -1,5 +1,5 @@
 
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.
 
1126
@@ -265,7 +265,7 @@
 
1127
   }
 
1128
   catch(...)
 
1129
   { this-&gt;_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)
 
1134
        </a>
 
1135
@@ -274,39 +274,39 @@
 
1136
     . </span><span class="copyright">Copyright © 2008 
 
1137
        The Open Group/The Institute of Electrical and Electronics
 
1138
        Engineers, Inc.
 
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
 
1143
        </a>
 
1144
       </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
 
1145
        Boost
 
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
 
1150
        </a>
 
1151
       </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
 
1152
        Boost
 
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
 
1157
        </a>
 
1158
       </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
 
1159
        WG21 N1077
 
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
 
1164
        </a>
 
1165
       </em>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername">
 
1166
        GNU
 
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
 
1171
        </a>
 
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">
 
1174
       Exceptional C++
 
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
 
1181
        </a>
 
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)
 
1186
@@ -1,5 +1,5 @@
 
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)
 
1197
@@ -1,5 +1,5 @@
 
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)
 
1208
@@ -1,5 +1,5 @@
 
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
 
1213
   
 
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">
 
1217
          C++ ABI Summary
 
1218
        </a>
 
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
 
1223
        </a>
 
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)
 
1228
        </a>
 
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)
 
1233
        </a>
 
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
 
1238
        </a>
 
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
 
1243
        </a>
 
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
 
1248
        </a>
 
1249
       </em>. </span><span class="subtitle">
 
1250
       ISO C++ J16/06-0046
 
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
 
1255
        </a>
 
1256
       </em>. </span><span class="subtitle">
 
1257
       ISO C++ J16/06-0083
 
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)
 
1267
@@ -1,8 +1,8 @@
 
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. 
 
1271
   Introduction
 
1272
   
 
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. 
 
1274
   Introduction
 
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)
 
1285
@@ -1,5 +1,5 @@
 
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)
 
1296
@@ -1,13 +1,13 @@
 
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. 
 
1300
   Atomics
 
1301
   
 
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. 
 
1303
     Standard Contents
 
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. 
 
1305
   Atomics
 
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)
 
1317
@@ -1,5 +1,5 @@
 
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
 
1322
   
 
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)
 
1328
@@ -1,5 +1,5 @@
 
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
 
1335
@@ -61,7 +61,7 @@
 
1336
        In addition, there are the following diagnostics classes,
 
1337
        used to report errors specific to this library's data
 
1338
        structures.
 
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)
 
1348
@@ -1,5 +1,5 @@
 
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)
 
1359
@@ -1,5 +1,5 @@
 
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
 
1366
@@ -62,4 +62,4 @@
 
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)
 
1378
@@ -1,5 +1,5 @@
 
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. 
 
1382
   Extensions
 
1383
   
 
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)
 
1389
@@ -1,5 +1,5 @@
 
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)
 
1400
@@ -1,9 +1,9 @@
 
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. 
 
1404
     Standard Contents
 
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. 
 
1406
     Standard Contents
 
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. 
 
1409
   Support
 
1410
   
 
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. 
 
1412
@@ -12,13 +12,13 @@
 
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. 
 
1414
   Utilities
 
1415
   
 
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. 
 
1418
   Strings
 
1419
   
 
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. 
 
1421
   Localization
 
1422
   
 
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. 
 
1425
   Containers
 
1426
   
 
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)
 
1432
@@ -1,9 +1,9 @@
 
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. 
 
1436
   Appendices
 
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. 
 
1438
   Appendices
 
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. 
 
1441
   Contributing
 
1442
   
 
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)
 
1448
@@ -1,5 +1,5 @@
 
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. 
 
1452
   Utilities
 
1453
   
 
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>
 
1455
@@ -92,7 +92,7 @@
 
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
 
1464
@@ -105,7 +105,7 @@
 
1465
    </p><p>
 
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
 
1473
@@ -142,7 +142,7 @@
 
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++
 
1489
     </em>. </span>
 
1490
       isoc++_1998
 
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?
 
1496
        </a>
 
1497
       </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
 
1498
        C/C++ Users Journal
 
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
 
1503
        </a>
 
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
 
1508
        </a>
 
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">
 
1512
       Allocator Types
 
1513
        </a>
 
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">
 
1515
        C/C++ Users Journal
 
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">
 
1518
        Addison Wesley
 
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>
 
1524
@@ -445,7 +445,7 @@
 
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&lt;T&gt;</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
 
1533
@@ -492,9 +492,9 @@
 
1534
 aliasing constructor, make_shared &amp; 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>
 
1539
 The
 
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
 
1545
@@ -537,7 +537,7 @@
 
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>
 
1551
     </p><p>
 
1552
 There is a single <code class="classname">_Sp_counted_base</code> class,
 
1553
 which is a template parameterized on the enum
 
1554
@@ -578,7 +578,7 @@
 
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
 
1566
 be private.
 
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>
 
1572
       and
 
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.
 
1578
     </p><p>
 
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
 
1587
        </a>
 
1588
       </em>. </span><span class="subtitle">
 
1589
       N2351
 
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
 
1594
        </a>
 
1595
       </em>. </span><span class="subtitle">
 
1596
       N2456
 
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++
 
1601
        </a>
 
1602
       </em>. </span><span class="subtitle">
 
1603
       N2461
 
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
 
1608
        </a>
 
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)
 
1613
@@ -1,5 +1,5 @@
 
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
 
1618
   
 
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>
 
1620
@@ -77,11 +77,11 @@
 
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&lt;T&gt;</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&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template&lt;int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator&lt;T&gt;</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc&lt;T&gt;</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template&lt;bool,int&gt;</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</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&lt;T&gt;</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.
 
1632
 </p><p>
 
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)
 
1638
@@ -1,5 +1,5 @@
 
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. 
 
1642
   Contributing
 
1643
   
 
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)
 
1649
@@ -1,5 +1,5 @@
 
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. 
 
1653
   Input and Output
 
1654
   
 
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)
 
1660
@@ -1,5 +1,5 @@
 
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. 
 
1664
   Extensions
 
1665
   
 
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)
 
1671
@@ -1,8 +1,8 @@
 
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. 
 
1675
   Extensions
 
1676
   
 
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)
 
1686
@@ -1,5 +1,5 @@
 
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. 
 
1690
   Diagnostics
 
1691
   
 
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)
 
1697
@@ -1,5 +1,5 @@
 
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.
 
1703
 </p><p>
 
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)
 
1708
@@ -1,5 +1,5 @@
 
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. 
 
1712
   Extensions
 
1713
   
 
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)
 
1719
@@ -1,13 +1,13 @@
 
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. 
 
1723
   Strings
 
1724
   
 
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. 
 
1726
     Standard Contents
 
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. 
 
1728
   Strings
 
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)
 
1740
@@ -1,5 +1,5 @@
 
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. 
 
1744
   Containers
 
1745
   
 
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)
 
1751
@@ -1,5 +1,5 @@
 
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_&lt;diagnostic&gt;</code>.
 
1758
@@ -17,7 +17,7 @@
 
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">
 
1767
@@ -374,7 +374,7 @@
 
1768
   Quick Sort for a particular call context.
 
1769
   </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span>
 
1770
   See papers:
 
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>.
 
1776
@@ -500,7 +500,7 @@
 
1777
   Keep a shadow for each container.  Record iterator dereferences and
 
1778
   container member accesses.  Issue advice for elements referenced by
 
1779
   multiple threads.
 
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)
 
1789
@@ -1,5 +1,5 @@
 
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)
 
1800
@@ -1,5 +1,5 @@
 
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. 
 
1804
   Input and Output
 
1805
   
 
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)
 
1811
@@ -1,5 +1,5 @@
 
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
 
1816
   
 
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>
 
1818
@@ -112,7 +112,7 @@
 
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
 
1827
@@ -232,9 +232,8 @@
 
1828
        member functions.
 
1829
       </p><p>
 
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>
 
1839
@@ -310,7 +309,7 @@
 
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">&lt;i&gt;</td><td align="left">@a word</td></tr><tr><td align="left">&lt;b&gt;</td><td align="left">@b word</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">@c word</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">@a word</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;em&gt;two words or more&lt;/em&gt;</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">&lt;i&gt;</td><td align="left">@a word</td></tr><tr><td align="left">&lt;b&gt;</td><td align="left">@b word</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">@c word</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">@a word</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;em&gt;two words or more&lt;/em&gt;</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">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
 
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">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
 
1854
        &lt;literallayout&gt;</td></tr><tr><td align="left">&lt;ul&gt;</td><td align="left">&lt;itemizedlist&gt;</td></tr><tr><td align="left">&lt;ol&gt;</td><td align="left">&lt;orderedlist&gt;</td></tr><tr><td align="left">&lt;il&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;dl&gt;</td><td align="left">&lt;variablelist&gt;</td></tr><tr><td align="left">&lt;dt&gt;</td><td align="left">&lt;term&gt;</td></tr><tr><td align="left">&lt;dd&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;a href=""&gt;</td><td align="left">&lt;ulink url=""&gt;</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">&lt;literal&gt;, &lt;programlisting&gt;</td></tr><tr><td align="left">&lt;strong&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">"</td><td align="left">&lt;quote&gt;</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">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</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">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
 
1859
        <p>&lt;function&gt;clear()&lt;/function&gt;</p>
 
1860
        <p>&lt;function&gt;fs.clear()&lt;/function&gt;</p>
 
1861
       </td></tr><tr><td align="left">&lt;type&gt;</td><td align="left">&lt;type&gt;long long&lt;/type&gt;</td></tr><tr><td align="left">&lt;varname&gt;</td><td align="left">&lt;varname&gt;fs&lt;/varname&gt;</td></tr><tr><td align="left">&lt;literal&gt;</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)
 
1866
@@ -1,11 +1,11 @@
 
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. 
 
1870
   Extensions
 
1871
   
 
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. 
 
1873
   Extensions
 
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)
 
1885
@@ -1,5 +1,5 @@
 
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
 
1892
@@ -18,6 +18,6 @@
 
1893
   mode or with debug mode. The
 
1894
   following table provides the names and headers of the debugging
 
1895
   containers:
 
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">&lt;debug/bitset&gt;</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">&lt;debug/deque&gt;</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">&lt;debug/list&gt;</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">&lt;debug/map&gt;</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">&lt;debug/map&gt;</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">&lt;debug/set&gt;</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">&lt;debug/set&gt;</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">&lt;debug/string&gt;</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">&lt;debug/string&gt;</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">&lt;debug/string&gt;</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">&lt;debug/vector&gt;</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">&lt;debug/bitset&gt;</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">&lt;debug/deque&gt;</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">&lt;debug/list&gt;</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">&lt;debug/map&gt;</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">&lt;debug/map&gt;</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">&lt;debug/set&gt;</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">&lt;debug/set&gt;</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">&lt;debug/string&gt;</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">&lt;debug/string&gt;</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">&lt;debug/string&gt;</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">&lt;debug/vector&gt;</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">&lt;debug/unordered_map&gt;</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">&lt;debug/unordered_map&gt;</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">&lt;debug/unordered_set&gt;</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">&lt;debug/unordered_set&gt;</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">&lt;debug/unordered_map&gt;</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">&lt;debug/unordered_map&gt;</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">&lt;debug/unordered_set&gt;</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">&lt;debug/unordered_set&gt;</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)
 
1907
@@ -1,8 +1,8 @@
 
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. 
 
1911
   Extensions
 
1912
   
 
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.
 
1916
 </p><p>
 
1917
 Several of the standard algorithms, for instance
 
1918
@@ -12,11 +12,11 @@
 
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)
 
1936
@@ -1,5 +1,5 @@
 
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)
 
1947
@@ -1,8 +1,8 @@
 
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. 
 
1951
   Introduction
 
1952
   
 
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)
 
1962
@@ -1,5 +1,5 @@
 
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
 
1967
   
 
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
 
1977
        </a>
 
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
 
1982
        </a>
 
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
 
1987
        </a>
 
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)
 
1992
@@ -1,5 +1,5 @@
 
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. 
 
1996
   Contributing
 
1997
   
 
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)
 
2003
@@ -1,5 +1,5 @@
 
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)
 
2014
@@ -1,8 +1,8 @@
 
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. 
 
2018
   Localization
 
2019
   
 
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&lt;wchar_t, char, mbstate_t&gt; ,
 
2023
 conversions are made between the internal character set (always UCS4
 
2024
 on GNU/Linux) and whatever the currently selected locale for the
 
2025
@@ -49,24 +49,24 @@
 
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">
 
2031
       The GNU C Library
 
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">
 
2034
       Correspondence
 
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)
 
2045
        </a>
 
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">
 
2051
        Addison Wesley
 
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">
 
2063
       The GNU C Library
 
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">
 
2068
       Correspondence
 
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)
 
2079
        </a>
 
2080
       </em>. </span><span class="copyright">Copyright © 2008 
 
2081
        The Open Group/The Institute of Electrical and Electronics
 
2082
        Engineers, Inc.
 
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">
 
2087
        Addison Wesley
 
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
 
2099
        </a>
 
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">
 
2103
          The Unicode HOWTO
 
2104
        </a>
 
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
 
2109
        </a>
 
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
 
2113
    package.
 
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">
 
2116
       The GNU C Library
 
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">
 
2120
       Correspondence
 
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)
 
2131
        </a>
 
2132
       </em>. </span><span class="copyright">Copyright © 2008 
 
2133
        The Open Group/The Institute of Electrical and Electronics
 
2134
        Engineers, Inc.
 
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">
 
2139
        Addison Wesley
 
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
 
2152
        </a>
 
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
 
2159
       Library and Tools.
 
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)
 
2164
@@ -1,13 +1,13 @@
 
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. 
 
2168
   Diagnostics
 
2169
   
 
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. 
 
2171
     Standard Contents
 
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. 
 
2173
   Diagnostics
 
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)
 
2185
@@ -1,5 +1,5 @@
 
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)
 
2196
@@ -1,12 +1,12 @@
 
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
 
2201
   
 
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. 
 
2203
   Appendices
 
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)
 
2215
@@ -1,13 +1,13 @@
 
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. 
 
2219
   Algorithms
 
2220
   
 
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. 
 
2222
     Standard Contents
 
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. 
 
2224
   Algorithms
 
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
 
2231
   important things:
 
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)
 
2236
@@ -1,13 +1,13 @@
 
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
 
2241
   
 
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. 
 
2243
   Appendices
 
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
 
2251
   
 
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">
 
2253
@@ -61,7 +61,7 @@
 
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
 
2261
     directory.
 
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)
 
2266
@@ -1,5 +1,5 @@
 
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)
 
2277
@@ -1,5 +1,5 @@
 
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)
 
2288
@@ -1,5 +1,5 @@
 
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. 
 
2292
   Utilities
 
2293
   
 
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&lt;T1,T2&gt;</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)
 
2299
@@ -1,5 +1,5 @@
 
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
 
2304
   
 
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>
 
2306
@@ -492,7 +492,7 @@
 
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)
 
2319
@@ -1,5 +1,5 @@
 
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)
 
2330
@@ -1,5 +1,5 @@
 
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
 
2337
@@ -18,19 +18,19 @@
 
2338
      the 1998 standard as updated for 2003, and the current 2011 standard.
 
2339
    </p><p>
 
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)
 
2367
@@ -1,5 +1,5 @@
 
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)
 
2378
@@ -1,5 +1,5 @@
 
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
 
2384
   are some of them.
 
2385
@@ -161,7 +161,7 @@
 
2386
   DRD</a>,
 
2387
   <a class="link" href="http://valgrind.org/docs/manual/hg-manual.html" target="_top"> 
 
2388
   Helgrind</a>, and
 
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>.
 
2392
 </p><p>
 
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)
 
2398
@@ -1,13 +1,13 @@
 
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. 
 
2402
   Localization
 
2403
   
 
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. 
 
2405
     Standard Contents
 
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. 
 
2407
   Localization
 
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,
 
2414
 class _Impl.
 
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">
 
2421
       The GNU C Library
 
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">
 
2427
       Correspondence
 
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)
 
2438
        </a>
 
2439
       </em>. </span><span class="copyright">Copyright © 2008 
 
2440
        The Open Group/The Institute of Electrical and Electronics
 
2441
        Engineers, Inc.
 
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">
 
2446
        Addison Wesley
 
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)
 
2456
@@ -1,5 +1,5 @@
 
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. 
 
2460
   Extensions
 
2461
   
 
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)
 
2467
@@ -1,8 +1,8 @@
 
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. 
 
2471
   Extensions
 
2472
   
 
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)
 
2482
@@ -1,6 +1,6 @@
 
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)
 
2495
@@ -1,5 +1,5 @@
 
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)
 
2506
@@ -1,5 +1,5 @@
 
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)
 
2517
@@ -1,5 +1,5 @@
 
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. 
 
2521
   Appendices
 
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)
 
2528
@@ -1,13 +1,13 @@
 
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. 
 
2532
   Containers
 
2533
   
 
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. 
 
2535
     Standard Contents
 
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. 
 
2537
   Containers
 
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)
 
2549
@@ -1,13 +1,13 @@
 
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. 
 
2553
   Input and Output
 
2554
   
 
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. 
 
2556
     Standard Contents
 
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. 
 
2558
   Input and Output
 
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
       &lt;iostream&gt; 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)
 
2570
@@ -1,7 +1,7 @@
 
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. 
 
2577
   Introduction
 
2578
   
 
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. 
 
2580
@@ -15,13 +15,13 @@
 
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. 
 
2582
   Utilities
 
2583
   
 
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. 
 
2586
   Strings
 
2587
   
 
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. 
 
2589
   Localization
 
2590
   
 
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. 
 
2593
   Containers
 
2594
   
 
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 @@
 
2597
   
 
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. 
 
2623
   Introduction
 
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)
 
2628
@@ -1,5 +1,5 @@
 
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. 
 
2632
   Numerics
 
2633
   
 
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)
 
2639
@@ -1,5 +1,5 @@
 
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. 
 
2645
   Appendices
 
2646
@@ -77,7 +77,7 @@
 
2647
   </p><p>
 
2648
     The precise terms and conditions for copying, distribution and modification
 
2649
     follow.
 
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>
 
2654
     0. Definitions.
 
2655
@@ -618,7 +618,7 @@
 
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
 
2658
     return for a fee.
 
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)
 
2668
@@ -1,5 +1,5 @@
 
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. 
 
2672
   Contributing
 
2673
   
 
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)
 
2679
@@ -1,5 +1,5 @@
 
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. 
 
2683
   Input and Output
 
2684
   
 
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)
 
2690
@@ -1,13 +1,13 @@
 
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. 
 
2694
   Utilities
 
2695
   
 
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. 
 
2697
     Standard Contents
 
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. 
 
2699
   Utilities
 
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());
 
2713
    }
 
2714
 
 
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>
 
2719
     inline bool
 
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)
 
2725
     {
 
2726
       while (__first != __last && *__first < __value)
 
2727
        ++__first;
 
2728
@@ -362,38 +364,11 @@
 
2729
       return __first == __last;
 
2730
     }
 
2731
 
 
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>
 
2735
-    inline bool
 
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)
 
2741
-    {
 
2742
-      return __check_partitioned_lower_aux(__first.base(), __last.base(),
 
2743
-                                          __value, __tag);
 
2744
-    }
 
2745
-
 
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>
 
2750
     inline bool
 
2751
-    __check_partitioned_lower(_ForwardIterator __first,
 
2752
+    __check_partitioned_upper(_ForwardIterator __first,
 
2753
                              _ForwardIterator __last, const _Tp& __value)
 
2754
     {
 
2755
-      return __check_partitioned_lower_aux(__first, __last, __value,
 
2756
-                                          std::__iterator_category(__first));
 
2757
-    }
 
2758
-
 
2759
-  template<typename _ForwardIterator, typename _Tp>
 
2760
-    inline bool
 
2761
-    __check_partitioned_upper_aux(_ForwardIterator __first,
 
2762
-                                 _ForwardIterator __last, const _Tp& __value,
 
2763
-                                 std::forward_iterator_tag)
 
2764
-    {
 
2765
       while (__first != __last && !(__value < *__first))
 
2766
        ++__first;
 
2767
       if (__first != __last)
 
2768
@@ -405,35 +380,12 @@
 
2769
       return __first == __last;
 
2770
     }
 
2771
 
 
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>
 
2775
-    inline bool
 
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)
 
2781
-    {
 
2782
-      return __check_partitioned_upper_aux(__first.base(), __last.base(),
 
2783
-                                          __value, __tag);
 
2784
-    }
 
2785
-
 
2786
-  template<typename _ForwardIterator, typename _Tp>
 
2787
-    inline bool
 
2788
-    __check_partitioned_upper(_ForwardIterator __first,
 
2789
-                             _ForwardIterator __last, const _Tp& __value)
 
2790
-    {
 
2791
-      return __check_partitioned_upper_aux(__first, __last, __value,
 
2792
-                                          std::__iterator_category(__first));
 
2793
-    }
 
2794
-
 
2795
+  // Determine if a sequence is partitioned w.r.t. this element.
 
2796
   template<typename _ForwardIterator, typename _Tp, typename _Pred>
 
2797
     inline bool
 
2798
-    __check_partitioned_lower_aux(_ForwardIterator __first,
 
2799
-                                 _ForwardIterator __last, const _Tp& __value,
 
2800
-                                 _Pred __pred,
 
2801
-                                 std::forward_iterator_tag)
 
2802
+    __check_partitioned_lower(_ForwardIterator __first,
 
2803
+                             _ForwardIterator __last, const _Tp& __value,
 
2804
+                             _Pred __pred)
 
2805
     {
 
2806
       while (__first != __last && bool(__pred(*__first, __value)))
 
2807
        ++__first;
 
2808
@@ -446,39 +398,12 @@
 
2809
       return __first == __last;
 
2810
     }
 
2811
 
 
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>
 
2816
-    inline bool
 
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)
 
2822
-    {
 
2823
-      return __check_partitioned_lower_aux(__first.base(), __last.base(),
 
2824
-                                          __value, __pred, __tag);
 
2825
-    }
 
2826
-
 
2827
-  // Determine if a sequence is partitioned w.r.t. this element.
 
2828
   template<typename _ForwardIterator, typename _Tp, typename _Pred>
 
2829
     inline bool
 
2830
-    __check_partitioned_lower(_ForwardIterator __first,
 
2831
+    __check_partitioned_upper(_ForwardIterator __first,
 
2832
                              _ForwardIterator __last, const _Tp& __value,
 
2833
                              _Pred __pred)
 
2834
     {
 
2835
-      return __check_partitioned_lower_aux(__first, __last, __value, __pred,
 
2836
-                                          std::__iterator_category(__first));
 
2837
-    }
 
2838
-
 
2839
-  template<typename _ForwardIterator, typename _Tp, typename _Pred>
 
2840
-    inline bool
 
2841
-    __check_partitioned_upper_aux(_ForwardIterator __first,
 
2842
-                                 _ForwardIterator __last, const _Tp& __value,
 
2843
-                                 _Pred __pred,
 
2844
-                                 std::forward_iterator_tag)
 
2845
-    {
 
2846
       while (__first != __last && !bool(__pred(__value, *__first)))
 
2847
        ++__first;
 
2848
       if (__first != __last)
 
2849
@@ -490,31 +415,6 @@
 
2850
       return __first == __last;
 
2851
     }
 
2852
 
 
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>
 
2857
-    inline bool
 
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)
 
2863
-    {
 
2864
-      return __check_partitioned_upper_aux(__first.base(), __last.base(),
 
2865
-                                          __value, __pred, __tag);
 
2866
-    }
 
2867
-
 
2868
-  template<typename _ForwardIterator, typename _Tp, typename _Pred>
 
2869
-    inline bool
 
2870
-    __check_partitioned_upper(_ForwardIterator __first,
 
2871
-                             _ForwardIterator __last, const _Tp& __value,
 
2872
-                             _Pred __pred)
 
2873
-    {
 
2874
-      return __check_partitioned_upper_aux(__first, __last, __value, __pred,
 
2875
-                                          std::__iterator_category(__first));
 
2876
-    }
 
2877
-
 
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)
 
2885
@@ -261,8 +261,9 @@
 
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, \
 
2890
-                                                           _Value),    \
 
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)                       \
 
2897
@@ -270,8 +271,9 @@
 
2898
 
 
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, \
 
2902
-                                                           _Value),    \
 
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)                       \
 
2909
@@ -281,8 +283,9 @@
 
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, \
 
2914
-                                                        _Value, _Pred), \
 
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)                       \
 
2921
@@ -293,8 +296,9 @@
 
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, \
 
2926
-                                                        _Value, _Pred), \
 
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)
 
2939
     {
 
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);
 
2944
     }
 
2945
 
 
2946
@@ -2291,7 +2291,7 @@
 
2947
                                _RandomAccessIterator __last, _Compare __comp)
 
2948
     {
 
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,
 
2952
                                  __comp);
 
2953
       return std::__unguarded_partition(__first + 1, __last, *__first, __comp);
 
2954
     }
 
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)
 
2959
@@ -391,7 +391,7 @@
 
2960
     public:
 
2961
       template<typename... _Args>
 
2962
        _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
 
2963
-       : _M_impl(__a), _M_storage()
 
2964
+       : _M_impl(__a)
 
2965
        {
 
2966
          _M_impl._M_ptr = static_cast<_Tp*>(static_cast<void*>(&_M_storage));
 
2967
          // _GLIBCXX_RESOLVE_LIB_DEFECTS
 
2968
@@ -819,7 +819,7 @@
 
2969
        : _M_ptr(__r.get()), _M_refcount()
 
2970
        {
 
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);
 
2976
        }
 
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)
 
2981
@@ -69,6 +69,7 @@
 
2982
 #undef ftell
 
2983
 #undef fwrite
 
2984
 #undef getc
 
2985
+#undef getchar
 
2986
 #undef gets
 
2987
 #undef perror
 
2988
 #undef printf
 
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)
 
2993
@@ -1,3 +1,66 @@
 
2994
+2013-12-15  H.J. Lu  <hongjiu.lu@intel.com>
 
2995
+
 
2996
+       * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Update.
 
2997
+
 
2998
+2013-11-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
2999
+
 
3000
+       * acinclude.m4 (libtool_VERSION): Bump.
 
3001
+       * configure: Regenerate.
 
3002
+       * doc/xml/manual/abi.xml: Update version information.
 
3003
+
 
3004
+2013-11-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
3005
+
 
3006
+       * doc/xml/manual/status_cxx2011.xml: Document aligned_union as
 
3007
+       missing.
 
3008
+
 
3009
+       * doc/xml/manual/spine.xml: Update copyright years.
 
3010
+       * doc/html/*: Regenerate.
 
3011
+
 
3012
+2013-11-01  Paolo Carlini  <paolo.carlini@oracle.com>
 
3013
+
 
3014
+       PR libstdc++/58952
 
3015
+       * include/c_global/cstdio: Undef getchar.
 
3016
+
 
3017
+2013-10-31  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
3018
+
 
3019
+       * testsuite/20_util/shared_ptr/cons/58839.cc: Do not use
 
3020
+       default_delete<void>.
 
3021
+
 
3022
+2013-10-30  Chris Studholme  <cvs@cs.utoronto.ca>
 
3023
+
 
3024
+       PR libstdc++/58912
 
3025
+       * include/bits/shared_ptr_base.h (_Sp_counted_ptr_inplace): Remove
 
3026
+       unnecessary initialization of storage buffer.
 
3027
+
 
3028
+2013-10-29  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
3029
+
 
3030
+       PR libstdc++/58839
 
3031
+       * include/bits/shared_ptr_base.h
 
3032
+       (__shared_ptr<T>::__shared_ptr(unique_ptr<U,D>&&)): Do not dereference
 
3033
+       pointer.
 
3034
+       * testsuite/20_util/shared_ptr/cons/58839.cc: New.
 
3035
+
 
3036
+2013-10-20  Chris Jefferson  <chris@bubblescope.net>
 
3037
+           Paolo Carlini  <paolo.carlini@oracle.com>
 
3038
+
 
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
 
3043
+
 
3044
+2013-10-16  François Dumont  <fdumont@gcc.gnu.org>
 
3045
+
 
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
 
3049
+       check.
 
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.
 
3056
+
 
3057
 2013-10-16  Release Manager
 
3058
 
 
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)
 
3064
@@ -0,0 +1,52 @@
 
3065
+// Copyright (C) 2013 Free Software Foundation, Inc.
 
3066
+//
 
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.
 
3072
+
 
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.
 
3077
+
 
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/>.
 
3081
+
 
3082
+// 25.3.2 [lib.alg.nth.element]
 
3083
+
 
3084
+// { dg-options "-std=gnu++11" }
 
3085
+
 
3086
+#include <algorithm>
 
3087
+#include <testsuite_hooks.h>
 
3088
+#include <testsuite_iterators.h>
 
3089
+
 
3090
+using __gnu_test::test_container;
 
3091
+using __gnu_test::random_access_iterator_wrapper;
 
3092
+
 
3093
+typedef test_container<int, random_access_iterator_wrapper> Container;
 
3094
+
 
3095
+void test01()
 
3096
+{
 
3097
+  std::vector<int> v = {
 
3098
+    207089,
 
3099
+    202585,
 
3100
+    180067,
 
3101
+    157549,
 
3102
+    211592,
 
3103
+    216096,
 
3104
+    207089
 
3105
+  };
 
3106
+
 
3107
+  Container con(v.data(), v.data() + 7);
 
3108
+
 
3109
+  std::nth_element(con.begin(), con.begin() + 3, con.end());
 
3110
+}
 
3111
+
 
3112
+int main()
 
3113
+{
 
3114
+  test01();
 
3115
+  return 0;
 
3116
+}
 
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)
 
3121
@@ -0,0 +1,33 @@
 
3122
+// { dg-options "-std=gnu++11" }
 
3123
+// { dg-do compile }
 
3124
+
 
3125
+// Copyright (C) 2013 Free Software Foundation, Inc.
 
3126
+//
 
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.
 
3132
+
 
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.
 
3137
+
 
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/>.
 
3141
+
 
3142
+#include <memory>
 
3143
+
 
3144
+// libstdc++/58839
 
3145
+
 
3146
+struct D {
 
3147
+  void operator()(void*) const noexcept { }
 
3148
+};
 
3149
+
 
3150
+void test01()
 
3151
+{
 
3152
+  std::unique_ptr<void, D> y;
 
3153
+  std::shared_ptr<void> x = std::move(y);
 
3154
+}
 
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)
 
3159
@@ -403,6 +403,7 @@
 
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
 
3167
@@ -590,6 +591,8 @@
 
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 @@
 
3244
 fi
 
3245
 
 
3246
 # For libtool versioning info, format is CURRENT:REVISION:AGE
 
3247
-libtool_VERSION=6:18:0
 
3248
+libtool_VERSION=6:19:0
 
3249
 
 
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
 
3258
 #   endif
 
3259
 #   ifdef FREEBSD
 
3260
+#   if defined(__powerpc64__)
 
3261
+#       define ALIGNMENT 8
 
3262
+#       define CPP_WORDSZ 64
 
3263
+#       ifndef HBLKSIZE
 
3264
+#           define HBLKSIZE 4096
 
3265
+#       endif
 
3266
+#   else
 
3267
 #       define ALIGNMENT 4
 
3268
+#   endif
 
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)
 
3276
@@ -1,3 +1,8 @@
 
3277
+2013-12-29  Andreas Tobler  <andreast@gcc.gnu.org>
 
3278
+
 
3279
+       Merge from trunk:
 
3280
+       * include/private/gcconfig.h: Add FreeBSD powerpc64 defines.
 
3281
+
 
3282
 2013-10-16  Release Manager
 
3283
 
 
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)
 
3289
@@ -1,3 +1,7 @@
 
3290
+2013-10-21  Mike Stump  <mikestump@comcast.net>
 
3291
+
 
3292
+       * gcc_update (configure): Update to handle svn 1.8.1.
 
3293
+
 
3294
 2013-10-16  Release Manager
 
3295
 
 
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)
 
3301
@@ -382,7 +382,7 @@
 
3302
        fi
 
3303
 
 
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:/ {
 
3307
            s,.*/trunk,trunk,
 
3308
            s,.*/branches/,,
 
3309
            s,.*/tags/,,
 
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)
 
3316
     return;
 
3317
 
 
3318
-  addrs = (struct function_addrs *) pfvec->vec.base;
 
3319
   addrs_count = pfvec->count;
 
3320
 
 
3321
   if (fvec == NULL)
 
3322
     {
 
3323
       if (!backtrace_vector_release (state, &lvec.vec, error_callback, data))
 
3324
        return;
 
3325
+      addrs = (struct function_addrs *) pfvec->vec.base;
 
3326
     }
 
3327
   else
 
3328
     {
 
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)
 
3336
+       return;
 
3337
       fvec->count = 0;
 
3338
     }
 
3339
 
 
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)
 
3344
@@ -1,3 +1,21 @@
 
3345
+2013-12-05  Ian Lance Taylor  <iant@google.com>
 
3346
+
 
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.
 
3354
+
 
3355
+2013-11-30  Ian Lance Taylor  <iant@google.com>
 
3356
+
 
3357
+       Backport from mainline:
 
3358
+       2013-10-17  Ian Lance Taylor  <iant@google.com>
 
3359
+
 
3360
+       * elf.c (elf_add): Don't get the wrong offsets if a debug section
 
3361
+       is missing.
 
3362
+
 
3363
 2013-10-16  Release Manager
 
3364
 
 
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)
 
3370
@@ -725,6 +725,8 @@
 
3371
     {
 
3372
       off_t end;
 
3373
 
 
3374
+      if (sections[i].size == 0)
 
3375
+       continue;
 
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 @@
 
3380
   descriptor = -1;
 
3381
 
 
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));
 
3385
+    {
 
3386
+      if (sections[i].size == 0)
 
3387
+       sections[i].data = NULL;
 
3388
+      else
 
3389
+       sections[i].data = ((const unsigned char *) debug_view.data
 
3390
+                           + (sections[i].offset - min_offset));
 
3391
+    }
 
3392
 
 
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);
 
3401
 
 
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
 
3406
+   failure.  */
 
3407
 
 
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,
 
3413
+                                     void *data);
 
3414
 
 
3415
-/* Release any extra space allocated for VEC.  Returns 1 on success, 0
 
3416
-   on failure.  */
 
3417
+/* Release any extra space allocated for VEC.  This may change
 
3418
+   VEC->base.  Returns 1 on success, 0 on failure.  */
 
3419
 
 
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 @@
 
3427
 
 
3428
 /* Finish the current allocation on VEC.  */
 
3429
 
 
3430
-void
 
3431
-backtrace_vector_finish (struct backtrace_state *state ATTRIBUTE_UNUSED,
 
3432
-                        struct backtrace_vector *vec)
 
3433
+void *
 
3434
+backtrace_vector_finish (struct backtrace_state *state,
 
3435
+                        struct backtrace_vector *vec,
 
3436
+                        backtrace_error_callback error_callback,
 
3437
+                        void *data)
 
3438
 {
 
3439
-  vec->base = (char *) vec->base + vec->size;
 
3440
+  void *ret;
 
3441
+
 
3442
+  /* With this allocator we call realloc in backtrace_vector_grow,
 
3443
+     which means we can't easily reuse the memory here.  So just
 
3444
+     release it.  */
 
3445
+  if (!backtrace_vector_release (state, vec, error_callback, data))
 
3446
+    return NULL;
 
3447
+  ret = vec->base;
 
3448
+  vec->base = NULL;
 
3449
   vec->size = 0;
 
3450
+  vec->alc = 0;
 
3451
+  return ret;
 
3452
 }
 
3453
 
 
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 @@
 
3460
 
 
3461
 /* Finish the current allocation on VEC.  */
 
3462
 
 
3463
-void
 
3464
-backtrace_vector_finish (struct backtrace_state *state ATTRIBUTE_UNUSED,
 
3465
-                        struct backtrace_vector *vec)
 
3466
+void *
 
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)
 
3472
 {
 
3473
+  void *ret;
 
3474
+
 
3475
+  ret = vec->base;
 
3476
   vec->base = (char *) vec->base + vec->size;
 
3477
   vec->size = 0;
 
3478
+  return ret;
 
3479
 }
 
3480
 
 
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)
 
3486
@@ -39,10 +39,11 @@
 
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)
 
3506
@@ -42,8 +42,9 @@
 
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
 
3515
 #include "jcl.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)
 
3522
@@ -1,3 +1,9 @@
 
3523
+2013-11-29  Matthias Klose  <doko@ubuntu.com>
 
3524
+
 
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.
 
3528
+
 
3529
 2013-03-22  Jakub Jelinek  <jakub@redhat.com>
 
3530
 
 
3531
        PR other/43620
 
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)
 
3536
 
 
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
 # -------------------------
 
3548
 case "${target}" in
 
3549
-  alpha*-dec-vx*) # Unlike all other Vxworks
 
3550
+  *-*-aix*)
 
3551
+    TOOLS_TARGET_PAIRS="\
 
3552
+    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
 
3553
+    indepsw.adb<indepsw-aix.adb"
 
3554
     ;;
 
3555
-  m68k*-wrs-vx* \
 
3556
-  | powerpc*-wrs-vxworks \
 
3557
-  | sparc*-wrs-vx* \
 
3558
-  | *86-wrs-vxworks \
 
3559
-  | mips*-wrs-vx*)
 
3560
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
 
3561
+  *-*-darwin*)
 
3562
+    TOOLS_TARGET_PAIRS="\
 
3563
+    mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
 
3564
+    indepsw.adb<indepsw-darwin.adb"
 
3565
     ;;
 
3566
-  sparc-sun-solaris*)
 
3567
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3568
+  *-*-freebsd*)
 
3569
+    TOOLS_TARGET_PAIRS="\
 
3570
+    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
 
3571
+    indepsw.adb<indepsw-gnu.adb"
 
3572
     ;;
 
3573
-  *86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
 
3574
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3575
-    ;;
 
3576
-  *86-*-linux* \
 
3577
-  | powerpc*-*-linux* \
 
3578
-  | *ia64-*-linux* \
 
3579
-  | alpha*-*-linux* \
 
3580
-  | sparc*-*-linux* \
 
3581
-  | hppa*-*-linux* \
 
3582
-  | *x86_64-*-linux*)
 
3583
+  *-*-linux*)
 
3584
     TOOLS_TARGET_PAIRS="\
 
3585
     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
 
3586
     indepsw.adb<indepsw-gnu.adb"
 
3587
     ;;
 
3588
-  s390*-*-linux*)
 
3589
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
 
3590
+  *-*-lynxos*)
 
3591
+    TOOLS_TARGET_PAIRS="\
 
3592
+    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
 
3593
+    indepsw.adb<indepsw-gnu.adb"
 
3594
     ;;
 
3595
-  *86-*-freebsd*)
 
3596
+  *-*-solaris*)
 
3597
+    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3598
+    ;;
 
3599
+  *-*-vxworks*)
 
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"
 
3604
     ;;
 
3605
-  hppa*-hp-hpux10*) # Unlike hpux11
 
3606
+  hppa*-hp-hpux10*)
 
3607
     ;;
 
3608
   hppa*-hp-hpux11*)
 
3609
     TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
 
3610
     ;;
 
3611
-  *-ibm-aix*)
 
3612
-    TOOLS_TARGET_PAIRS="\
 
3613
-    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
 
3614
-    indepsw.adb<indepsw-aix.adb"
 
3615
+  ia64-hp-hpux11*)
 
3616
+    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb"
 
3617
     ;;
 
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"
 
3625
-
 
3626
     EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
 
3627
     ;;
 
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"
 
3635
-
 
3636
     EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
 
3637
     ;;
 
3638
   *-*-cygwin32* | *-*-mingw32* | *-*-pe)
 
3639
@@ -2097,14 +2090,6 @@
 
3640
     indepsw.adb<indepsw-mingw.adb"
 
3641
     EXTRA_GNATTOOLS='../../gnatdll$(exeext)'
 
3642
     ;;
 
3643
-  *-*-darwin*)
 
3644
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
 
3645
-    ;;
 
3646
-  *-*-lynxos)
 
3647
-    TOOLS_TARGET_PAIRS="\
 
3648
-    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
 
3649
-    indepsw.adb<indepsw-gnu.adb"
 
3650
-    ;;
 
3651
 esac
 
3652
 
 
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)
 
3658
@@ -24,6 +24,8 @@
 
3659
 libdir = @libdir@
 
3660
 build = @build@
 
3661
 target = @target@
 
3662
+host = @host@
 
3663
+host_alias = @host_alias@
 
3664
 prefix = @prefix@
 
3665
 INSTALL = @INSTALL@
 
3666
 INSTALL_DATA = @INSTALL_DATA@
 
3667
@@ -84,6 +86,7 @@
 
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)" \
 
3675
@@ -97,6 +100,22 @@
 
3676
        "TOOLSCASE=cross"
 
3677
 
 
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
 
3684
+else
 
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
 
3689
+endif
 
3690
+
 
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 )))
 
3694
+
 
3695
 TOOLS_FLAGS_TO_PASS_CROSS= \
 
3696
        "CC=$(CC)" \
 
3697
        "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
 
3698
@@ -108,9 +127,9 @@
 
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)" \
 
3708
        "TOOLSCASE=cross" \
 
3709
        "LIBGNAT="
 
3710
 
 
3711
@@ -179,11 +198,6 @@
 
3712
        $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
 
3713
          $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
 
3714
 
 
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
 
3721
        # gnattools1-re
 
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)
 
3727
@@ -69,66 +69,59 @@
 
3728
 # Per-target case statement
 
3729
 # -------------------------
 
3730
 case "${target}" in
 
3731
-  alpha*-dec-vx*) # Unlike all other Vxworks
 
3732
+  *-*-aix*)
 
3733
+    TOOLS_TARGET_PAIRS="\
 
3734
+    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
 
3735
+    indepsw.adb<indepsw-aix.adb"
 
3736
     ;;
 
3737
-  m68k*-wrs-vx* \
 
3738
-  | powerpc*-wrs-vxworks \
 
3739
-  | sparc*-wrs-vx* \
 
3740
-  | *86-wrs-vxworks \
 
3741
-  | mips*-wrs-vx*)
 
3742
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
 
3743
+  *-*-darwin*)
 
3744
+    TOOLS_TARGET_PAIRS="\
 
3745
+    mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb \
 
3746
+    indepsw.adb<indepsw-darwin.adb"
 
3747
     ;;
 
3748
-  sparc-sun-solaris*)
 
3749
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3750
+  *-*-freebsd*)
 
3751
+    TOOLS_TARGET_PAIRS="\
 
3752
+    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
 
3753
+    indepsw.adb<indepsw-gnu.adb"
 
3754
     ;;
 
3755
-  *86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
 
3756
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3757
-    ;;
 
3758
-  *86-*-linux* \
 
3759
-  | powerpc*-*-linux* \
 
3760
-  | *ia64-*-linux* \
 
3761
-  | alpha*-*-linux* \
 
3762
-  | sparc*-*-linux* \
 
3763
-  | hppa*-*-linux* \
 
3764
-  | *x86_64-*-linux*)
 
3765
+  *-*-linux*)
 
3766
     TOOLS_TARGET_PAIRS="\
 
3767
     mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
 
3768
     indepsw.adb<indepsw-gnu.adb"
 
3769
     ;;
 
3770
-  s390*-*-linux*)
 
3771
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
 
3772
+  *-*-lynxos*)
 
3773
+    TOOLS_TARGET_PAIRS="\
 
3774
+    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
 
3775
+    indepsw.adb<indepsw-gnu.adb"
 
3776
     ;;
 
3777
-  *86-*-freebsd*)
 
3778
+  *-*-solaris*)
 
3779
+    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
 
3780
+    ;;
 
3781
+  *-*-vxworks*)
 
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"
 
3786
     ;;
 
3787
-  hppa*-hp-hpux10*) # Unlike hpux11
 
3788
+  hppa*-hp-hpux10*)
 
3789
     ;;
 
3790
   hppa*-hp-hpux11*)
 
3791
     TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
 
3792
     ;;
 
3793
-  *-ibm-aix*)
 
3794
-    TOOLS_TARGET_PAIRS="\
 
3795
-    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb \
 
3796
-    indepsw.adb<indepsw-aix.adb"
 
3797
+  ia64-hp-hpux11*)
 
3798
+    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-ia64-hpux.adb"
 
3799
     ;;
 
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"
 
3807
-
 
3808
     EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
 
3809
     ;;
 
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"
 
3817
-
 
3818
     EXTRA_GNATTOOLS='../../gnatlbr$(exeext) ../../gnatsym$(exeext)'
 
3819
     ;;
 
3820
   *-*-cygwin32* | *-*-mingw32* | *-*-pe)
 
3821
@@ -137,14 +130,6 @@
 
3822
     indepsw.adb<indepsw-mingw.adb"
 
3823
     EXTRA_GNATTOOLS='../../gnatdll$(exeext)'
 
3824
     ;;
 
3825
-  *-*-darwin*)
 
3826
-    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
 
3827
-    ;;
 
3828
-  *-*-lynxos)
 
3829
-    TOOLS_TARGET_PAIRS="\
 
3830
-    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb \
 
3831
-    indepsw.adb<indepsw-gnu.adb"
 
3832
-    ;;
 
3833
 esac
 
3834
 
 
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)
 
3840
@@ -1,3 +1,23 @@
 
3841
+2013-12-12  Eric Botcazou  <ebotcazou@adacore.com>
 
3842
+           Iain Sandoe  <iain@codesourcery.com>
 
3843
+
 
3844
+       PR ada/55946
 
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.
 
3854
+
 
3855
+2013-12-04  Eric Botcazou  <ebotcazou@adacore.com>
 
3856
+
 
3857
+       PR ada/59382
 
3858
+       * configure.ac (target parameterization): Rewrite.
 
3859
+       * configure: Regenerate.
 
3860
+
 
3861
 2013-10-16  Release Manager
 
3862
 
 
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 @@
 
3869
        ;;
 
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"
 
3878
        ;;
 
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"
 
3883
        ;;
 
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"
 
3887
+       ;;
 
3888
 mips*-*-netbsd*)                       # NetBSD/mips, either endian.
 
3889
        ;;
 
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)
 
3895
@@ -1,3 +1,41 @@
 
3896
+2014-01-03  Joseph Myers  <joseph@codesourcery.com>
 
3897
+
 
3898
+       * config/rs6000/ibm-ldouble.c (__gcc_qdiv): Scale up arguments in
 
3899
+       case of small numerator and finite nonzero result.
 
3900
+
 
3901
+2013-12-12  Zhenqiang Chen  <zhenqiang.chen@arm.com>
 
3902
+
 
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.
 
3906
+
 
3907
+2013-12-10  Uros Bizjak  <ubizjak@gmail.com>
 
3908
+
 
3909
+       * config/i386/sfp-exceptions.c (__sfp_handle_exceptions): Emit SSE
 
3910
+       instructions when __SSE_MATH__ is defined.
 
3911
+
 
3912
+2013-12-06  Ralf Corsépius  <ralf.corsepius@rtems.org>
 
3913
+
 
3914
+       * config.host (microblaze-*-rtems*): New.
 
3915
+
 
3916
+2013-11-10  Kai Tietz  <ktietz@redhat.com>
 
3917
+
 
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.
 
3925
+
 
3926
+2013-11-07  Uros Bizjak  <ubizjak@gmail.com>
 
3927
+
 
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.
 
3933
+
 
3934
 2013-10-16  Release Manager
 
3935
 
 
3936
        * GCC 4.8.2 released.
 
3937
@@ -151,7 +189,7 @@
 
3938
        * config/mips/crtn.S (fini, init): New labels.
 
3939
 
 
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
 
3943
        as dividend.
 
3944
 
 
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)
 
3950
@@ -47,21 +47,33 @@
 
3951
   if (_fex & FP_EX_INVALID)
 
3952
     {
 
3953
       float f = 0.0f;
 
3954
-#ifdef __x86_64__
 
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.   */
 
3959
 #else
 
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.  */
 
3963
 #endif
 
3964
     }
 
3965
+  if (_fex & FP_EX_DENORM)
 
3966
+    {
 
3967
+      struct fenv temp;
 
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");
 
3972
+    }
 
3973
   if (_fex & FP_EX_DIVZERO)
 
3974
     {
 
3975
       float f = 1.0f, g = 0.0f;
 
3976
-#ifdef __x86_64__
 
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.   */
 
3981
 #else
 
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.  */
 
3985
 #endif
 
3986
     }
 
3987
   if (_fex & FP_EX_OVERFLOW)
 
3988
@@ -82,11 +94,15 @@
 
3989
     }
 
3990
   if (_fex & FP_EX_INEXACT)
 
3991
     {
 
3992
-      struct fenv temp;
 
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.   */
 
4002
+#else
 
4003
+      asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g));
 
4004
+      /* No need for fwait, exception is triggered by emitted fstp.  */
 
4005
+#endif
 
4006
     }
 
4007
 };
 
4008
 #endif
 
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)
 
4013
@@ -69,6 +69,9 @@
 
4014
   = { };
 
4015
 
 
4016
 static struct object obj;
 
4017
+
 
4018
+/* Handle of libgcc's DLL reference.  */
 
4019
+HANDLE hmod_libgcc;
 
4020
 #endif
 
4021
 
 
4022
 #if TARGET_USE_JCR_SECTION
 
4023
@@ -93,9 +96,14 @@
 
4024
 
 
4025
   void (*register_frame_fn) (const void *, struct object *);
 
4026
   HANDLE h = GetModuleHandle (LIBGCC_SONAME);
 
4027
+
 
4028
   if (h)
 
4029
-    register_frame_fn = (void (*) (const void *, struct object *))
 
4030
-                       GetProcAddress (h, "__register_frame_info");
 
4031
+    {
 
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");
 
4036
+    }
 
4037
   else 
 
4038
     register_frame_fn = __register_frame_info;
 
4039
   if (register_frame_fn)
 
4040
@@ -132,5 +140,7 @@
 
4041
     deregister_frame_fn = __deregister_frame_info;
 
4042
   if (deregister_frame_fn)
 
4043
      deregister_frame_fn (__EH_FRAME_BEGIN__);
 
4044
+  if (hmod_libgcc)
 
4045
+    FreeLibrary (hmod_libgcc);
 
4046
 #endif
 
4047
 }
 
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 @@
 
4053
       || nonfinite (t))
 
4054
     return t;
 
4055
 
 
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)
 
4061
+    {
 
4062
+      a *= 0x1p106;
 
4063
+      b *= 0x1p106;
 
4064
+      c *= 0x1p106;
 
4065
+      d *= 0x1p106;
 
4066
+    }
 
4067
 
 
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 @@
 
4075
     }
 
4076
   else if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (op_def)))
 
4077
     {
 
4078
-      /* Recurse through the type conversion.  */
 
4079
-      retval |= register_edge_assert_for_1 (gimple_assign_rhs1 (op_def),
 
4080
-                                           code, e, bsi);
 
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);
 
4088
     }
 
4089
 
 
4090
   return retval;
 
4091
@@ -7453,7 +7457,8 @@
 
4092
     }
 
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)
 
4098
     {
 
4099
       /* [  (  ]  ) or [   ](   ) */
 
4100
       if (*vr0type == VR_RANGE
 
4101
@@ -7487,7 +7492,8 @@
 
4102
     }
 
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)
 
4108
     {
 
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)
 
4115
@@ -191,6 +191,7 @@
 
4116
   if (!test)
 
4117
     return NULL_RTX;
 
4118
 
 
4119
+  mode = VOIDmode;
 
4120
   for (i = 0; i < 2; i++)
 
4121
     {
 
4122
       op[i] = XEXP (test, i);
 
4123
@@ -205,11 +206,15 @@
 
4124
        return NULL_RTX;
 
4125
 
 
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)
 
4131
+       mode = iv.mode;
 
4132
+      else
 
4133
+       gcc_assert (mode == iv.mode);
 
4134
     }
 
4135
 
 
4136
-  mode = GET_MODE (op[0]);
 
4137
-  if (mode == VOIDmode)
 
4138
-    mode = GET_MODE (op[1]);
 
4139
   if (GET_MODE_CLASS (mode) == MODE_CC)
 
4140
     {
 
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);
 
4148
 }
 
4149
 
 
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.  */
 
4153
+
 
4154
+static bool
 
4155
+arith_code_with_undefined_signed_overflow (tree_code code)
 
4156
+{
 
4157
+  switch (code)
 
4158
+    {
 
4159
+    case PLUS_EXPR:
 
4160
+    case MINUS_EXPR:
 
4161
+    case MULT_EXPR:
 
4162
+    case NEGATE_EXPR:
 
4163
+    case POINTER_PLUS_EXPR:
 
4164
+      return true;
 
4165
+    default:
 
4166
+      return false;
 
4167
+    }
 
4168
+}
 
4169
+
 
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.
 
4174
+
 
4175
+   Returns a sequence of statements that replace STMT and also contain
 
4176
+   a modified form of STMT itself.  */
 
4177
+
 
4178
+static gimple_seq
 
4179
+rewrite_to_defined_overflow (gimple stmt)
 
4180
+{
 
4181
+  if (dump_file && (dump_flags & TDF_DETAILS))
 
4182
+    {
 
4183
+      fprintf (dump_file, "rewriting stmt with undefined signed "
 
4184
+              "overflow ");
 
4185
+      print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
 
4186
+    }
 
4187
+
 
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)
 
4192
+    {
 
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);
 
4199
+    }
 
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);
 
4207
+
 
4208
+  return stmts;
 
4209
+}
 
4210
+
 
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 @@
 
4215
            }
 
4216
        }
 
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));
 
4232
+      else
 
4233
+       gsi_insert_on_edge (e, stmt);
 
4234
     }
 
4235
 }
 
4236
 
 
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)
 
4241
@@ -297,7 +297,8 @@
 
4242
   tree val;
 
4243
   def_operand_p def_p;
 
4244
 
 
4245
-  if (gimple_has_side_effects (stmt))
 
4246
+  if (gimple_has_side_effects (stmt)
 
4247
+      || gimple_vdef (stmt) != NULL_TREE)
 
4248
     return false;
 
4249
 
 
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)
 
4255
@@ -73,7 +73,7 @@
 
4256
       decl = get_base_var (*tp);
 
4257
       if (TREE_CODE (decl) == FUNCTION_DECL)
 
4258
        {
 
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,
 
4264
@@ -143,7 +143,7 @@
 
4265
     {
 
4266
       struct cgraph_node *per_node;
 
4267
 
 
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);
 
4272
     }
 
4273
@@ -218,12 +218,12 @@
 
4274
 /* Mark address taken in STMT.  */
 
4275
 
 
4276
 static bool
 
4277
-mark_address (gimple stmt, tree addr, void *data)
 
4278
+mark_address (gimple stmt, tree addr, tree, void *data)
 
4279
 {
 
4280
   addr = get_base_address (addr);
 
4281
   if (TREE_CODE (addr) == FUNCTION_DECL)
 
4282
     {
 
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,
 
4287
                            (symtab_node)node,
 
4288
@@ -245,14 +245,14 @@
 
4289
 /* Mark load of T.  */
 
4290
 
 
4291
 static bool
 
4292
-mark_load (gimple stmt, tree t, void *data)
 
4293
+mark_load (gimple stmt, tree t, tree, void *data)
 
4294
 {
 
4295
   t = get_base_address (t);
 
4296
   if (t && TREE_CODE (t) == FUNCTION_DECL)
 
4297
     {
 
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,
 
4304
                            (symtab_node)node,
 
4305
@@ -273,7 +273,7 @@
 
4306
 /* Mark store of T.  */
 
4307
 
 
4308
 static bool
 
4309
-mark_store (gimple stmt, tree t, void *data)
 
4310
+mark_store (gimple stmt, tree t, tree, void *data)
 
4311
 {
 
4312
   t = get_base_address (t);
 
4313
   if (t && TREE_CODE (t) == VAR_DECL
 
4314
@@ -330,7 +330,7 @@
 
4315
            {
 
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);
 
4321
            }
 
4322
          if (gimple_code (stmt) == GIMPLE_OMP_TASK)
 
4323
@@ -338,12 +338,12 @@
 
4324
              tree fn = gimple_omp_task_child_fn (stmt);
 
4325
              if (fn)
 
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);
 
4331
              if (fn)
 
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);
 
4336
            }
 
4337
        }
 
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 @@
 
4343
       return NULL;
 
4344
     }
 
4345
 
 
4346
-  if (gimple_code (stmt) != GIMPLE_ASSIGN)
 
4347
+  if (gimple_code (stmt) != GIMPLE_ASSIGN
 
4348
+      || gimple_assign_rhs_class (stmt) == GIMPLE_TERNARY_RHS)
 
4349
     return NULL;
 
4350
 
 
4351
   code = gimple_assign_rhs_code (stmt);
 
4352
@@ -2143,7 +2144,7 @@
 
4353
 {
 
4354
   gimple stmt;
 
4355
 
 
4356
-  gcc_assert (is_gimple_min_invariant (base));
 
4357
+  gcc_checking_assert (is_gimple_min_invariant (base));
 
4358
 
 
4359
   if (!x)
 
4360
     return base;
 
4361
@@ -2152,7 +2153,7 @@
 
4362
   if (gimple_code (stmt) == GIMPLE_PHI)
 
4363
     return base;
 
4364
 
 
4365
-  gcc_assert (is_gimple_assign (stmt));
 
4366
+  gcc_checking_assert (is_gimple_assign (stmt));
 
4367
 
 
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)
 
4374
@@ -1,3 +1,18 @@
 
4375
+2013-11-29  Jakub Jelinek  <jakub@redhat.com>
 
4376
+
 
4377
+       PR c/59280
 
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
 
4380
+       diagnostics.
 
4381
+
 
4382
+2013-11-04  Marek Polacek  <polacek@redhat.com>
 
4383
+
 
4384
+       Backport from mainline
 
4385
+       2013-11-04  Marek Polacek  <polacek@redhat.com>
 
4386
+
 
4387
+       PR c++/58979
 
4388
+       * c-common.c (invalid_indirection_error): Handle RO_ARROW_STAR case.
 
4389
+
 
4390
 2013-10-16  Release Manager
 
4391
 
 
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 @@
 
4398
     }
 
4399
 
 
4400
   arg = TREE_VALUE (args);
 
4401
+  if (TREE_CODE (arg) == IDENTIFIER_NODE)
 
4402
+    goto invalid;
 
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)",
 
4410
                type);
 
4411
       break;
 
4412
+    case RO_ARROW_STAR:
 
4413
+      error_at (loc,
 
4414
+               "invalid type argument of %<->*%> (have %qT)",
 
4415
+               type);
 
4416
+      break;
 
4417
     case RO_IMPLICIT_CONVERSION:
 
4418
       error_at (loc,
 
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.  */
 
4426
 
 
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)
 
4431
        {
 
4432
          if (code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
 
4433
            error_at (location, "wrong type argument to increment");
 
4434
@@ -3694,7 +3695,9 @@
 
4435
          }
 
4436
        else
 
4437
          {
 
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);
 
4443
          }
 
4444
 
 
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)
 
4449
@@ -1,3 +1,18 @@
 
4450
+2013-12-03  Marek Polacek  <polacek@redhat.com>
 
4451
+
 
4452
+       Backport from mainline
 
4453
+       2013-12-03  Marek Polacek  <polacek@redhat.com>
 
4454
+
 
4455
+       PR c/59351
 
4456
+       * c-decl.c (build_compound_literal): Allow compound literals with
 
4457
+       empty initial value.
 
4458
+
 
4459
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
4460
+           Marc Glisse  <marc.glisse@inria.fr>
 
4461
+
 
4462
+       PR c++/59032
 
4463
+       * c-typeck.c (build_unary_op): Allow vector increment and decrement.
 
4464
+
 
4465
 2013-10-16  Release Manager
 
4466
 
 
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 @@
 
4473
     {
 
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);
 
4480
 
 
4481
       type = TREE_TYPE (decl);
 
4482
       TREE_TYPE (DECL_INITIAL (decl)) = type;
 
4483
Index: gcc/cgraph.c
 
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);
 
4490
 }
 
4491
+
 
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
 
4498
+   hash.  */
 
4499
+
 
4500
+struct cgraph_node *
 
4501
+cgraph_get_create_real_symbol_node (tree decl)
 
4502
+{
 
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)
 
4509
+    return node;
 
4510
+
 
4511
+  node = cgraph_create_node (decl);
 
4512
+
 
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.  */
 
4518
+  if (first_clone)
 
4519
+    {
 
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);
 
4524
+      if (dump_file)
 
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);
 
4528
+    }
 
4529
+  else if (dump_file)
 
4530
+    fprintf (dump_file, "Introduced new external node "
 
4531
+            "(%s/%i).\n", xstrdup (cgraph_node_name (node)), node->uid);
 
4532
+  return node;
 
4533
+}
 
4534
 #include "gt-cgraph.h"
 
4535
Index: gcc/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)
 
4539
@@ -575,6 +575,7 @@
 
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);
 
4547
Index: gcc/optabs.c
 
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))
 
4553
     return NULL_RTX;
 
4554
 
 
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 @@
 
4565
        }
 
4566
     }
 
4567
   delete_insns_since (last);
 
4568
+  pending_stack_adjust = save_pending_stack_adjust;
 
4569
+  stack_pointer_delta = save_stack_pointer_delta;
 
4570
   return NULL_RTX;
 
4571
 }
 
4572
 
 
4573
@@ -6233,7 +6238,7 @@
 
4574
 
 
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;
 
4579
   else
 
4580
     {
 
4581
       TREE_OPTIMIZATION_OPTABS (optnode) = NULL;
 
4582
@@ -7035,8 +7040,7 @@
 
4583
 
 
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;
 
4601
     }
 
4602
@@ -7118,8 +7121,6 @@
 
4603
     {
 
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))
 
4609
        return target;
 
4610
     }
 
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 @@
 
4623
 
 
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))
 
4631
        return false;
 
4632
 
 
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)
 
4637
@@ -1 +1 @@
 
4638
-20131016
 
4639
+20140117
 
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 @@
 
4645
 
 
4646
   /* Build an EH edge for the direct call if necessary.  */
 
4647
   lp_nr = lookup_stmt_eh_lp (icall_stmt);
 
4648
-  if (lp_nr != 0
 
4649
-      && stmt_could_throw_p (dcall_stmt))
 
4650
+  if (lp_nr > 0 && stmt_could_throw_p (dcall_stmt))
 
4651
     {
 
4652
       edge e_eh, e;
 
4653
       edge_iterator ei;
 
4654
Index: gcc/tree.h
 
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 @@
 
4659
 
 
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;
 
4664
 
 
4665
   /* The value of this_target_optabs against which the optabs above were
 
4666
      generated.  */
 
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};;
 
4674
        esac
 
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}"
 
4683
 
 
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
 
4688
 then
 
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)'
 
4692
 fi
 
4693
 
 
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"
 
4701
 
 
4702
 #if HAVE_DLFCN_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"
 
4710
 
 
4711
 #if HAVE_DLFCN_H
 
4712
@@ -24263,6 +24262,43 @@
 
4713
 $as_echo "#define HAVE_AS_SPARC4 1" >>confdefs.h
 
4714
 
 
4715
 fi
 
4716
+
 
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
 
4721
+else
 
4722
+  gcc_cv_as_sparc_leon=no
 
4723
+  if test x$gcc_cv_as != x; then
 
4724
+    $as_echo '.text
 
4725
+       .register %g2, #scratch
 
4726
+       .register %g3, #scratch
 
4727
+       .align 4
 
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
 
4734
+  ac_status=$?
 
4735
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
 
4736
+  test $ac_status = 0; }; }
 
4737
+    then
 
4738
+       gcc_cv_as_sparc_leon=yes
 
4739
+    else
 
4740
+      echo "configure: failed program was" >&5
 
4741
+      cat conftest.s >&5
 
4742
+    fi
 
4743
+    rm -f conftest.o conftest.s
 
4744
+  fi
 
4745
+fi
 
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
 
4749
+
 
4750
+$as_echo "#define HAVE_AS_LEON 1" >>confdefs.h
 
4751
+
 
4752
+fi
 
4753
     ;;
 
4754
 
 
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
 
4775
         plugin_rdynamic=yes
 
4776
         pluginlibs="-rdynamic"
 
4777
       else
 
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;
 
4787
   tree arg;
 
4788
 
 
4789
   if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
 
4790
@@ -1969,6 +1970,7 @@
 
4791
     {
 
4792
     CASE_FLT_FN (BUILT_IN_SQRT):
 
4793
       errno_set = ! tree_expr_nonnegative_p (arg);
 
4794
+      try_widening = true;
 
4795
       builtin_optab = sqrt_optab;
 
4796
       break;
 
4797
     CASE_FLT_FN (BUILT_IN_EXP):
 
4798
@@ -2025,8 +2027,10 @@
 
4799
   if (! flag_errno_math || ! HONOR_NANS (mode))
 
4800
     errno_set = false;
 
4801
 
 
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 ()))
 
4809
     {
 
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 @@
 
4816
        case COMPONENT_REF:
 
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)
 
4821
+             || !OP_SAME (1))
 
4822
            return 0;
 
4823
          flags &= ~OEP_CONSTANT_ADDRESS_OF;
 
4824
-         return OP_SAME (1) && OP_SAME_WITH_NULL (2);
 
4825
+         return OP_SAME_WITH_NULL (2);
 
4826
 
 
4827
        case BIT_FIELD_REF:
 
4828
          if (!OP_SAME (0))
 
4829
@@ -10927,6 +10928,13 @@
 
4830
                                fold_build2_loc (loc, MULT_EXPR, type,
 
4831
                                             build_int_cst (type, 2) , arg1));
 
4832
 
 
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));
 
4839
+
 
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);
 
4846
 
 
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,
 
4851
                                        part_width, index);
 
4852
Index: gcc/reorg.c
 
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 @@
 
4857
   int used_annul = 0;
 
4858
   int i;
 
4859
   struct resources cc_set;
 
4860
+  bool *redundant;
 
4861
 
 
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 @@
 
4865
     return delay_list;
 
4866
 #endif
 
4867
 
 
4868
+  redundant = XALLOCAVEC (bool, XVECLEN (seq, 0));
 
4869
   for (i = 1; i < XVECLEN (seq, 0); i++)
 
4870
     {
 
4871
       rtx trial = XVECEXP (seq, 0, i);
 
4872
@@ -1166,7 +1168,8 @@
 
4873
 
 
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);
 
4878
+      if (redundant[i])
 
4879
        continue;
 
4880
 
 
4881
       /* We will end up re-vectoring this branch, so compute flags
 
4882
@@ -1199,6 +1202,12 @@
 
4883
        return delay_list;
 
4884
     }
 
4885
 
 
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++)
 
4889
+    if (redundant[i])
 
4890
+      update_block (XVECEXP (seq, 0, i), insn);
 
4891
+
 
4892
   /* Show the place to which we will be branching.  */
 
4893
   *pnew_thread = first_active_target_insn (JUMP_LABEL (XVECEXP (seq, 0, 0)));
 
4894
 
 
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))
 
4898
        {
 
4899
+         update_block (trial, insn);
 
4900
          delete_from_delay_slot (trial);
 
4901
          continue;
 
4902
        }
 
4903
@@ -3266,6 +3276,7 @@
 
4904
         to reprocess this insn.  */
 
4905
       if (redundant_insn (XVECEXP (pat, 0, 1), delay_insn, 0))
 
4906
        {
 
4907
+         update_block (XVECEXP (pat, 0, 1), insn);
 
4908
          delete_from_delay_slot (XVECEXP (pat, 0, 1));
 
4909
          next = prev_active_insn (next);
 
4910
          continue;
 
4911
@@ -3385,6 +3396,7 @@
 
4912
              && redirect_with_delay_slots_safe_p (delay_insn, target_label,
 
4913
                                                   insn))
 
4914
            {
 
4915
+             update_block (XVECEXP (PATTERN (trial), 0, 1), insn);
 
4916
              reorg_redirect_jump (delay_insn, target_label);
 
4917
              next = insn;
 
4918
              continue;
 
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)
 
4923
@@ -660,7 +660,7 @@
 
4924
     }
 
4925
 
 
4926
   /* For non-calls, store the information that makes up the address.  */
 
4927
-
 
4928
+  tree orig = ref;
 
4929
   while (ref)
 
4930
     {
 
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
 
4942
+                          trick here).  */
 
4943
+                       && (TREE_CODE (orig) != ADDR_EXPR
 
4944
+                           || !off.is_zero ()
 
4945
+                           || cfun->after_inlining))
 
4946
                      temp.off = off.low;
 
4947
                  }
 
4948
              }
 
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)
 
4953
@@ -1,3 +1,1138 @@
 
4954
+2014-01-17  Charles Baylis  <charles.baylis@linaro.org>
 
4955
+
 
4956
+       Backport from mainline
 
4957
+       2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
 
4958
+
 
4959
+       PR target/59142
 
4960
+       * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb
 
4961
+       patterns.
 
4962
+       * config/arm/ldmstm.md: Regenerate.
 
4963
+
 
4964
+       2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
 
4965
+
 
4966
+       PR target/59142
 
4967
+       * config/arm/predicates.md (arm_hard_general_register_operand):
 
4968
+       New predicate.
 
4969
+       (arm_hard_register_operand): Remove.
 
4970
+       * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand
 
4971
+       for all patterns.
 
4972
+       * config/arm/ldmstm.md: Regenerate.
 
4973
+
 
4974
+       2013-12-19  Charles Baylis  <charles.baylis@linaro.org>
 
4975
+
 
4976
+       PR target/59142
 
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.
 
4980
+
 
4981
+2014-01-17  Kugan Vivekanandarajah  <kuganv@linaro.org>
 
4982
+
 
4983
+       Backport from mainline
 
4984
+       2014-01-15  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
 
4985
+            Kugan Vivekanandarajah  <kuganv@linaro.org>
 
4986
+
 
4987
+       PR target/59695
 
4988
+       * config/aarch64/aarch64.c (aarch64_build_constant): Fix incorrect
 
4989
+       truncation.
 
4990
+
 
4991
+2014-01-17  Terry Guo  <terry.guo@arm.com>
 
4992
+
 
4993
+       PR target/59826
 
4994
+       * config/arm/arm.md (prefetch): Set insn type attribute to load1.
 
4995
+
 
4996
+2014-01-16  Jakub Jelinek  <jakub@redhat.com>
 
4997
+
 
4998
+       PR target/59839
 
4999
+       * config/i386/i386.c (ix86_expand_builtin): If target doesn't
 
5000
+       satisfy operand 0 predicate for gathers, use a new pseudo as
 
5001
+       subtarget.
 
5002
+
 
5003
+2014-01-16  Richard Henderson <rth@redhat.com>
 
5004
+
 
5005
+       PR debug/54694
 
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.
 
5010
+
 
5011
+2014-01-16  Peter Bergner  <bergner@vnet.ibm.com>
 
5012
+
 
5013
+       Backport from mainline
 
5014
+       2014-01-15  Uros Bizjak  <ubizjak@gmail.com>
 
5015
+
 
5016
+       * config/i386/i386.c (ix86_hard_regno_mode_ok): Use
 
5017
+       VALID_AVX256_REG_OR_OI_MODE.
 
5018
+
 
5019
+       2013-09-05  Peter Bergner  <bergner@vnet.ibm.com>
 
5020
+
 
5021
+       PR target/58139
 
5022
+       * reginfo.c (choose_hard_reg_mode): Scan through all mode classes
 
5023
+       looking for widest mode.
 
5024
+
 
5025
+2014-01-16  Marek Polacek  <polacek@redhat.com>
 
5026
+
 
5027
+       Backported from mainline
 
5028
+       2014-01-16  Marek Polacek  <polacek@redhat.com>
 
5029
+
 
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.
 
5033
+
 
5034
+2014-01-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
5035
+
 
5036
+       PR target/59803
 
5037
+       * config/s390/s390.c (s390_preferred_reload_class): Don't return
 
5038
+       ADDR_REGS for invalid symrefs in non-PIC code.
 
5039
+
 
5040
+2014-01-14  Uros Bizjak  <ubizjak@gmail.com>
 
5041
+
 
5042
+       Revert:
 
5043
+       2014-01-08  Uros Bizjak  <ubizjak@gmail.com>
 
5044
+
 
5045
+       * config/i386/i386.c (ix86_data_alignment): Calculate max_align
 
5046
+       from prefetch_block tune setting.
 
5047
+
 
5048
+2014-01-13  Jakub Jelinek  <jakub@redhat.com>
 
5049
+
 
5050
+       Backported from mainline
 
5051
+       2014-01-10  Jakub Jelinek  <jakub@redhat.com>
 
5052
+
 
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.
 
5056
+
 
5057
+2014-01-10  Yufeng Zhang  <yufeng.zhang@arm.com>
 
5058
+
 
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.
 
5062
+
 
5063
+2014-01-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
5064
+
 
5065
+       * config/s390/s390.c (s390_expand_tbegin): Remove jump over CC
 
5066
+       extraction in good case.
 
5067
+
 
5068
+2014-01-10  Huacai Chen  <chenhc@lemote.com>
 
5069
+
 
5070
+       * config/mips/driver-native.c (host_detect_local_cpu): Handle new
 
5071
+       kernel strings for Loongson-2E/2F/3A.
 
5072
+
 
5073
+2014-01-10  Richard Biener  <rguenther@suse.de>
 
5074
+
 
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.
 
5079
+
 
5080
+2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
 
5081
+
 
5082
+       * config/mips/mips.h (ISA_HAS_WSBH): Define.
 
5083
+       * config/mips/mips.md (UNSPEC_WSBH, UNSPEC_DSBH, UNSPEC_DSHD): New
 
5084
+       constants.
 
5085
+       (bswaphi2, bswapsi2, bswapdi2, wsbh, dsbh, dshd): New patterns.
 
5086
+
 
5087
+2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
 
5088
+
 
5089
+       PR rtl-optimization/59137
 
5090
+       * reorg.c (steal_delay_list_from_target): Call update_block for
 
5091
+       elided insns.
 
5092
+       (steal_delay_list_from_fallthrough, relax_delay_slots): Likewise.
 
5093
+
 
5094
+2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
 
5095
+
 
5096
+       Revert:
 
5097
+       2012-10-07  Richard Sandiford  <rdsandiford@googlemail.com>
 
5098
+
 
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.
 
5102
+
 
5103
+       2012-10-02  Richard Sandiford  <rdsandiford@googlemail.com>
 
5104
+
 
5105
+       * config/mips/mips.md (*baddu_si_eb, *baddu_si_el): Merge into...
 
5106
+       (*baddu_si): ...this new pattern.
 
5107
+
 
5108
+2014-01-09  Richard Biener  <rguenther@suse.de>
 
5109
+
 
5110
+       Backport from mainline
 
5111
+       2013-11-18  Richard Biener  <rguenther@suse.de>
 
5112
+
 
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.
 
5123
+
 
5124
+       2013-12-03  Jakub Jelinek  <jakub@redhat.com>
 
5125
+
 
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
 
5134
+       it with XNEWVEC.
 
5135
+       (fini_object_sizes): Call release on object_sizes elements, don't
 
5136
+       set it to NULL.
 
5137
+
 
5138
+2014-01-09  Richard Earnshaw  <rearnsha@arm.com>
 
5139
+
 
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.
 
5143
+
 
5144
+2014-01-09  Jakub Jelinek  <jakub@redhat.com>
 
5145
+
 
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.
 
5152
+
 
5153
+2014-01-09  Hans-Peter Nilsson  <hp@axis.com>
 
5154
+
 
5155
+       Backport from mainline
 
5156
+       2013-12-23  Hans-Peter Nilsson  <hp@axis.com>
 
5157
+
 
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.
 
5164
+
 
5165
+2014-01-08   H.J. Lu  <hongjiu.lu@intel.com>
 
5166
+
 
5167
+       Backport from mainline
 
5168
+       2013-12-25   H.J. Lu  <hongjiu.lu@intel.com>
 
5169
+
 
5170
+       PR target/59587
 
5171
+       * config/i386/i386.c (struct ptt): Add a field for processor name.
 
5172
+       (processor_target_table): Sync with processor_type.  Add
 
5173
+       processor names.
 
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
 
5179
+       tune names.
 
5180
+       * config/i386/i386.h (TARGET_CPU_DEFAULT): Default to
 
5181
+       PROCESSOR_GENERIC32.
 
5182
+       (target_cpu_default): Removed.
 
5183
+       (processor_type): Reordered.
 
5184
+
 
5185
+2014-01-08  Uros Bizjak  <ubizjak@gmail.com>
 
5186
+
 
5187
+       Backport from mainline
 
5188
+       2014-01-05  Uros Bizjak  <ubizjak@gmail.com>
 
5189
+
 
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.
 
5193
+
 
5194
+2014-01-08  Martin Jambor  <mjambor@suse.cz>
 
5195
+
 
5196
+       PR ipa/59610
 
5197
+       * ipa-prop.c (ipa_compute_jump_functions): Bail out if not optimizing.
 
5198
+       (parm_preserved_before_stmt_p): Assume modification present when not
 
5199
+       optimizing.
 
5200
+
 
5201
+2014-01-07  John David Anglin  <danglin@gcc.gnu.org>
 
5202
+
 
5203
+       PR target/59652
 
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.
 
5206
+
 
5207
+2014-01-07  Roland Stigge  <stigge@antcom.de>
 
5208
+           Michael Meissner  <meissner@linux.vnet.ibm.com>
 
5209
+
 
5210
+       PR 57386/target
 
5211
+       * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
 
5212
+       Only check TFmode for SPE constants.  Don't check TImode or TDmode.
 
5213
+
 
5214
+2014-01-07  Jakub Jelinek  <jakub@redhat.com>
 
5215
+
 
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
 
5222
+       counting change.
 
5223
+       * ifcvt.c (count_bb_insns): Don't count USE or CLOBBER insns.
 
5224
+
 
5225
+2014-01-07  Mike Stump  <mikestump@comcast.net>
 
5226
+           Jakub Jelinek  <jakub@redhat.com>
 
5227
+
 
5228
+       PR pch/59436
 
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.
 
5233
+
 
5234
+2014-01-07  Jakub Jelinek  <jakub@redhat.com>
 
5235
+
 
5236
+       Backported from mainline
 
5237
+       2013-12-16  Jakub Jelinek  <jakub@redhat.com>
 
5238
+
 
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
 
5249
+       functions.
 
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.
 
5267
+
 
5268
+2014-01-03  Andreas Schwab  <schwab@linux-m68k.org>
 
5269
+
 
5270
+       * config/m68k/m68k.c (handle_move_double): Handle pushes with
 
5271
+       overlapping registers also for registers other than the stack
 
5272
+       pointer.
 
5273
+
 
5274
+2014-01-03  Jakub Jelinek  <jakub@redhat.com>
 
5275
+
 
5276
+       PR target/59625
 
5277
+       * config/i386/i386.c (ix86_avoid_jump_mispredicts): Don't consider
 
5278
+       asm goto as jump.
 
5279
+
 
5280
+2014-01-01  Jakub Jelinek  <jakub@redhat.com>
 
5281
+
 
5282
+       PR rtl-optimization/59647
 
5283
+       * cse.c (cse_process_notes_1): Don't substitute negative VOIDmode
 
5284
+       new_rtx into UNSIGNED_FLOAT rtxes.
 
5285
+
 
5286
+2013-12-28  Eric Botcazou  <ebotcazou@adacore.com>
 
5287
+
 
5288
+       * doc/invoke.texi (output file options): Document -fada-spec-parent.
 
5289
+
 
5290
+2013-12-26  Uros Bizjak  <ubizjak@gmail.com>
 
5291
+
 
5292
+       * config/i386/driver-i386.c (decode_caches_intel): Add missing entries.
 
5293
+
 
5294
+2013-12-20  Jakub Jelinek  <jakub@redhat.com>
 
5295
+
 
5296
+       PR c++/59255
 
5297
+       Backported from mainline
 
5298
+       2013-08-19  Dehao Chen  <dehao@google.com>
 
5299
+
 
5300
+       * value-prof.c (gimple_ic): Fix the bug of adding EH edge.
 
5301
+
 
5302
+2013-12-19  James Greenhalgh  <james.greenhalgh@arm.com>
 
5303
+
 
5304
+       Backport from Mainline.
 
5305
+       2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
5306
+
 
5307
+       * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to...
 
5308
+       (cmgeu): ...This.
 
5309
+       (cmhi): Rename to...
 
5310
+       (cmgtu): ...This.
 
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
 
5318
+       (VALLF): new.
 
5319
+       (unspec): Remove UNSPEC_CM<EQ, LE, LT, GE, GT, HS, HI, TST>.
 
5320
+       (COMPARISONS): New.
 
5321
+       (UCOMPARISONS): Likewise.
 
5322
+       (optab): Add missing comparisons.
 
5323
+       (n_optab): New.
 
5324
+       (cmp_1): Likewise.
 
5325
+       (cmp_2): Likewise.
 
5326
+       (CMP): Likewise.
 
5327
+       (cmp): Remove.
 
5328
+       (VCMP_S): Likewise.
 
5329
+       (VCMP_U): Likewise.
 
5330
+       (V_cmp_result): Add DF, SF modes.
 
5331
+       (v_cmp_result): Likewise.
 
5332
+       (v): Likewise.
 
5333
+       (vmtype): Likewise.
 
5334
+       * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New.
 
5335
+
 
5336
+       Partial Backport from mainline.
 
5337
+       2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
5338
+
 
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.
 
5342
+
 
5343
+2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
5344
+           Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
5345
+
 
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
 
5349
+       constant
 
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
 
5365
+       prototype
 
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
 
5371
+
 
5372
+2013-12-18  Eric Botcazou  <ebotcazou@adacore.com>
 
5373
+
 
5374
+       * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Fix thinko.
 
5375
+
 
5376
+2013-12-12  Vladimir Makarov  <vmakarov@redhat.com>
 
5377
+
 
5378
+       PR middle-end/59470
 
5379
+       * lra-coalesce.c (lra_coalesce): Invalidate inheritance pseudo
 
5380
+       values if necessary.
 
5381
+
 
5382
+2013-12-12  Jakub Jelinek  <jakub@redhat.com>
 
5383
+
 
5384
+       PR libgomp/59467
 
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.
 
5389
+
 
5390
+2013-12-10  Eric Botcazou  <ebotcazou@adacore.com>
 
5391
+
 
5392
+       PR rtl-optimization/58295
 
5393
+       * simplify-rtx.c (simplify_truncation): Restrict the distribution for
 
5394
+       WORD_REGISTER_OPERATIONS targets.
 
5395
+
 
5396
+2013-12-10  Kai Tietz  <ktietz@redhat.com>
 
5397
+
 
5398
+       PR target/56807
 
5399
+       * config/i386/i386.c (ix86_expand_prologue): Address saved
 
5400
+       registers stack-relative, not via frame-pointer.
 
5401
+
 
5402
+2013-12-09  Alan Modra  <amodra@gmail.com>
 
5403
+
 
5404
+       Apply from mainline
 
5405
+       2013-12-05  Alan Modra  <amodra@gmail.com>
 
5406
+       * configure.ac (BUILD_CXXFLAGS) Don't use ALL_CXXFLAGS for
 
5407
+       build != host.
 
5408
+       <recursive call for build != host>: Clear GMPINC.  Don't bother
 
5409
+       saving CFLAGS.
 
5410
+       * configure: Regenerate.
 
5411
+
 
5412
+2013-12-08  Uros Bizjak  <ubizjak@gmail.com>
 
5413
+
 
5414
+       Backport from mainline
 
5415
+       2013-12-06  Uros Bizjak  <ubizjak@gmail.com>
 
5416
+
 
5417
+       PR target/59405
 
5418
+       * config/i386/i386.c (type_natural_mode): Properly handle
 
5419
+       size 8 for !TARGET_64BIT.
 
5420
+
 
5421
+2013-12-07  Ralf Corsépius  <ralf.corsepius@rtems.org>
 
5422
+
 
5423
+       * config.gcc (microblaze*-*-rtems*): Add TARGET_BIG_ENDIAN_DEFAULT.
 
5424
+
 
5425
+2013-12-06  Jakub Jelinek  <jakub@redhat.com>
 
5426
+
 
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.
 
5430
+
 
5431
+2013-12-06  Oleg Endo  <olegendo@gcc.gnu.org>
 
5432
+
 
5433
+       Backport from mainline
 
5434
+       2013-11-26  Oleg Endo  <olegendo@gcc.gnu.org>
 
5435
+
 
5436
+       PR target/58314
 
5437
+       PR target/50751
 
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
 
5446
+       predicate.
 
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.
 
5453
+
 
5454
+2013-12-06  Richard Biener  <rguenther@suse.de>
 
5455
+
 
5456
+       Backport from mainline
 
5457
+       2013-11-29  Richard Biener  <rguenther@suse.de>
 
5458
+
 
5459
+       PR tree-optimization/59334
 
5460
+       * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug
 
5461
+       in previous commit.
 
5462
+
 
5463
+       2013-11-28  Richard Biener  <rguenther@suse.de>
 
5464
+
 
5465
+       PR tree-optimization/59330
 
5466
+       * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify
 
5467
+       and fix delayed marking of free calls not necessary.
 
5468
+
 
5469
+2013-12-06  Richard Biener  <rguenther@suse.de>
 
5470
+
 
5471
+       Backport from mainline
 
5472
+       2013-11-27  Richard Biener  <rguenther@suse.de>
 
5473
+
 
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.
 
5477
+
 
5478
+       2013-11-19  Richard Biener  <rguenther@suse.de>
 
5479
+
 
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.
 
5484
+
 
5485
+       2013-09-05  Richard Biener  <rguenther@suse.de>
 
5486
+
 
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.
 
5494
+
 
5495
+2013-12-06  Oleg Endo  <olegendo@gcc.gnu.org>
 
5496
+
 
5497
+       PR target/51244
 
5498
+       PR target/59343
 
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.
 
5501
+
 
5502
+2013-12-05  Richard Biener  <rguenther@suse.de>
 
5503
+
 
5504
+       Backport from mainline
 
5505
+       2013-11-19  Richard Biener  <rguenther@suse.de>
 
5506
+
 
5507
+       PR middle-end/58956
 
5508
+       * tree-ssa-ter.c (find_replaceable_in_bb): Avoid forwarding
 
5509
+       loads into stmts that may clobber it.
 
5510
+
 
5511
+2013-12-04  Jakub Jelinek  <jakub@redhat.com>
 
5512
+
 
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.
 
5516
+
 
5517
+2013-12-04  Jakub Jelinek  <jakub@redhat.com>
 
5518
+           Uros Bizjak  <ubizjak@gmail.com>
 
5519
+
 
5520
+       PR target/59163
 
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.
 
5544
+
 
5545
+2013-12-03  Jakub Jelinek  <jakub@redhat.com>
 
5546
+
 
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.
 
5553
+
 
5554
+       PR target/58864
 
5555
+       * optabs.c (emit_conditional_move): Save and restore
 
5556
+       pending_stack_adjust and stack_pointer_delta if cmove can't be used.
 
5557
+
 
5558
+2013-12-02  Jakub Jelinek  <jakub@redhat.com>
 
5559
+
 
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
 
5563
+       with vr1max.
 
5564
+
 
5565
+2013-12-02  Richard Biener  <rguenther@suse.de>
 
5566
+
 
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.
 
5571
+
 
5572
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
5573
+           Marc Glisse  <marc.glisse@inria.fr>
 
5574
+
 
5575
+       PR middle-end/59037
 
5576
+       * fold-const.c (fold_indirect_ref_1): Don't create out-of-bounds
 
5577
+       BIT_FIELD_REF.
 
5578
+       * gimplify.c (gimple_fold_indirect_ref): Same.
 
5579
+
 
5580
+2013-12-01  Eric Botcazou  <ebotcazou@adacore.com>
 
5581
+
 
5582
+       * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an
 
5583
+       identifier node.
 
5584
+
 
5585
+2013-12-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
5586
+
 
5587
+       * expr.c (emit_group_store): Fix off-by-one BITFIELD_END argument.
 
5588
+
 
5589
+2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
5590
+
 
5591
+       Backport from mainline
 
5592
+       2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
5593
+
 
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.
 
5598
+
 
5599
+2013-11-28  Uros Bizjak  <ubizjak@gmail.com>
 
5600
+
 
5601
+       Backport from mainline
 
5602
+       2013-11-27  Uros Bizjak  <ubizjak@gmail.com>
 
5603
+                   Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
 
5604
+
 
5605
+       PR target/56788
 
5606
+       * gcc.target/i386/xop-frczX.c: New test.
 
5607
+
 
5608
+2013-11-28  Terry Guo  <terry.guo@arm.com>
 
5609
+
 
5610
+       Backport mainline r205391
 
5611
+       2013-11-26  Terry Guo  <terry.guo@arm.com>
 
5612
+
 
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.
 
5617
+
 
5618
+2013-11-27  Jakub Jelinek  <jakub@redhat.com>
 
5619
+
 
5620
+       Backported from mainline
 
5621
+       2013-11-26  Jakub Jelinek  <jakub@redhat.com>
 
5622
+
 
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.
 
5627
+
 
5628
+2013-11-27  Eric Botcazou  <ebotcazou@adacore.com>
 
5629
+
 
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.
 
5633
+
 
5634
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5635
+
 
5636
+       Backport from mainline
 
5637
+       2013-09-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5638
+
 
5639
+       * config/sparc/t-rtems: Add leon3 multilibs.
 
5640
+
 
5641
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5642
+
 
5643
+       Backport from mainline
 
5644
+       2013-08-09  Eric Botcazou  <ebotcazou@adacore.com>
 
5645
+
 
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
 
5650
+       sparc*-*-* block.
 
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.
 
5662
+
 
5663
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5664
+
 
5665
+       Backport from mainline
 
5666
+       2013-07-23  Eric Botcazou  <ebotcazou@adacore.com>
 
5667
+
 
5668
+       * doc/invoke.texi (SPARC Options): Document new leon3 processor value.
 
5669
+
 
5670
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5671
+
 
5672
+       Backport from mainline
 
5673
+       2013-07-22  Eric Botcazou  <ebotcazou@adacore.com>
 
5674
+
 
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.
 
5707
+
 
5708
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5709
+
 
5710
+       Backport from mainline
 
5711
+       2013-04-10  Steven Bosscher  <steven@gcc.gnu.org>
 
5712
+
 
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.
 
5723
+
 
5724
+2013-11-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
5725
+
 
5726
+       Backport from mainline
 
5727
+       2013-05-28  Eric Botcazou  <ebotcazou@adacore.com>
 
5728
+
 
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.
 
5742
+
 
5743
+2013-11-22  Eric Botcazou  <ebotcazou@adacore.com>
 
5744
+
 
5745
+       * print-rtl.c (print_rtx) <case MEM>: Output a space if no MEM_EXPR.
 
5746
+
 
5747
+2013-11-21  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
 
5748
+
 
5749
+       PR bootstrap/57683
 
5750
+       Backport from mainline: r197467 and r198999.
 
5751
+       2013-04-03  Jeff Law  <law@redhat.com>
 
5752
+
 
5753
+       * Makefile.in (lra-constraints.o): Depend on $(OPTABS_H).
 
5754
+       (lra-eliminations.o): Likewise.
 
5755
+
 
5756
+       2013-05-16  Jeff Law  <law@redhat.com>
 
5757
+
 
5758
+       * Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H).
 
5759
+
 
5760
+2013-11-20  Eric Botcazou  <ebotcazou@adacore.com>
 
5761
+
 
5762
+       PR target/59207
 
5763
+       * config/sparc/sparc.c (sparc_fold_builtin) <case CODE_FOR_pdist_vis>:
 
5764
+       Make sure neg2_ovf is set before being used.
 
5765
+
 
5766
+2013-11-20  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
5767
+           Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
5768
+
 
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
 
5774
+       two SETs).
 
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
 
5778
+       "noreturn".
 
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
 
5789
+       check.
 
5790
+
 
5791
+2013-11-19  Uros Bizjak  <ubizjak@gmail.com>
 
5792
+
 
5793
+       Backport from mainline
 
5794
+       2013-11-18  Uros Bizjak  <ubizjak@gmail.com>
 
5795
+
 
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.
 
5805
+
 
5806
+       Backport from mainline
 
5807
+       2013-11-17  Uros Bizjak  <ubizjak@gmail.com>
 
5808
+
 
5809
+       PR target/59153
 
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.
 
5815
+
 
5816
+2013-11-19  Richard Biener  <rguenther@suse.de>
 
5817
+
 
5818
+       Backport from mainline
 
5819
+       2013-11-07  Richard Biener  <rguenther@suse.de>
 
5820
+
 
5821
+       * tree-dfa.c (get_ref_base_and_extent): Fix casting.
 
5822
+
 
5823
+2013-11-19  Richard Biener  <rguenther@suse.de>
 
5824
+
 
5825
+       PR tree-optimization/57517
 
5826
+       * tree-predcom.c (combinable_refs_p): Verify the combination
 
5827
+       is always executed when the refs are.
 
5828
+
 
5829
+2013-11-19  Richard Biener  <rguenther@suse.de>
 
5830
+
 
5831
+       Backport from mainline
 
5832
+       2013-11-05  Richard Biener  <rguenther@suse.de>
 
5833
+
 
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).
 
5839
+
 
5840
+2013-11-18  Richard Biener  <rguenther@suse.de>
 
5841
+
 
5842
+       Backport from mainline
 
5843
+       2013-10-21  Richard Biener  <rguenther@suse.de>
 
5844
+
 
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.
 
5848
+
 
5849
+       2013-10-21  Richard Biener  <rguenther@suse.de>
 
5850
+
 
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).
 
5854
+
 
5855
+       2013-11-06  Richard Biener  <rguenther@suse.de>
 
5856
+
 
5857
+       PR tree-optimization/58653
 
5858
+       * tree-predcom.c (ref_at_iteration): Rewrite to generate
 
5859
+       a MEM_REF.
 
5860
+       (prepare_initializers_chain): Adjust.
 
5861
+
 
5862
+       PR tree-optimization/59047
 
5863
+       * tree-predcom.c (ref_at_iteration): Handle bitfield accesses
 
5864
+       properly.
 
5865
+
 
5866
+       2013-10-15  Richard Biener  <rguenther@suse.de>
 
5867
+
 
5868
+       PR tree-optimization/58143
 
5869
+       * tree-ssa-loop-im.c (arith_code_with_undefined_signed_overflow):
 
5870
+       New function.
 
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.
 
5875
+
 
5876
+2013-11-14  Uros Bizjak  <ubizjak@gmail.com>
 
5877
+
 
5878
+       Backport from mainline
 
5879
+       2013-11-10  Uros Bizjak  <ubizjak@gmail.com>
 
5880
+
 
5881
+       * mode-switching.c (optimize_mode_switching): Mark block as
 
5882
+       nontransparent, if last_mode at block exit is different from no_mode.
 
5883
+
 
5884
+       Backport from mainline
 
5885
+       2013-11-06  Uros Bizjak  <ubizjak@gmail.com>
 
5886
+
 
5887
+       PR target/59021
 
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.
 
5892
+
 
5893
+2013-11-14  Jakub Jelinek  <jakub@redhat.com>
 
5894
+           Uros Bizjak  <ubizjak@gmail.com>
 
5895
+
 
5896
+       PR target/59101
 
5897
+       * config/i386/i386.md (*anddi_2): Only allow CCZmode if
 
5898
+       operands[2] satisfies_constraint_Z that might have bit 31 set.
 
5899
+
 
5900
+2013-11-12  H.J. Lu  <hongjiu.lu@intel.com>
 
5901
+
 
5902
+       Backported from mainline
 
5903
+       2013-11-12  H.J. Lu  <hongjiu.lu@intel.com>
 
5904
+
 
5905
+       PR target/59088
 
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.
 
5909
+
 
5910
+2013-11-11  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
5911
+
 
5912
+       Backported from mainline
 
5913
+       2013-10-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
5914
+
 
5915
+       PR target/58854
 
5916
+       * config/arm/arm.c (arm_expand_epilogue_apcs_frame): Emit blockage
 
5917
+
 
5918
+2013-11-11  Jakub Jelinek  <jakub@redhat.com>
 
5919
+
 
5920
+       Backported from mainline
 
5921
+       2013-11-06  Jakub Jelinek  <jakub@redhat.com>
 
5922
+
 
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.
 
5927
+
 
5928
+       2013-11-05  Jakub Jelinek  <jakub@redhat.com>
 
5929
+
 
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
 
5936
+       mode.
 
5937
+
 
5938
+2013-11-10  Karlson2k  <k2k@narod.ru>
 
5939
+           Kai Tietz  <ktietz@redhat.com>
 
5940
+
 
5941
+       Merged from trunk
 
5942
+       PR plugins/52872
 
5943
+       * configure.ac: Adding for exported symbols check
 
5944
+       and for rdynamic-check executable-extension.
 
5945
+       * configure: Regenerated.
 
5946
+
 
5947
+2013-11-07  H.J. Lu  <hongjiu.lu@intel.com>
 
5948
+
 
5949
+       PR target/59034
 
5950
+       * config/i386/i386.md (push peepholer/splitter): Use Pmode
 
5951
+       with stack_pointer_rtx.
 
5952
+
 
5953
+2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
 
5954
+
 
5955
+       * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos.
 
5956
+
 
5957
+2013-11-05  Jakub Jelinek  <jakub@redhat.com>
 
5958
+
 
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
 
5963
+       callers.
 
5964
+       (ipcp_transform_function): Likewise.  Punt if size of access
 
5965
+       is different from TYPE_SIZE on v->value's type.
 
5966
+
 
5967
+2013-11-03  H.J. Lu  <hongjiu.lu@intel.com>
 
5968
+
 
5969
+       Backport from mainline
 
5970
+       2013-10-12  H.J. Lu  <hongjiu.lu@intel.com>
 
5971
+
 
5972
+       PR target/58690
 
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.
 
5977
+
 
5978
+2013-10-29  Uros Bizjak  <ubizjak@gmail.com>
 
5979
+
 
5980
+       Backport from mainline
 
5981
+       2013-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
 
5982
+
 
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.
 
5986
+
 
5987
+2013-10-29  Martin Jambor  <mjambor@suse.cz>
 
5988
+
 
5989
+       PR middle-end/58789
 
5990
+       Backport from mainline
 
5991
+       2013-05-09  Martin Jambor  <mjambor@suse.cz>
 
5992
+
 
5993
+       PR lto/57084
 
5994
+       * gimple-fold.c (canonicalize_constructor_val): Call
 
5995
+       cgraph_get_create_real_symbol_node instead of cgraph_get_create_node.
 
5996
+
 
5997
+       Backport from mainline
 
5998
+       2013-03-16  Jan Hubicka  <jh@suse.cz>
 
5999
+
 
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.
 
6005
+
 
6006
+2013-10-28  Tom de Vries  <tom@codesourcery.com>
 
6007
+
 
6008
+       * cfgexpand.c (gimple_expand_cfg): Remove test for parm_birth_insn.
 
6009
+       Don't commit insertions after NOTE_INSN_FUNCTION_BEG.
 
6010
+
 
6011
+2013-10-26  Uros Bizjak  <ubizjak@gmail.com>
 
6012
+
 
6013
+       Backport from mainline
 
6014
+       2013-10-22  Uros Bizjak  <ubizjak@gmail.com>
 
6015
+
 
6016
+       PR target/58779
 
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.
 
6025
+
 
6026
+2013-10-26  Uros Bizjak  <ubizjak@gmail.com>
 
6027
+
 
6028
+       Backport from mainline
 
6029
+       2013-10-19  Uros Bizjak  <ubizjak@gmail.com>
 
6030
+
 
6031
+       PR target/58792
 
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.
 
6035
+
 
6036
+2013-08-25  Richard Henderson  <rth@twiddle.net>
 
6037
+
 
6038
+       PR rtl/58542
 
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.
 
6044
+
 
6045
+2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
 
6046
+
 
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.
 
6050
+
 
6051
+2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
 
6052
+
 
6053
+       * recog.c (search_ofs): New static variable moved from...
 
6054
+       (peep2_find_free_register): ...here.
 
6055
+       (peephole2_optimize): Initialize it.
 
6056
+
 
6057
+2013-10-24  David Edelsohn  <dje.gcc@gmail.com>
 
6058
+
 
6059
+       Backport from mainline
 
6060
+       2013-10-23  David Edelsohn  <dje.gcc@gmail.com>
 
6061
+
 
6062
+       PR target/58838
 
6063
+       * config/rs6000/rs6000.md (mulsi3_internal1 and splitter): Add
 
6064
+       TARGET_32BIT final condition.
 
6065
+       (mulsi3_internal2 and splitter): Same.
 
6066
+
 
6067
+2013-10-23  Tom de Vries  <tom@codesourcery.com>
 
6068
+
 
6069
+       PR tree-optimization/58805
 
6070
+       * tree-ssa-tail-merge.c (stmt_local_def): Add gimple_vdef check.
 
6071
+
 
6072
+2013-10-23  Richard Biener  <rguenther@suse.de>
 
6073
+
 
6074
+       Backport from mainline
 
6075
+       2013-06-24  Richard Biener  <rguenther@suse.de>
 
6076
+
 
6077
+       PR tree-optimization/57488
 
6078
+       * tree-ssa-pre.c (insert): Clear NEW sets before each iteration.
 
6079
+
 
6080
+2013-10-16  Ganesh Gopalasubramanian  <Ganesh.Gopalasubramanian@amd.com>
 
6081
+
 
6082
+       Backport from mainline
 
6083
+       2013-10-16  Ganesh Gopalasubramanian
 
6084
+                   <Ganesh.Gopalasubramanian@amd.com>
 
6085
+
 
6086
+       * config/i386/i386.c (ix86_option_override_internal): Enable FMA4
 
6087
+       for AMD bdver3.
 
6088
+
 
6089
 2013-10-16  Release Manager
 
6090
 
 
6091
        * GCC 4.8.2 released.
 
6092
@@ -639,7 +1779,7 @@
 
6093
 2013-07-31  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
6094
 
 
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>
 
6098
 
 
6099
        * config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define.
 
6100
 
 
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)
 
6105
@@ -0,0 +1,11 @@
 
6106
+/* { dg-do compile } */
 
6107
+/* { dg-require-effective-target arm_thumb1_ok } */
 
6108
+/* { dg-options "-mthumb -fpic -msingle-pic-base" } */
 
6109
+
 
6110
+int g_test;
 
6111
+
 
6112
+int
 
6113
+foo (int par)
 
6114
+{
 
6115
+    g_test = par;
 
6116
+}
 
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)
 
6121
@@ -0,0 +1,25 @@
 
6122
+/* Test the `vst1Q_laneu64' ARM Neon intrinsic.  */
 
6123
+
 
6124
+/* Detect ICE in the case of unaligned memory address.  */
 
6125
+
 
6126
+/* { dg-do compile } */
 
6127
+/* { dg-require-effective-target arm_neon_ok } */
 
6128
+/* { dg-add-options arm_neon } */
 
6129
+
 
6130
+#include "arm_neon.h"
 
6131
+
 
6132
+unsigned char dummy_store[1000];
 
6133
+
 
6134
+void
 
6135
+foo (char* addr)
 
6136
+{
 
6137
+  uint8x16_t vdata = vld1q_u8 (addr);
 
6138
+  vst1q_lane_u64 ((uint64_t*) &dummy_store, vreinterpretq_u64_u8 (vdata), 0);
 
6139
+}
 
6140
+
 
6141
+uint64_t
 
6142
+bar (uint64x2_t vdata)
 
6143
+{
 
6144
+  vdata = vld1q_lane_u64 ((uint64_t*) &dummy_store, vdata, 0);
 
6145
+  return vgetq_lane_u64 (vdata, 0);
 
6146
+}
 
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)
 
6151
@@ -0,0 +1,11 @@
 
6152
+/* { dg-do compile } */
 
6153
+/* { dg-require-effective-target arm_thumb1_ok } */
 
6154
+/* { dg-options "-mthumb -fpic -mpic-register=9" } */
 
6155
+
 
6156
+int g_test;
 
6157
+
 
6158
+int
 
6159
+foo (int par)
 
6160
+{
 
6161
+    g_test = par;
 
6162
+}
 
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)
 
6167
@@ -0,0 +1,29 @@
 
6168
+/* { dg-do compile } */
 
6169
+/* { dg-options "-g -fPIC" } */
 
6170
+
 
6171
+void *v;
 
6172
+void a (void *x) { }
 
6173
+void b (void) { }
 
6174
+                       /* line 7.  */
 
6175
+int                    /* line 8.  */
 
6176
+main (int argc)        /* line 9.  */
 
6177
+{                      /* line 10.  */
 
6178
+  if (argc == 12345)   /* line 11.  */
 
6179
+    {
 
6180
+      a (v);
 
6181
+      return 1;
 
6182
+    }
 
6183
+  b ();
 
6184
+
 
6185
+  return 0;
 
6186
+}
 
6187
+
 
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" } } */
 
6191
+
 
6192
+/* The loc at the start of the prologue.  */
 
6193
+/* { dg-final { scan-assembler-times "\.loc 1 10 0" 1 } } */
 
6194
+
 
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)
 
6201
@@ -0,0 +1,15 @@
 
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 } */
 
6206
+
 
6207
+double foo (double a)
 
6208
+{
 
6209
+  if (a > 3.0)
 
6210
+    return  __builtin_round (a);
 
6211
+
 
6212
+  return 0.0;
 
6213
+}
 
6214
+
 
6215
+/* { dg-final { scan-assembler-times "vrinta.f64\td\[0-9\]+" 1 } } */
 
6216
+
 
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)
 
6221
@@ -0,0 +1,61 @@
 
6222
+/* { dg-do run } */
 
6223
+/* { dg-require-effective-target arm_neon } */
 
6224
+/* { dg-options "-O2" } */
 
6225
+/* { dg-add-options arm_neon } */
 
6226
+
 
6227
+#include <arm_neon.h>
 
6228
+#include <stdlib.h>
 
6229
+
 
6230
+struct __attribute__ ((aligned(8))) _v16u8_ {
 
6231
+  uint8x16_t val;
 
6232
+  _v16u8_( const int16x8_t &src) { val = vreinterpretq_u8_s16(src); }
 
6233
+  operator int16x8_t () const { return vreinterpretq_s16_u8(val); }
 
6234
+};
 
6235
+typedef struct _v16u8_ v16u8;
 
6236
+
 
6237
+struct __attribute__ ((aligned(4))) _v8u8_ {
 
6238
+  uint8x8_t val;
 
6239
+  _v8u8_( const uint8x8_t &src) { val = src; }
 
6240
+  operator int16x4_t () const { return vreinterpret_s16_u8(val); }
 
6241
+};
 
6242
+typedef struct _v8u8_ v8u8;
 
6243
+
 
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;
 
6249
+
 
6250
+static inline __attribute__((always_inline)) v8u8 zero_64(){ return vdup_n_u8( 0 ); }
 
6251
+
 
6252
+static inline __attribute__((always_inline)) v8i16 loadlo_8i16( cv8i16* p ){
 
6253
+  return vcombine_s16( vld1_s16( (cv1i16 *)p ), zero_64() );
 
6254
+}
 
6255
+static inline __attribute__((always_inline)) v8i16 _loadlo_8i16( cv8i16* p, int offset ){
 
6256
+  return loadlo_8i16( (cv8i16*)(&((cv1u8*)p)[offset]) );
 
6257
+}
 
6258
+
 
6259
+void __attribute__((noinline))
 
6260
+test(unsigned short *_Inp, int32_t *_Out,
 
6261
+     unsigned int s1v, unsigned int dv0,
 
6262
+     unsigned int smask_v)
 
6263
+{
 
6264
+  int32x4_t c = vdupq_n_s32(0);
 
6265
+
 
6266
+  for(unsigned int sv=0 ; sv!=dv0 ; sv=(sv+s1v)&smask_v )
 
6267
+    {
 
6268
+      int32x4_t s;
 
6269
+      s = vmovl_s16( vget_low_s16( _loadlo_8i16( (cv8i16*) _Inp, sv ) ) );
 
6270
+      c = vaddq_s32( c, s );
 
6271
+    }
 
6272
+  vst1q_s32( _Out, c );
 
6273
+}
 
6274
+
 
6275
+main()
 
6276
+{
 
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)
 
6281
+    abort();
 
6282
+}
 
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)
 
6287
@@ -0,0 +1,35 @@
 
6288
+/* { dg-do compile } */
 
6289
+/* { dg-options "-mthumb -mcpu=cortex-m4 -fprefetch-loop-arrays -O2" }  */
 
6290
+
 
6291
+typedef struct genxWriter_rec * genxWriter;
 
6292
+typedef unsigned char * utf8;
 
6293
+typedef const unsigned char * constUtf8;
 
6294
+
 
6295
+int genxScrubText(genxWriter w, constUtf8 in, utf8 out)
 
6296
+{
 
6297
+  int problems = 0;
 
6298
+  constUtf8 last = in;
 
6299
+
 
6300
+  while (*in)
 
6301
+  {
 
6302
+    int c = genxNextUnicodeChar(&in);
 
6303
+    if (c == -1)
 
6304
+    {
 
6305
+      problems++;
 
6306
+      last = in;
 
6307
+      continue;
 
6308
+    }
 
6309
+
 
6310
+    if (!isXMLChar(w, c))
 
6311
+    {
 
6312
+      problems++;
 
6313
+      last = in;
 
6314
+      continue;
 
6315
+    }
 
6316
+
 
6317
+    while (last < in)
 
6318
+      *out++ = *last++;
 
6319
+  }
 
6320
+  *out = 0;
 
6321
+  return problems;
 
6322
+}
 
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)
 
6327
@@ -0,0 +1,21 @@
 
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" } */
 
6331
+
 
6332
+extern void exit (int);
 
6333
+extern void abort (void);
 
6334
+
 
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;
 
6339
+
 
6340
+int
 
6341
+main (void)
 
6342
+{
 
6343
+  r = a / b;
 
6344
+  /* Allow error up to 2ulp.  */
 
6345
+  if (__builtin_fabsl (r - expected) > 0x1p-1073L)
 
6346
+    abort ();
 
6347
+  exit (0);
 
6348
+}
 
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)
 
6353
@@ -1,8 +1,14 @@
 
6354
 /* { dg-do compile } */
 
6355
 /* { dg-options "-O2" } */
 
6356
 
 
6357
-#include "../../../config/aarch64/arm_neon.h"
 
6358
+#include <arm_neon.h>
 
6359
 
 
6360
+/* Used to force a variable to a SIMD register.  */
 
6361
+#define force_simd(V1)   asm volatile ("mov %d0, %1.d[0]"      \
 
6362
+          : "=w"(V1)                                           \
 
6363
+          : "w"(V1)                                            \
 
6364
+          : /* No clobbers */);
 
6365
+
 
6366
 /* { dg-final { scan-assembler-times "\\tadd\\tx\[0-9\]+" 2 } } */
 
6367
 
 
6368
 uint64x1_t
 
6369
@@ -31,7 +37,12 @@
 
6370
 uint64x1_t
 
6371
 test_vceqd_s64 (int64x1_t a, int64x1_t b)
 
6372
 {
 
6373
-  return vceqd_s64 (a, b);
 
6374
+  uint64x1_t res;
 
6375
+  force_simd (a);
 
6376
+  force_simd (b);
 
6377
+  res = vceqd_s64 (a, b);
 
6378
+  force_simd (res);
 
6379
+  return res;
 
6380
 }
 
6381
 
 
6382
 /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
 
6383
@@ -39,7 +50,11 @@
 
6384
 uint64x1_t
 
6385
 test_vceqzd_s64 (int64x1_t a)
 
6386
 {
 
6387
-  return vceqzd_s64 (a);
 
6388
+  uint64x1_t res;
 
6389
+  force_simd (a);
 
6390
+  res = vceqzd_s64 (a);
 
6391
+  force_simd (res);
 
6392
+  return res;
 
6393
 }
 
6394
 
 
6395
 /* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
 
6396
@@ -47,21 +62,36 @@
 
6397
 uint64x1_t
 
6398
 test_vcged_s64 (int64x1_t a, int64x1_t b)
 
6399
 {
 
6400
-  return vcged_s64 (a, b);
 
6401
+  uint64x1_t res;
 
6402
+  force_simd (a);
 
6403
+  force_simd (b);
 
6404
+  res = vcged_s64 (a, b);
 
6405
+  force_simd (res);
 
6406
+  return res;
 
6407
 }
 
6408
 
 
6409
 uint64x1_t
 
6410
 test_vcled_s64 (int64x1_t a, int64x1_t b)
 
6411
 {
 
6412
-  return vcled_s64 (a, b);
 
6413
+  uint64x1_t res;
 
6414
+  force_simd (a);
 
6415
+  force_simd (b);
 
6416
+  res = vcled_s64 (a, b);
 
6417
+  force_simd (res);
 
6418
+  return res;
 
6419
 }
 
6420
 
 
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.  */
 
6424
 
 
6425
 uint64x1_t
 
6426
 test_vcgezd_s64 (int64x1_t a)
 
6427
 {
 
6428
-  return vcgezd_s64 (a);
 
6429
+  uint64x1_t res;
 
6430
+  force_simd (a);
 
6431
+  res = vcgezd_s64 (a);
 
6432
+  force_simd (res);
 
6433
+  return res;
 
6434
 }
 
6435
 
 
6436
 /* { dg-final { scan-assembler-times "\\tcmhs\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
 
6437
@@ -69,7 +99,12 @@
 
6438
 uint64x1_t
 
6439
 test_vcged_u64 (uint64x1_t a, uint64x1_t b)
 
6440
 {
 
6441
-  return vcged_u64 (a, b);
 
6442
+  uint64x1_t res;
 
6443
+  force_simd (a);
 
6444
+  force_simd (b);
 
6445
+  res = vcged_u64 (a, b);
 
6446
+  force_simd (res);
 
6447
+  return res;
 
6448
 }
 
6449
 
 
6450
 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */
 
6451
@@ -77,13 +112,23 @@
 
6452
 uint64x1_t
 
6453
 test_vcgtd_s64 (int64x1_t a, int64x1_t b)
 
6454
 {
 
6455
-  return vcgtd_s64 (a, b);
 
6456
+  uint64x1_t res;
 
6457
+  force_simd (a);
 
6458
+  force_simd (b);
 
6459
+  res = vcgtd_s64 (a, b);
 
6460
+  force_simd (res);
 
6461
+  return res;
 
6462
 }
 
6463
 
 
6464
 uint64x1_t
 
6465
 test_vcltd_s64 (int64x1_t a, int64x1_t b)
 
6466
 {
 
6467
-  return vcltd_s64 (a, b);
 
6468
+  uint64x1_t res;
 
6469
+  force_simd (a);
 
6470
+  force_simd (b);
 
6471
+  res = vcltd_s64 (a, b);
 
6472
+  force_simd (res);
 
6473
+  return res;
 
6474
 }
 
6475
 
 
6476
 /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
 
6477
@@ -91,7 +136,11 @@
 
6478
 uint64x1_t
 
6479
 test_vcgtzd_s64 (int64x1_t a)
 
6480
 {
 
6481
-  return vcgtzd_s64 (a);
 
6482
+  uint64x1_t res;
 
6483
+  force_simd (a);
 
6484
+  res = vcgtzd_s64 (a);
 
6485
+  force_simd (res);
 
6486
+  return res;
 
6487
 }
 
6488
 
 
6489
 /* { dg-final { scan-assembler-times "\\tcmhi\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
 
6490
@@ -99,7 +148,12 @@
 
6491
 uint64x1_t
 
6492
 test_vcgtd_u64 (uint64x1_t a, uint64x1_t b)
 
6493
 {
 
6494
-  return vcgtd_u64 (a, b);
 
6495
+  uint64x1_t res;
 
6496
+  force_simd (a);
 
6497
+  force_simd (b);
 
6498
+  res = vcgtd_u64 (a, b);
 
6499
+  force_simd (res);
 
6500
+  return res;
 
6501
 }
 
6502
 
 
6503
 /* { dg-final { scan-assembler-times "\\tcmle\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */
 
6504
@@ -107,15 +161,24 @@
 
6505
 uint64x1_t
 
6506
 test_vclezd_s64 (int64x1_t a)
 
6507
 {
 
6508
-  return vclezd_s64 (a);
 
6509
+  uint64x1_t res;
 
6510
+  force_simd (a);
 
6511
+  res = vclezd_s64 (a);
 
6512
+  force_simd (res);
 
6513
+  return res;
 
6514
 }
 
6515
 
 
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.  */
 
6519
 
 
6520
 uint64x1_t
 
6521
 test_vcltzd_s64 (int64x1_t a)
 
6522
 {
 
6523
-  return vcltzd_s64 (a);
 
6524
+  uint64x1_t res;
 
6525
+  force_simd (a);
 
6526
+  res = vcltzd_s64 (a);
 
6527
+  force_simd (res);
 
6528
+  return res;
 
6529
 }
 
6530
 
 
6531
 /* { dg-final { scan-assembler-times "\\tdup\\tb\[0-9\]+, v\[0-9\]+\.b" 2 } } */
 
6532
@@ -179,13 +242,23 @@
 
6533
 int64x1_t
 
6534
 test_vtst_s64 (int64x1_t a, int64x1_t b)
 
6535
 {
 
6536
-  return vtstd_s64 (a, b);
 
6537
+  uint64x1_t res;
 
6538
+  force_simd (a);
 
6539
+  force_simd (b);
 
6540
+  res = vtstd_s64 (a, b);
 
6541
+  force_simd (res);
 
6542
+  return res;
 
6543
 }
 
6544
 
 
6545
 uint64x1_t
 
6546
 test_vtst_u64 (uint64x1_t a, uint64x1_t b)
 
6547
 {
 
6548
-  return vtstd_u64 (a, b);
 
6549
+  uint64x1_t res;
 
6550
+  force_simd (a);
 
6551
+  force_simd (b);
 
6552
+  res = vtstd_s64 (a, b);
 
6553
+  force_simd (res);
 
6554
+  return res;
 
6555
 }
 
6556
 
 
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);
 
6560
 }
 
6561
 
 
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.  */
 
6565
 
 
6566
+/* { dg-final { scan-assembler "\\tasr\\tx\[0-9\]+" } } */
 
6567
+
 
6568
 int64x1_t
 
6569
 test_vshrd_n_s64 (int64x1_t a)
 
6570
 {
 
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)
 
6575
@@ -0,0 +1,24 @@
 
6576
+/* { dg-do run } */
 
6577
+/* { dg-options "-mmmx -mfpmath=387" } */
 
6578
+
 
6579
+#include "mmx-check.h"
 
6580
+
 
6581
+#include <mmintrin.h>
 
6582
+
 
6583
+typedef float float32x2_t __attribute__ ((vector_size (8)));
 
6584
+
 
6585
+float
 
6586
+foo32x2_be (float32x2_t x)
 
6587
+{
 
6588
+  _mm_empty ();
 
6589
+  return x[1];
 
6590
+}
 
6591
+
 
6592
+static void
 
6593
+mmx_test (void)
 
6594
+{
 
6595
+  float32x2_t b = { 0.0f, 1.0f };
 
6596
+
 
6597
+  if (foo32x2_be (b) != 1.0f)
 
6598
+    abort ();
 
6599
+}
 
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)
 
6604
@@ -1,5 +1,5 @@
 
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" } */
 
6608
 
 
6609
 typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
 
6610
 
 
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)
 
6615
@@ -0,0 +1,11 @@
 
6616
+/* { dg-do compile } */
 
6617
+/* { dg-options "-O" } */
 
6618
+
 
6619
+register void *hfp __asm__("%ebp");    /* { dg-message "note: for" } */
 
6620
+
 
6621
+extern void g(void *);
 
6622
+
 
6623
+void f(int x)                  /* { dg-error "frame pointer required" } */
 
6624
+{
 
6625
+  g(__builtin_alloca(x));
 
6626
+}
 
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)
 
6631
@@ -0,0 +1,17 @@
 
6632
+/* PR middle-end/58956 */
 
6633
+/* PR middle-end/59470 */
 
6634
+/* { dg-do run } */
 
6635
+/* { dg-options "-O2" } */
 
6636
+
 
6637
+int a, b, d[1024];
 
6638
+
 
6639
+int
 
6640
+main ()
 
6641
+{
 
6642
+  int c = a;
 
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 ();
 
6647
+  return 0;
 
6648
+}
 
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)
 
6653
@@ -0,0 +1,10 @@
 
6654
+/* { dg-do compile { target { ! { ia32 } } } } */
 
6655
+/* { dg-require-effective-target maybe_x32 } */
 
6656
+/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=short" } */
 
6657
+
 
6658
+extern int foo(int, ...);
 
6659
+int bar(void) {
 
6660
+  long double l = 1.2345E6;
 
6661
+  foo(0, l);
 
6662
+  return 0;
 
6663
+}
 
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)
 
6668
@@ -0,0 +1,14 @@
 
6669
+/* { dg-do compile { target { ! { ia32 } } } } */
 
6670
+/* { dg-require-effective-target maybe_x32 } */
 
6671
+/* { dg-options "-O2 -mx32 -maddress-mode=short" } */
 
6672
+
 
6673
+struct gomp_thread
 
6674
+{
 
6675
+  char foo[41];
 
6676
+};
 
6677
+extern __thread struct gomp_thread gomp_tls_data;
 
6678
+void
 
6679
+foo (void)
 
6680
+{
 
6681
+  __builtin_memset (&gomp_tls_data, '\0', sizeof (gomp_tls_data));
 
6682
+}
 
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)
 
6687
@@ -15,7 +15,7 @@
 
6688
 avx_test (void)
 
6689
 {
 
6690
   union256d u;
 
6691
-  double e [4] __attribute__ ((aligned (8))) = {0.0};
 
6692
+  double e [4] __attribute__ ((aligned (32))) = {0.0};
 
6693
 
 
6694
   u.x = _mm256_set_pd (39578.467285, 7856.342941, 85632.783567, 47563.234215);
 
6695
 
 
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)
 
6700
@@ -45,7 +45,17 @@
 
6701
   exit(0);
 
6702
 }
 
6703
 
 
6704
-int main()
 
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"));
 
6714
+
 
6715
+int real_main()
 
6716
 {
 
6717
   test();
 
6718
   return 0;
 
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)
 
6723
@@ -1,6 +1,6 @@
 
6724
 /* PR rtl-optimization/57003 */
 
6725
 /* { dg-do run } */
 
6726
-/* { dg-options "-O2" } */
 
6727
+/* { dg-options "-O2 -maccumulate-outgoing-args" } */
 
6728
 
 
6729
 #define N 2001
 
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)
 
6735
@@ -1,5 +1,5 @@
 
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" } */
 
6739
 
 
6740
 typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
 
6741
 
 
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)
 
6746
@@ -25,7 +25,7 @@
 
6747
 TEST (void)
 
6748
 {
 
6749
   union128d u;
 
6750
-  double e[2] __attribute__ ((aligned (8))) = {2134.3343,1234.635654};
 
6751
+  double e[2] __attribute__ ((aligned (16))) = {2134.3343,1234.635654};
 
6752
 
 
6753
   u.x = test (e);   
 
6754
 
 
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)
 
6759
@@ -0,0 +1,23 @@
 
6760
+/* { dg-do compile } */
 
6761
+/* { dg-options "-O2 -mavx -mvzeroupper" } */
 
6762
+
 
6763
+extern void abort (void);
 
6764
+
 
6765
+struct S {
 
6766
+  int i1;
 
6767
+  int i2;
 
6768
+  int i3;
 
6769
+};
 
6770
+
 
6771
+typedef double v4df  __attribute__ ((vector_size (32)));
 
6772
+
 
6773
+extern int foo (v4df, int i1, int i2, int i3, int i4, int i5, struct S s);
 
6774
+
 
6775
+void bar (v4df v, struct S s)
 
6776
+{
 
6777
+  int r = foo (v, 1, 2, 3, 4, 5, s);
 
6778
+  if (r)
 
6779
+    abort ();
 
6780
+}
 
6781
+
 
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)
 
6787
@@ -0,0 +1,10 @@
 
6788
+/* { dg-do compile { target { ! { ia32 } } } } */
 
6789
+/* { dg-require-effective-target maybe_x32 } */
 
6790
+/* { dg-options "-O -mx32 -mtune=corei7 -maddress-mode=long" } */
 
6791
+
 
6792
+extern int foo(int, ...);
 
6793
+int bar(void) {
 
6794
+  long double l = 1.2345E6;
 
6795
+  foo(0, l);
 
6796
+  return 0;
 
6797
+}
 
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)
 
6802
@@ -0,0 +1,12 @@
 
6803
+/* PR target/59839 */
 
6804
+/* { dg-do compile } */
 
6805
+/* { dg-options "-O0 -mavx2" } */
 
6806
+
 
6807
+#include <x86intrin.h>
 
6808
+
 
6809
+void
 
6810
+test (const float *x)
 
6811
+{
 
6812
+  __m256i i = _mm256_set1_epi32 (1);
 
6813
+  __m256 d = _mm256_i32gather_ps (x, i, 1);
 
6814
+}
 
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)
 
6819
@@ -0,0 +1,60 @@
 
6820
+/* { dg-do run } */
 
6821
+/* { dg-require-effective-target xop } */
 
6822
+/* { dg-options "-O2 -mxop" } */
 
6823
+
 
6824
+#include "xop-check.h"
 
6825
+
 
6826
+#include <x86intrin.h>
 
6827
+
 
6828
+void
 
6829
+check_mm_vmfrcz_sd (__m128d __A, __m128d __B)
 
6830
+{
 
6831
+  union128d a, b, c;
 
6832
+  double d[2];
 
6833
+
 
6834
+  a.x = __A;
 
6835
+  b.x = __B;
 
6836
+  c.x = _mm_frcz_sd (__A, __B);
 
6837
+  d[0] = b.a[0] - (int)b.a[0] ;
 
6838
+  d[1] = a.a[1];
 
6839
+  if (check_union128d (c, d))
 
6840
+    abort ();
 
6841
+}
 
6842
+
 
6843
+void
 
6844
+check_mm_vmfrcz_ss (__m128 __A, __m128 __B)
 
6845
+{
 
6846
+  union128 a, b, c;
 
6847
+  float f[4];
 
6848
+
 
6849
+  a.x = __A;
 
6850
+  b.x = __B;
 
6851
+  c.x = _mm_frcz_ss (__A, __B);
 
6852
+  f[0] = b.a[0] - (int)b.a[0] ;
 
6853
+  f[1] = a.a[1];
 
6854
+  f[2] = a.a[2];
 
6855
+  f[3] = a.a[3];
 
6856
+  if (check_union128 (c, f))
 
6857
+    abort ();
 
6858
+}
 
6859
+
 
6860
+static void
 
6861
+xop_test (void)
 
6862
+{
 
6863
+  union128 a, b;
 
6864
+  union128d c,d;
 
6865
+  int i;
 
6866
+
 
6867
+  for (i = 0; i < 4; i++)
 
6868
+    {
 
6869
+       a.a[i] = i + 3.5;
 
6870
+       b.a[i] = i + 7.9;
 
6871
+    }
 
6872
+  for (i = 0; i < 2; i++)
 
6873
+    {
 
6874
+       c.a[i] = i + 3.5;
 
6875
+       d.a[i] = i + 7.987654321;
 
6876
+    }
 
6877
+  check_mm_vmfrcz_ss (a.x, b.x);
 
6878
+  check_mm_vmfrcz_sd (c.x, d.x);
 
6879
+}
 
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)
 
6884
@@ -0,0 +1,36 @@
 
6885
+/* PR target/59625 */
 
6886
+/* { dg-do compile } */
 
6887
+/* { dg-options "-O2 -mtune=atom" } */
 
6888
+
 
6889
+int
 
6890
+foo (void)
 
6891
+{
 
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);
 
6912
+  return 0;
 
6913
+lab:
 
6914
+  return 1;
 
6915
+}
 
6916
+
 
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)
 
6925
@@ -25,7 +25,7 @@
 
6926
 TEST (void)
 
6927
 {
 
6928
   union128d u;
 
6929
-  double e[2] __attribute__ ((aligned (8))) = {0.0};
 
6930
+  double e[2] __attribute__ ((aligned (16))) = {0.0};
 
6931
 
 
6932
   u.x = _mm_set_pd (2134.3343,1234.635654);
 
6933
 
 
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)
 
6938
@@ -0,0 +1,33 @@
 
6939
+/* { dg-do compile } */
 
6940
+/* { dg-options "-O3 -mavx2" } */
 
6941
+
 
6942
+typedef unsigned int U32;
 
6943
+
 
6944
+struct sv {
 
6945
+  void* sv_any;
 
6946
+  U32 sv_refcnt;
 
6947
+  U32 sv_flags;
 
6948
+};
 
6949
+typedef struct sv SV;
 
6950
+
 
6951
+struct xrv {
 
6952
+  SV * xrv_rv;
 
6953
+};
 
6954
+typedef struct xrv XRV;
 
6955
+
 
6956
+extern XRV * PL_xrv_root;
 
6957
+
 
6958
+void
 
6959
+more_xrv (void)
 
6960
+{
 
6961
+  register XRV* xrv;
 
6962
+  register XRV* xrvend;
 
6963
+  xrv = PL_xrv_root;
 
6964
+  xrvend = &xrv[200 / sizeof (XRV) - 1];
 
6965
+  while (xrv < xrvend)
 
6966
+  {
 
6967
+    xrv->xrv_rv = (SV*)(xrv + 1);
 
6968
+    xrv++;
 
6969
+  }
 
6970
+  xrv->xrv_rv = 0;
 
6971
+}
 
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)
 
6976
@@ -1,5 +1,5 @@
 
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" } */
 
6980
 
 
6981
 typedef float __m256 __attribute__ ((__vector_size__ (32), __may_alias__));
 
6982
 
 
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)
 
6987
@@ -1,6 +1,6 @@
 
6988
 /* { dg-do compile } */
 
6989
 /* { dg-options "-O2" } */
 
6990
-/* { dg-final { scan-assembler-times "cmp" 4 } } */
 
6991
+/* { dg-final { scan-assembler-not "cmp" } } */
 
6992
 
 
6993
 extern void abort (void);
 
6994
 int c;
 
6995
@@ -34,39 +34,10 @@
 
6996
 }
 
6997
 #define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b)
 
6998
 
 
6999
-#define MINUSCC(T, t)  \
 
7000
-T minuscc##t (T a, T b)        \
 
7001
-{      \
 
7002
-  T difference = a - b;        \
 
7003
-  if (difference > a)  \
 
7004
-    abort ();          \
 
7005
-  return difference;   \
 
7006
-}
 
7007
-
 
7008
-#define DECCC(T, t)    \
 
7009
-T deccc##t (T a, T b)  \
 
7010
-{      \
 
7011
-  T difference = a - b;        \
 
7012
-  if (difference > a)  \
 
7013
-    c --;              \
 
7014
-  return difference;   \
 
7015
-}
 
7016
-
 
7017
-#define MINUSCCONLY(T, t)      \
 
7018
-void minuscconly##t (T a, T b) \
 
7019
-{      \
 
7020
-  T difference = a - b;        \
 
7021
-  if (difference > a)  \
 
7022
-    abort ();          \
 
7023
-}
 
7024
-
 
7025
 #define TEST(T, t)     \
 
7026
   PLUSCC(T, t)         \
 
7027
   PLUSCCONLY(T, t)     \
 
7028
-  INCCC(T, t)          \
 
7029
-  MINUSCC(T, t)                \
 
7030
-  MINUSCCONLY(T, t)    \
 
7031
-  DECCC(T, t)
 
7032
+  INCCC(T, t)
 
7033
 
 
7034
 TEST (unsigned long,  l)
 
7035
 TEST (unsigned int,   i)
 
7036
@@ -84,14 +55,3 @@
 
7037
 
 
7038
 PLUSCCZEXT(a)
 
7039
 PLUSCCZEXT(b)
 
7040
-
 
7041
-#define MINUSCCZEXT    \
 
7042
-unsigned long minuscczext (unsigned int a, unsigned int b)     \
 
7043
-{      \
 
7044
-  unsigned int difference = a - b;     \
 
7045
-  if (difference > a)          \
 
7046
-    abort ();                  \
 
7047
-  return difference;           \
 
7048
-}
 
7049
-
 
7050
-MINUSCCZEXT
 
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)
 
7055
@@ -1,4 +1,5 @@
 
7056
 /* { dg-do compile { target lp64 } } */
 
7057
+/* { dg-options "-maccumulate-outgoing-args" } */
 
7058
 
 
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)
 
7065
@@ -1,5 +1,5 @@
 
7066
 /* { dg-do compile { target lp64 } } */
 
7067
-/* { dg-options "-O2" } */
 
7068
+/* { dg-options "-O2 -maccumulate-outgoing-args" } */
 
7069
 
 
7070
 void __attribute__ ((ms_abi)) foo (void)
 
7071
 {
 
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)
 
7076
@@ -15,7 +15,7 @@
 
7077
 avx_test (void)
 
7078
 {
 
7079
   union256d u;
 
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};
 
7082
 
 
7083
   u.x = test (e);
 
7084
 
 
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)
 
7089
@@ -1,7 +1,7 @@
 
7090
 /* Test for cross x86_64<->w64 abi standard calls.
 
7091
 */
 
7092
 /* { dg-do compile } */
 
7093
-/* { dg-options "-mno-sse" } */
 
7094
+/* { dg-options "-mno-sse -maccumulate-outgoing-args" } */
 
7095
 #include "callabi.h"
 
7096
 
 
7097
 long double
 
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)
 
7102
@@ -2,7 +2,7 @@
 
7103
 */
 
7104
 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
 
7105
 /* { dg-do run } */
 
7106
-/* { dg-options "-std=gnu99" } */
 
7107
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
 
7108
 #include "callabi.h"
 
7109
 
 
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)
 
7115
@@ -2,7 +2,7 @@
 
7116
 */
 
7117
 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
 
7118
 /* { dg-do run } */
 
7119
-/* { dg-options "-std=gnu99" } */
 
7120
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
 
7121
 #include "callabi.h"
 
7122
 
 
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)
 
7128
@@ -2,7 +2,7 @@
 
7129
 */
 
7130
 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
 
7131
 /* { dg-do run } */
 
7132
-/* { dg-options "-std=gnu99" } */
 
7133
+/* { dg-options "-std=gnu99 -maccumulate-outgoing-args" } */
 
7134
 #include "callabi.h"
 
7135
 
 
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)
 
7141
@@ -1,6 +1,6 @@
 
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" } */
 
7147
 
 
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)
 
7153
@@ -1,6 +1,6 @@
 
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" } */
 
7159
 
 
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)
 
7165
@@ -1,5 +1,5 @@
 
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" } */
 
7169
 
 
7170
 #include <stdarg.h>
 
7171
 
 
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)
 
7176
@@ -1,5 +1,5 @@
 
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" } */
 
7180
 
 
7181
 #include <stdarg.h>
 
7182
 
 
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)
 
7187
@@ -1,5 +1,5 @@
 
7188
 /* { dg-do compile } */
 
7189
-/* { dg-options "-O2 -mabi=sysv" } */
 
7190
+/* { dg-options "-O2 -mabi=sysv -maccumulate-outgoing-args" } */
 
7191
 
 
7192
 __attribute__ ((ms_abi))
 
7193
 int foo (void)
 
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)
 
7198
@@ -1,5 +1,5 @@
 
7199
 /* { dg-do compile } */
 
7200
-/* { dg-options "-O2 -mabi=sysv" } */
 
7201
+/* { dg-options "-O2 -mabi=sysv -maccumulate-outgoing-args" } */
 
7202
 
 
7203
 extern int glb1, gbl2, gbl3;
 
7204
 
 
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)
 
7209
@@ -2,7 +2,7 @@
 
7210
 */
 
7211
 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
 
7212
 /* { dg-do run } */
 
7213
-/* { dg-options "-std=gnu99 -ffast-math" } */
 
7214
+/* { dg-options "-std=gnu99 -ffast-math -maccumulate-outgoing-args" } */
 
7215
 #include "callabi.h"
 
7216
 
 
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)
 
7222
@@ -1,6 +1,6 @@
 
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" } */
 
7228
 
 
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)
 
7234
@@ -2,7 +2,7 @@
 
7235
 */
 
7236
 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
 
7237
 /* { dg-do run } */
 
7238
-/* { dg-options "-std=gnu99 -ffast-math" } */
 
7239
+/* { dg-options "-std=gnu99 -ffast-math -maccumulate-outgoing-args" } */
 
7240
 #include "callabi.h"
 
7241
 
 
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)
 
7247
@@ -1,6 +1,6 @@
 
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" } */
 
7253
 
 
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)
 
7259
@@ -1,5 +1,5 @@
 
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" } */
 
7263
 
 
7264
 typedef int (*func)(void *, char *, char *, short, long long);
 
7265
 
 
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)
 
7270
@@ -1,5 +1,5 @@
 
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" } */
 
7274
 
 
7275
 long double func_cross (long double a, double b, float c, long d, int e,
 
7276
                        char f)
 
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)
 
7281
@@ -1,37 +0,0 @@
 
7282
-/* This checks the availability of the XL compiler intrinsics for
 
7283
-   transactional execution with the expected prototypes.  */
 
7284
-
 
7285
-/* { dg-do compile } */
 
7286
-/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
7287
-
 
7288
-#include <htmxlintrin.h>
 
7289
-
 
7290
-int a = 0;
 
7291
-unsigned long g;
 
7292
-
 
7293
-int
 
7294
-foo ()
 
7295
-{
 
7296
-  struct __htm_tdb *tdb_struct;
 
7297
-  void * const tdb = tdb_struct;
 
7298
-  long result;
 
7299
-  unsigned char code;
 
7300
-
 
7301
-  result = __TM_simple_begin ();
 
7302
-  result = __TM_begin (tdb);
 
7303
-  result = __TM_end ();
 
7304
-  __TM_abort ();
 
7305
-  __TM_named_abort (42);
 
7306
-  __TM_non_transactional_store (&g, 42);
 
7307
-  result = __TM_nesting_depth (tdb);
 
7308
-
 
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);
 
7318
-}
 
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)
 
7323
@@ -1,73 +0,0 @@
 
7324
-/* This checks the availability of the low-level builtins introduced
 
7325
-   for transactional execution.  */
 
7326
-
 
7327
-/* { dg-do compile } */
 
7328
-/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
7329
-
 
7330
-#include <stdint.h>
 
7331
-#include <htmintrin.h>
 
7332
-
 
7333
-int global = 0;
 
7334
-uint64_t g;
 
7335
-struct __htm_tdb global_tdb;
 
7336
-
 
7337
-int
 
7338
-foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
 
7339
-{
 
7340
-
 
7341
-  int cc;
 
7342
-  int n;
 
7343
-
 
7344
-  cc = __builtin_tbegin (0);
 
7345
-  cc = __builtin_tbegin (tdb);
 
7346
-  cc = __builtin_tbegin (&global_tdb);
 
7347
-
 
7348
-  cc = __builtin_tbegin_nofloat (0);
 
7349
-  cc = __builtin_tbegin_nofloat (&global_tdb);
 
7350
-
 
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);
 
7357
-
 
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);
 
7363
-
 
7364
-  __builtin_tbeginc ();
 
7365
-
 
7366
-  n = __builtin_tx_nesting_depth();
 
7367
-
 
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);
 
7373
-
 
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
 
7382
-     arithmetic.  */
 
7383
-  __builtin_tabort (*mem + 255);
 
7384
-  __builtin_tabort (global + 255);
 
7385
-
 
7386
-  __builtin_tend();
 
7387
-
 
7388
-  __builtin_tx_assist (23);
 
7389
-  __builtin_tx_assist (reg);
 
7390
-  __builtin_tx_assist (*mem);
 
7391
-  __builtin_tx_assist (global);
 
7392
-}
 
7393
-
 
7394
-/* Make sure the tdb NULL argument ends up as immediate value in the
 
7395
-   instruction.  */
 
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)
 
7401
@@ -0,0 +1,27 @@
 
7402
+/* Functional tests for the function hotpatching feature.  */
 
7403
+
 
7404
+/* { dg-do run } */
 
7405
+/* { dg-options "-O3 -mzarch -mhotpatch" } */
 
7406
+
 
7407
+#include <stdio.h>
 
7408
+
 
7409
+void hp1(void)
 
7410
+{
 
7411
+  printf("hello, world!\n");
 
7412
+}
 
7413
+
 
7414
+inline void hp2(void)
 
7415
+{
 
7416
+  printf("hello, world!\n");
 
7417
+}
 
7418
+
 
7419
+__attribute__ ((always_inline))
 
7420
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7421
+{
 
7422
+  printf("hello, world!\n");
 
7423
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
 
7424
+
 
7425
+int main (void)
 
7426
+{
 
7427
+  return 0;
 
7428
+}
 
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)
 
7433
@@ -0,0 +1,27 @@
 
7434
+/* Functional tests for the function hotpatching feature.  */
 
7435
+
 
7436
+/* { dg-do run } */
 
7437
+/* { dg-options "-O3 -mzarch -mhotpatch=0" } */
 
7438
+
 
7439
+#include <stdio.h>
 
7440
+
 
7441
+void hp1(void)
 
7442
+{
 
7443
+  printf("hello, world!\n");
 
7444
+}
 
7445
+
 
7446
+inline void hp2(void)
 
7447
+{
 
7448
+  printf("hello, world!\n");
 
7449
+}
 
7450
+
 
7451
+__attribute__ ((always_inline))
 
7452
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7453
+{
 
7454
+  printf("hello, world!\n");
 
7455
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
 
7456
+
 
7457
+int main (void)
 
7458
+{
 
7459
+  return 0;
 
7460
+}
 
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)
 
7465
@@ -0,0 +1,27 @@
 
7466
+/* Functional tests for the function hotpatching feature.  */
 
7467
+
 
7468
+/* { dg-do run } */
 
7469
+/* { dg-options "-O3 -mzarch -mhotpatch=1" } */
 
7470
+
 
7471
+#include <stdio.h>
 
7472
+
 
7473
+void hp1(void)
 
7474
+{
 
7475
+  printf("hello, world!\n");
 
7476
+}
 
7477
+
 
7478
+inline void hp2(void)
 
7479
+{
 
7480
+  printf("hello, world!\n");
 
7481
+}
 
7482
+
 
7483
+__attribute__ ((always_inline))
 
7484
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7485
+{
 
7486
+  printf("hello, world!\n");
 
7487
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
 
7488
+
 
7489
+int main (void)
 
7490
+{
 
7491
+  return 0;
 
7492
+}
 
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)
 
7497
@@ -0,0 +1,11 @@
 
7498
+/* Functional tests for the function hotpatching feature.  */
 
7499
+
 
7500
+/* { dg-do compile } */
 
7501
+/* { dg-options "-O3 -mzarch -mhotpatch=-1" } */
 
7502
+
 
7503
+int main (void)
 
7504
+{
 
7505
+  return 0;
 
7506
+}
 
7507
+
 
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)
 
7513
@@ -0,0 +1,28 @@
 
7514
+/* Functional tests for the function hotpatching feature.  */
 
7515
+
 
7516
+/* { dg-do compile } */
 
7517
+/* { dg-options "-O3 -mzarch -mhotpatch=1000000" } */
 
7518
+
 
7519
+#include <stdio.h>
 
7520
+
 
7521
+void hp1(void)
 
7522
+{
 
7523
+  printf("hello, world!\n");
 
7524
+}
 
7525
+
 
7526
+__attribute__ ((hotpatch(1000000)))
 
7527
+void hp2(void)
 
7528
+{
 
7529
+  printf("hello, world!\n");
 
7530
+}
 
7531
+
 
7532
+__attribute__ ((hotpatch(1000001)))
 
7533
+void hp3(void)
 
7534
+{ /* { dg-error "requested 'hotpatch' attribute is not a non-negative integer constant or too large .max. 1000000." } */
 
7535
+  printf("hello, world!\n");
 
7536
+}
 
7537
+
 
7538
+int main (void)
 
7539
+{
 
7540
+  return 0;
 
7541
+}
 
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)
 
7546
@@ -0,0 +1,11 @@
 
7547
+/* Functional tests for the function hotpatching feature.  */
 
7548
+
 
7549
+/* { dg-do compile } */
 
7550
+/* { dg-options "-O3 -mzarch -mhotpatch=1000001" } */
 
7551
+
 
7552
+int main (void)
 
7553
+{
 
7554
+  return 0;
 
7555
+}
 
7556
+
 
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)
 
7562
@@ -0,0 +1,165 @@
 
7563
+/* This checks the availability of the low-level builtins introduced
 
7564
+   for transactional execution.  */
 
7565
+
 
7566
+/* { dg-do compile } */
 
7567
+/* { dg-require-effective-target htm } */
 
7568
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
7569
+
 
7570
+#include <stdint.h>
 
7571
+#include <htmintrin.h>
 
7572
+
 
7573
+int global = 0;
 
7574
+uint64_t g;
 
7575
+struct __htm_tdb global_tdb;
 
7576
+
 
7577
+int
 
7578
+foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64)
 
7579
+{
 
7580
+
 
7581
+  int cc;
 
7582
+  int n;
 
7583
+
 
7584
+  __builtin_tbegin ((void *)0);
 
7585
+  __builtin_tbegin ((void *)-99999);
 
7586
+  __builtin_tbegin ((void *)99999);
 
7587
+  while (__builtin_tbegin ((void *)0) != 0)
 
7588
+  {
 
7589
+  }
 
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));
 
7595
+
 
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));
 
7604
+
 
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);
 
7619
+
 
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);
 
7634
+
 
7635
+  __builtin_tbeginc ();
 
7636
+
 
7637
+  __builtin_tx_nesting_depth ();
 
7638
+  n = __builtin_tx_nesting_depth ();
 
7639
+
 
7640
+  __builtin_non_tx_store (mem64, 0);
 
7641
+  {
 
7642
+         const uint64_t val_var = 0x1122334455667788;
 
7643
+
 
7644
+         __builtin_non_tx_store (mem64, val_var);
 
7645
+  }
 
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);
 
7654
+
 
7655
+  __builtin_tend();
 
7656
+
 
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);
 
7662
+}
 
7663
+
 
7664
+/* The taborts must go into separate function since they are
 
7665
+   "noreturn".  */
 
7666
+
 
7667
+void
 
7668
+tabort1 ()
 
7669
+{
 
7670
+  __builtin_tabort (256);
 
7671
+}
 
7672
+
 
7673
+void
 
7674
+tabort2 (int reg)
 
7675
+{
 
7676
+  __builtin_tabort (reg);
 
7677
+}
 
7678
+
 
7679
+void
 
7680
+tabort3 (int reg)
 
7681
+{
 
7682
+  /* { dg-final { scan-assembler-times "tabort\t255" 1 } } */
 
7683
+  __builtin_tabort (reg + 255);
 
7684
+}
 
7685
+
 
7686
+void
 
7687
+tabort4 (int *mem)
 
7688
+{
 
7689
+  __builtin_tabort (*mem);
 
7690
+}
 
7691
+
 
7692
+void
 
7693
+tabort5 ()
 
7694
+{
 
7695
+  __builtin_tabort (global);
 
7696
+}
 
7697
+
 
7698
+void
 
7699
+tabort6 (int *mem)
 
7700
+{
 
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
 
7703
+     arithmetic.  */
 
7704
+  __builtin_tabort (*mem + 255);
 
7705
+}
 
7706
+
 
7707
+void
 
7708
+tabort7 ()
 
7709
+{
 
7710
+  __builtin_tabort (global + 255);
 
7711
+}
 
7712
+
 
7713
+void
 
7714
+tabort8 ()
 
7715
+{
 
7716
+  __builtin_tabort (-1);
 
7717
+}
 
7718
+
 
7719
+
 
7720
+/* Make sure the tdb NULL argument ends up as immediate value in the
 
7721
+   instruction.  */
 
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)
 
7732
@@ -0,0 +1,68 @@
 
7733
+/* Functional tests for the function hotpatching feature.  */
 
7734
+
 
7735
+/* { dg-do run } */
 
7736
+/* { dg-options "-O3 -mzarch -mno-hotpatch" } */
 
7737
+
 
7738
+#include <stdio.h>
 
7739
+
 
7740
+__attribute__ ((hotpatch))
 
7741
+void hp1(void)
 
7742
+{
 
7743
+  printf("hello, world!\n");
 
7744
+}
 
7745
+
 
7746
+__attribute__ ((hotpatch))
 
7747
+inline void hp2(void)
 
7748
+{
 
7749
+  printf("hello, world!\n");
 
7750
+}
 
7751
+
 
7752
+__attribute__ ((hotpatch))
 
7753
+__attribute__ ((always_inline))
 
7754
+void hp3(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7755
+{
 
7756
+  printf("hello, world!\n");
 
7757
+} /* { dg-warning "function 'hp3' with the 'always_inline' attribute is not hotpatchable" } */
 
7758
+
 
7759
+__attribute__ ((hotpatch(0)))
 
7760
+void hp4(void)
 
7761
+{
 
7762
+  printf("hello, world!\n");
 
7763
+}
 
7764
+
 
7765
+__attribute__ ((hotpatch(0)))
 
7766
+inline void hp5(void)
 
7767
+{
 
7768
+  printf("hello, world!\n");
 
7769
+}
 
7770
+
 
7771
+__attribute__ ((hotpatch(0)))
 
7772
+__attribute__ ((always_inline))
 
7773
+void hp6(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7774
+{
 
7775
+  printf("hello, world!\n");
 
7776
+} /* { dg-warning "function 'hp6' with the 'always_inline' attribute is not hotpatchable" } */
 
7777
+
 
7778
+__attribute__ ((hotpatch(1)))
 
7779
+void hp7(void)
 
7780
+{
 
7781
+  printf("hello, world!\n");
 
7782
+}
 
7783
+
 
7784
+__attribute__ ((hotpatch(1)))
 
7785
+inline void hp8(void)
 
7786
+{
 
7787
+  printf("hello, world!\n");
 
7788
+}
 
7789
+
 
7790
+__attribute__ ((hotpatch(1)))
 
7791
+__attribute__ ((always_inline))
 
7792
+void hp9(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7793
+{
 
7794
+  printf("hello, world!\n");
 
7795
+} /* { dg-warning "function 'hp9' with the 'always_inline' attribute is not hotpatchable" } */
 
7796
+
 
7797
+int main (void)
 
7798
+{
 
7799
+  return 0;
 
7800
+}
 
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)
 
7805
@@ -0,0 +1,13 @@
 
7806
+/* { dg-do compile } */
 
7807
+/* { dg-require-effective-target htm } */
 
7808
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
7809
+
 
7810
+void must_not_compile1 (void)
 
7811
+{
 
7812
+  __builtin_tabort (0); /* { dg-error "Invalid transaction abort code:" } */
 
7813
+}
 
7814
+
 
7815
+void must_not_compile2 (void)
 
7816
+{
 
7817
+  __builtin_tabort (255); /* { dg-error "Invalid transaction abort code:" } */
 
7818
+}
 
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)
 
7823
@@ -0,0 +1,37 @@
 
7824
+/* This checks the availability of the XL compiler intrinsics for
 
7825
+   transactional execution with the expected prototypes.  */
 
7826
+
 
7827
+/* { dg-do compile } */
 
7828
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
7829
+
 
7830
+#include <htmxlintrin.h>
 
7831
+
 
7832
+int a = 0;
 
7833
+unsigned long g;
 
7834
+
 
7835
+int
 
7836
+foo ()
 
7837
+{
 
7838
+  struct __htm_tdb *tdb_struct;
 
7839
+  void * const tdb = tdb_struct;
 
7840
+  long result;
 
7841
+  unsigned char code;
 
7842
+
 
7843
+  result = __TM_simple_begin ();
 
7844
+  result = __TM_begin (tdb);
 
7845
+  result = __TM_end ();
 
7846
+  __TM_abort ();
 
7847
+  __TM_named_abort (42);
 
7848
+  __TM_non_transactional_store (&g, 42);
 
7849
+  result = __TM_nesting_depth (tdb);
 
7850
+
 
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);
 
7860
+}
 
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)
 
7865
@@ -24,6 +24,19 @@
 
7866
 # Load support procs.
 
7867
 load_lib gcc-dg.exp
 
7868
 
 
7869
+# Return 1 if htm (etnd - extract nesting depth) instructions can be
 
7870
+# compiled.
 
7871
+proc check_effective_target_htm { } {
 
7872
+    if { ![check_runtime s390_check_htm [subst {
 
7873
+       int main (void)
 
7874
+       {
 
7875
+           unsigned int nd = 77;
 
7876
+           asm (".insn rre,0xb2ec0000,%0,0" : "=d" (nd));
 
7877
+           return nd;
 
7878
+       }
 
7879
+    }]] } { return 0 } else { return 1 }
 
7880
+}
 
7881
+
 
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)
 
7889
@@ -0,0 +1,20 @@
 
7890
+/* Functional tests for the function hotpatching feature.  */
 
7891
+
 
7892
+/* { dg-do run } */
 
7893
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
7894
+
 
7895
+#include <stdio.h>
 
7896
+
 
7897
+void hp1(void)
 
7898
+{
 
7899
+  printf("hello, world!\n");
 
7900
+}
 
7901
+
 
7902
+int main (void)
 
7903
+{
 
7904
+  return 0;
 
7905
+}
 
7906
+
 
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)
 
7914
@@ -0,0 +1,20 @@
 
7915
+/* Functional tests for the function hotpatching feature.  */
 
7916
+
 
7917
+/* { dg-do run } */
 
7918
+/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */
 
7919
+
 
7920
+#include <stdio.h>
 
7921
+
 
7922
+void hp1(void)
 
7923
+{
 
7924
+  printf("hello, world!\n");
 
7925
+}
 
7926
+
 
7927
+int main (void)
 
7928
+{
 
7929
+  return 0;
 
7930
+}
 
7931
+
 
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)
 
7939
@@ -0,0 +1,20 @@
 
7940
+/* Functional tests for the function hotpatching feature.  */
 
7941
+
 
7942
+/* { dg-do run } */
 
7943
+/* { dg-options "-O3 -mzarch -mhotpatch=0 --save-temps" } */
 
7944
+
 
7945
+#include <stdio.h>
 
7946
+
 
7947
+void hp1(void)
 
7948
+{
 
7949
+  printf("hello, world!\n");
 
7950
+}
 
7951
+
 
7952
+int main (void)
 
7953
+{
 
7954
+  return 0;
 
7955
+}
 
7956
+
 
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)
 
7964
@@ -0,0 +1,26 @@
 
7965
+/* Functional tests for the function hotpatching feature.  */
 
7966
+
 
7967
+/* { dg-do run } */
 
7968
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
7969
+
 
7970
+#include <stdio.h>
 
7971
+
 
7972
+inline void hp1(void)
 
7973
+{
 
7974
+  printf("hello, world!\n");
 
7975
+}
 
7976
+
 
7977
+__attribute__ ((always_inline))
 
7978
+void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
7979
+{
 
7980
+  printf("hello, world!\n");
 
7981
+} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */
 
7982
+
 
7983
+int main (void)
 
7984
+{
 
7985
+  return 0;
 
7986
+}
 
7987
+
 
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)
 
7995
@@ -0,0 +1,21 @@
 
7996
+/* Functional tests for the function hotpatching feature.  */
 
7997
+
 
7998
+/* { dg-do run } */
 
7999
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
8000
+
 
8001
+#include <stdio.h>
 
8002
+
 
8003
+__attribute__ ((hotpatch))
 
8004
+void hp1(void)
 
8005
+{
 
8006
+  printf("hello, world!\n");
 
8007
+}
 
8008
+
 
8009
+int main (void)
 
8010
+{
 
8011
+  return 0;
 
8012
+}
 
8013
+
 
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)
 
8021
@@ -0,0 +1,21 @@
 
8022
+/* Functional tests for the function hotpatching feature.  */
 
8023
+
 
8024
+/* { dg-do run } */
 
8025
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
8026
+
 
8027
+#include <stdio.h>
 
8028
+
 
8029
+__attribute__ ((hotpatch(1)))
 
8030
+void hp1(void)
 
8031
+{
 
8032
+  printf("hello, world!\n");
 
8033
+}
 
8034
+
 
8035
+int main (void)
 
8036
+{
 
8037
+  return 0;
 
8038
+}
 
8039
+
 
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)
 
8047
@@ -0,0 +1,1073 @@
 
8048
+/* Functional tests of the htm __builtin_... macros.  */
 
8049
+
 
8050
+/* { dg-do run } */
 
8051
+/* { dg-require-effective-target htm } */
 
8052
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
8053
+
 
8054
+/* ---------------------------- included header files ---------------------- */
 
8055
+
 
8056
+#include <stdio.h>
 
8057
+#include <string.h>
 
8058
+#include <stdint.h>
 
8059
+#include <htmintrin.h>
 
8060
+
 
8061
+/* ---------------------------- local definitions -------------------------- */
 
8062
+
 
8063
+#define DEFAULT_MAX_REPETITIONS 5
 
8064
+#define DEFAULT_REQUIRED_QUORUM ((DEFAULT_MAX_REPETITIONS) - 1)
 
8065
+#define NUM_WARMUP_RUNS 10
 
8066
+
 
8067
+/* ---------------------------- local macros ------------------------------- */
 
8068
+
 
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 }
 
8072
+
 
8073
+/* ---------------------------- local types -------------------------------- */
 
8074
+
 
8075
+typedef int (*test_func_t)(void);
 
8076
+
 
8077
+typedef struct
 
8078
+{
 
8079
+  const char *name;
 
8080
+  test_func_t test_func;
 
8081
+  int max_repetitions;
 
8082
+  int required_quorum;
 
8083
+} test_table_entry_t;
 
8084
+
 
8085
+/* ---------------------------- local variables ---------------------------- */
 
8086
+
 
8087
+__attribute__ ((aligned(256))) static struct __htm_tdb local_tdb256;
 
8088
+static struct __htm_tdb local_tdb;
 
8089
+static int do_dump_tdb = 0;
 
8090
+
 
8091
+/* ---------------------------- exported variables (globals) --------------- */
 
8092
+
 
8093
+__attribute__ ((aligned(256))) struct
 
8094
+{
 
8095
+  float float_1;
 
8096
+  float float_2;
 
8097
+  float float_3;
 
8098
+} global = { 1.0, 2.5, 0.0 };
 
8099
+
 
8100
+__attribute__ ((aligned(256))) struct
 
8101
+{
 
8102
+  volatile uint64_t c1;
 
8103
+  volatile uint64_t c2;
 
8104
+  volatile uint64_t c3;
 
8105
+} counters = { 0, 0, 0 };
 
8106
+
 
8107
+/* ---------------------------- local helper functions --------------------- */
 
8108
+
 
8109
+static void dump_tdb (struct __htm_tdb *tdb)
 
8110
+{
 
8111
+  unsigned char *p;
 
8112
+  int i;
 
8113
+  int j;
 
8114
+
 
8115
+  if (do_dump_tdb == 0)
 
8116
+    {
 
8117
+      return;
 
8118
+    }
 
8119
+  p = (unsigned char *)tdb;
 
8120
+  for (i = 0; i < 16; i++)
 
8121
+    {
 
8122
+      fprintf (stderr, "0x%02x  ", i * 16);
 
8123
+      for (j = 0; j < 16; j++)
 
8124
+       {
 
8125
+         fprintf (stderr, "%02x", (int)p[i * 16 + j]);
 
8126
+         if (j < 15)
 
8127
+           {
 
8128
+             fprintf (stderr, " ");
 
8129
+           }
 
8130
+         if (j == 7)
 
8131
+           {
 
8132
+             fprintf (stderr, " ");
 
8133
+           }
 
8134
+       }
 
8135
+      fprintf (stderr, "\n");
 
8136
+    }
 
8137
+
 
8138
+  return;
 
8139
+}
 
8140
+
 
8141
+/* ---------------------------- local test functions ----------------------- */
 
8142
+
 
8143
+/* Check values of the constants defined in htmintrin.h.  */
 
8144
+static int test_constants (void)
 
8145
+{
 
8146
+  if (_HTM_TBEGIN_STARTED != 0)
 
8147
+    {
 
8148
+      return 100 * _HTM_TBEGIN_STARTED + 1;
 
8149
+    }
 
8150
+  if (_HTM_TBEGIN_INDETERMINATE != 1)
 
8151
+    {
 
8152
+      return 100 * _HTM_TBEGIN_INDETERMINATE + 2;
 
8153
+    }
 
8154
+  if (_HTM_TBEGIN_TRANSIENT != 2)
 
8155
+    {
 
8156
+      return 100 * _HTM_TBEGIN_TRANSIENT + 3;
 
8157
+    }
 
8158
+  if (_HTM_TBEGIN_PERSISTENT != 3)
 
8159
+    {
 
8160
+      return 100 * _HTM_TBEGIN_PERSISTENT + 4;
 
8161
+    }
 
8162
+
 
8163
+  return 0;
 
8164
+}
 
8165
+
 
8166
+static int test_tbegin_ntstg_tend (void)
 
8167
+{
 
8168
+  int rc;
 
8169
+
 
8170
+  counters.c1 = 0;
 
8171
+  counters.c2 = 0;
 
8172
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8173
+    {
 
8174
+      __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
 
8175
+      counters.c2 = 2;
 
8176
+      rc = __builtin_tend ();
 
8177
+      if (rc != 0)
 
8178
+       {
 
8179
+         return 100 * rc + 5;
 
8180
+       }
 
8181
+      if (counters.c1 != 1)
 
8182
+       {
 
8183
+         return 100 * counters.c1 + 2;
 
8184
+       }
 
8185
+      if (counters.c2 != 2)
 
8186
+       {
 
8187
+         return 100 * counters.c2 + 3;
 
8188
+       }
 
8189
+    }
 
8190
+  else
 
8191
+    {
 
8192
+      return 100 * rc + 4;
 
8193
+    }
 
8194
+
 
8195
+  return 0;
 
8196
+}
 
8197
+
 
8198
+static int test_tbegin_ntstg_tabort (void)
 
8199
+{
 
8200
+  float f;
 
8201
+
 
8202
+  counters.c1 = 0;
 
8203
+  counters.c2 = 0;
 
8204
+  f = 0;
 
8205
+  if (__builtin_tbegin ((void *)0) == 0)
 
8206
+    {
 
8207
+      __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
 
8208
+      counters.c2 = 2;
 
8209
+      f = 1;
 
8210
+      __builtin_tabort (256);
 
8211
+      return 1;
 
8212
+    }
 
8213
+  if (counters.c1 != 1)
 
8214
+    {
 
8215
+      return 100 * counters.c1 + 2;
 
8216
+    }
 
8217
+  if (counters.c2 != 0)
 
8218
+    {
 
8219
+      return 100 * counters.c2 + 3;
 
8220
+    }
 
8221
+  if (f != 0)
 
8222
+    {
 
8223
+      return 100 * f + 4;
 
8224
+    }
 
8225
+
 
8226
+  return 0;
 
8227
+}
 
8228
+
 
8229
+static int test_tbegin_nofloat (void)
 
8230
+{
 
8231
+  int rc;
 
8232
+
 
8233
+  counters.c1 = 0;
 
8234
+  counters.c2 = 0;
 
8235
+  if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
 
8236
+    {
 
8237
+      __builtin_non_tx_store ((uint64_t *)&counters.c1, 1);
 
8238
+      counters.c2 = 2;
 
8239
+      rc = __builtin_tend ();
 
8240
+      if (rc != 0)
 
8241
+       {
 
8242
+         return 100 * rc + 5;
 
8243
+       }
 
8244
+      if (counters.c1 != 1)
 
8245
+       {
 
8246
+         return 100 * counters.c1 + 2;
 
8247
+       }
 
8248
+      if (counters.c2 != 2)
 
8249
+       {
 
8250
+         return 100 * counters.c2 + 3;
 
8251
+       }
 
8252
+    }
 
8253
+  else
 
8254
+    {
 
8255
+      return 100 * rc + 4;
 
8256
+    }
 
8257
+
 
8258
+  return 0;
 
8259
+}
 
8260
+
 
8261
+static int test_tbegin_retry (void)
 
8262
+{
 
8263
+  int rc;
 
8264
+
 
8265
+  counters.c1 = 0;
 
8266
+  counters.c2 = 0;
 
8267
+  counters.c3 = 0;
 
8268
+  if ((rc = __builtin_tbegin_retry ((void *)0, 5)) == 0)
 
8269
+    {
 
8270
+      int do_abort;
 
8271
+
 
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)
 
8276
+       {
 
8277
+         __builtin_tabort (256);
 
8278
+       }
 
8279
+      counters.c2 = counters.c2 + 10;
 
8280
+      __builtin_non_tx_store ((uint64_t *)&counters.c3, 3);
 
8281
+      rc = __builtin_tend ();
 
8282
+      if (rc != 0)
 
8283
+       {
 
8284
+         return 100 * rc + 5;
 
8285
+       }
 
8286
+      if (counters.c1 != 2)
 
8287
+       {
 
8288
+         return 100 * counters.c1 + 2;
 
8289
+       }
 
8290
+      if (counters.c2 != 10)
 
8291
+       {
 
8292
+         return 100 * counters.c2 + 3;
 
8293
+       }
 
8294
+      if (counters.c3 != 3)
 
8295
+       {
 
8296
+         return 100 * counters.c3 + 6;
 
8297
+       }
 
8298
+    }
 
8299
+  else
 
8300
+    {
 
8301
+      return 100 * rc + 4;
 
8302
+    }
 
8303
+
 
8304
+  return 0;
 
8305
+}
 
8306
+
 
8307
+static int test_tbegin_retry_nofloat (void)
 
8308
+{
 
8309
+  int rc;
 
8310
+
 
8311
+  counters.c1 = 0;
 
8312
+  counters.c2 = 0;
 
8313
+  counters.c3 = 0;
 
8314
+  if ((rc = __builtin_tbegin_retry_nofloat ((void *)0, 5)) == 0)
 
8315
+    {
 
8316
+      int do_abort;
 
8317
+
 
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)
 
8322
+       {
 
8323
+         __builtin_tabort (256);
 
8324
+       }
 
8325
+      counters.c2 = counters.c2 + 10;
 
8326
+      __builtin_non_tx_store ((uint64_t *)&counters.c3, 3);
 
8327
+      rc = __builtin_tend ();
 
8328
+      if (rc != 0)
 
8329
+       {
 
8330
+         return 100 * rc + 5;
 
8331
+       }
 
8332
+      if (counters.c1 != 2)
 
8333
+       {
 
8334
+         return 100 * counters.c1 + 2;
 
8335
+       }
 
8336
+      if (counters.c2 != 10)
 
8337
+       {
 
8338
+         return 100 * counters.c2 + 3;
 
8339
+       }
 
8340
+      if (counters.c3 != 3)
 
8341
+       {
 
8342
+         return 100 * counters.c3 + 6;
 
8343
+       }
 
8344
+    }
 
8345
+  else
 
8346
+    {
 
8347
+      return 100 * rc + 4;
 
8348
+    }
 
8349
+
 
8350
+  return 0;
 
8351
+}
 
8352
+
 
8353
+static int test_tbegin_aborts (void)
 
8354
+{
 
8355
+  float f;
 
8356
+  int rc;
 
8357
+
 
8358
+  f = 77;
 
8359
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8360
+    {
 
8361
+      f = 88;
 
8362
+      __builtin_tabort (256);
 
8363
+      return 2;
 
8364
+    }
 
8365
+  else if (rc != 2)
 
8366
+    {
 
8367
+      return 3;
 
8368
+    }
 
8369
+  if (f != 77)
 
8370
+    {
 
8371
+      return 4;
 
8372
+    }
 
8373
+  f = 66;
 
8374
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8375
+    {
 
8376
+      f = 99;
 
8377
+      __builtin_tabort (257);
 
8378
+      return 5;
 
8379
+    }
 
8380
+  else if (rc != 3)
 
8381
+    {
 
8382
+      return 100 * rc + 6;
 
8383
+    }
 
8384
+  if (f != 66)
 
8385
+    {
 
8386
+      return 100 * f + 7;
 
8387
+    }
 
8388
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8389
+    {
 
8390
+      global.float_3 = global.float_1 + global.float_2;
 
8391
+      rc = __builtin_tend ();
 
8392
+      if (rc != 0)
 
8393
+       {
 
8394
+         return 100 * rc + 8;
 
8395
+       }
 
8396
+    }
 
8397
+  else
 
8398
+    {
 
8399
+      return 100 * rc + 9;
 
8400
+    }
 
8401
+  if (global.float_3 != global.float_1 + global.float_2)
 
8402
+    {
 
8403
+      return 100 * rc + 10;
 
8404
+    }
 
8405
+
 
8406
+  return 0;
 
8407
+}
 
8408
+
 
8409
+static __attribute__((noinline)) void indirect_abort(int abort_code)
 
8410
+{
 
8411
+  __builtin_tabort (abort_code);
 
8412
+
 
8413
+  return;
 
8414
+}
 
8415
+
 
8416
+static int test_tbegin_indirect_aborts (void)
 
8417
+{
 
8418
+  float f;
 
8419
+  int rc;
 
8420
+
 
8421
+  f = 77;
 
8422
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8423
+    {
 
8424
+      f = 88;
 
8425
+      indirect_abort(256);
 
8426
+      return 2;
 
8427
+    }
 
8428
+  else if (rc != 2)
 
8429
+    {
 
8430
+      return 100 * rc + 3;
 
8431
+    }
 
8432
+  if (f != 77)
 
8433
+    {
 
8434
+      return 100 * rc + 4;
 
8435
+    }
 
8436
+  f = 66;
 
8437
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8438
+    {
 
8439
+      f = 99;
 
8440
+      indirect_abort(257);
 
8441
+      return 5;
 
8442
+    }
 
8443
+  else if (rc != 3)
 
8444
+    {
 
8445
+      return 100 * rc + 6;
 
8446
+    }
 
8447
+  if (f != 66)
 
8448
+    {
 
8449
+      return 100 * f + 7;
 
8450
+    }
 
8451
+
 
8452
+  return 0;
 
8453
+}
 
8454
+
 
8455
+static int test_tbegin_nofloat_aborts (void)
 
8456
+{
 
8457
+  int rc;
 
8458
+
 
8459
+  if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
 
8460
+    {
 
8461
+      __builtin_tabort (256);
 
8462
+      return 2;
 
8463
+    }
 
8464
+  if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
 
8465
+    {
 
8466
+      __builtin_tabort (257);
 
8467
+      return 1005;
 
8468
+    }
 
8469
+  else if (rc != 3)
 
8470
+    {
 
8471
+      return 1000 * rc + 6;
 
8472
+    }
 
8473
+
 
8474
+  return 0;
 
8475
+}
 
8476
+
 
8477
+static int test_tbegin_nofloat_indirect_aborts (void)
 
8478
+{
 
8479
+  int rc;
 
8480
+
 
8481
+  if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
 
8482
+    {
 
8483
+      indirect_abort (256);
 
8484
+      return 2;
 
8485
+    }
 
8486
+  if ((rc = __builtin_tbegin_nofloat ((void *)0)) == 0)
 
8487
+    {
 
8488
+      indirect_abort (257);
 
8489
+      return 1005;
 
8490
+    }
 
8491
+  else if (rc != 3)
 
8492
+    {
 
8493
+      return 1000 * rc + 6;
 
8494
+    }
 
8495
+
 
8496
+  return 0;
 
8497
+}
 
8498
+
 
8499
+static
 
8500
+int _test_tbegin_retry_aborts (int retries, uint64_t abort_code)
 
8501
+{
 
8502
+  int rc;
 
8503
+
 
8504
+  counters.c1 = 0;
 
8505
+  if ((rc = __builtin_tbegin_retry ((void *)0, retries)) == 0)
 
8506
+    {
 
8507
+      __builtin_non_tx_store ((uint64_t *)&counters.c1, counters.c1 + 1);
 
8508
+      __builtin_tabort (abort_code);
 
8509
+      return 2;
 
8510
+    }
 
8511
+  else
 
8512
+    {
 
8513
+      if ((abort_code & 1) == 0)
 
8514
+       {
 
8515
+         if (rc != 2)
 
8516
+           {
 
8517
+             return 100 * rc + 2003;
 
8518
+           }
 
8519
+         else if (counters.c1 != (uint64_t)retries + 1)
 
8520
+           {
 
8521
+             return 1000 * counters.c1 + 100 * retries + 4;
 
8522
+           }
 
8523
+       }
 
8524
+      else
 
8525
+       {
 
8526
+         if (rc != 3)
 
8527
+           {
 
8528
+             return 100 * rc + 3005;
 
8529
+           }
 
8530
+         else if (counters.c1 != 1)
 
8531
+           {
 
8532
+             return 1000 * counters.c1 + 100 * retries + 6;
 
8533
+           }
 
8534
+       }
 
8535
+    }
 
8536
+
 
8537
+  return 0;
 
8538
+}
 
8539
+
 
8540
+static int test_tbegin_retry_aborts (void)
 
8541
+{
 
8542
+  int rc;
 
8543
+  int retries;
 
8544
+
 
8545
+  for (retries = 1; retries <= 3; retries++)
 
8546
+    {
 
8547
+      rc = _test_tbegin_retry_aborts (retries, 256);
 
8548
+      if (rc != 0)
 
8549
+       {
 
8550
+         return 10000 + rc;
 
8551
+       }
 
8552
+    }
 
8553
+  for (retries = 1; retries <= 3; retries++)
 
8554
+    {
 
8555
+      rc = _test_tbegin_retry_aborts (retries, 257);
 
8556
+      if (rc != 0)
 
8557
+       {
 
8558
+         return 20000 + rc;
 
8559
+       }
 
8560
+    }
 
8561
+  if ((rc = __builtin_tbegin_retry ((void *)0, 5)) == 0)
 
8562
+    {
 
8563
+      global.float_3 = global.float_1 + global.float_2;
 
8564
+      rc = __builtin_tend ();
 
8565
+      if (rc != 0)
 
8566
+       {
 
8567
+         return 30000 + 100 * rc + 6;
 
8568
+       }
 
8569
+    }
 
8570
+  else
 
8571
+    {
 
8572
+      return 30000 + 100 * rc + 7;
 
8573
+    }
 
8574
+
 
8575
+  return 0;
 
8576
+}
 
8577
+
 
8578
+static int _test_tbegin_retry_nofloat_aborts (int retries, uint64_t abort_code)
 
8579
+{
 
8580
+  int rc;
 
8581
+
 
8582
+  counters.c1 = 0;
 
8583
+  if ((rc = __builtin_tbegin_retry_nofloat ((void *)0, retries)) == 0)
 
8584
+    {
 
8585
+      __builtin_non_tx_store ((uint64_t *)&counters.c1, counters.c1 + 1);
 
8586
+      __builtin_tabort (abort_code);
 
8587
+      return 2;
 
8588
+    }
 
8589
+  else
 
8590
+    {
 
8591
+      if ((abort_code & 1) == 0)
 
8592
+       {
 
8593
+         if (rc != 2)
 
8594
+           {
 
8595
+             return 100 * rc + 2003;
 
8596
+           }
 
8597
+         else if (counters.c1 != (uint64_t)retries + 1)
 
8598
+           {
 
8599
+             return 1000 * counters.c1 + 100 * retries + 4;
 
8600
+           }
 
8601
+       }
 
8602
+      else
 
8603
+       {
 
8604
+         if (rc != 3)
 
8605
+           {
 
8606
+             return 100 * rc + 3005;
 
8607
+           }
 
8608
+         else if (counters.c1 != 1)
 
8609
+           {
 
8610
+             return 1000 * counters.c1 + 100 * retries + 6;
 
8611
+           }
 
8612
+       }
 
8613
+    }
 
8614
+
 
8615
+  return 0;
 
8616
+}
 
8617
+
 
8618
+static int test_tbegin_retry_nofloat_aborts (void)
 
8619
+{
 
8620
+  int rc;
 
8621
+  int retries;
 
8622
+
 
8623
+  for (retries = 1; retries <= 3; retries++)
 
8624
+    {
 
8625
+      rc = _test_tbegin_retry_nofloat_aborts (retries, 256);
 
8626
+      if (rc != 0)
 
8627
+       {
 
8628
+         return 10 * retries + rc;
 
8629
+       }
 
8630
+    }
 
8631
+  for (retries = 1; retries <= 3; retries++)
 
8632
+    {
 
8633
+      rc = _test_tbegin_retry_nofloat_aborts (retries, 257);
 
8634
+      if (rc != 0)
 
8635
+       {
 
8636
+         return 10000 + 10 * retries + rc;
 
8637
+       }
 
8638
+    }
 
8639
+
 
8640
+  return 0;
 
8641
+}
 
8642
+
 
8643
+static int test_tbegin_tdb (void)
 
8644
+{
 
8645
+  int rc;
 
8646
+
 
8647
+  local_tdb.format = 0;
 
8648
+  if ((rc = __builtin_tbegin (&local_tdb)) == 0)
 
8649
+    {
 
8650
+      rc = __builtin_tend ();
 
8651
+      if (rc != 0)
 
8652
+       {
 
8653
+         return 100 * rc + 1;
 
8654
+       }
 
8655
+      if (local_tdb.format != 0)
 
8656
+       {
 
8657
+         dump_tdb (&local_tdb);
 
8658
+         return 100 * local_tdb.format + 2;
 
8659
+       }
 
8660
+    }
 
8661
+  else
 
8662
+    {
 
8663
+      return 100 * rc + 3;
 
8664
+    }
 
8665
+  local_tdb.format = 0;
 
8666
+  if ((rc = __builtin_tbegin (&local_tdb)) == 0)
 
8667
+    {
 
8668
+      __builtin_tabort (257);
 
8669
+      return 4;
 
8670
+    }
 
8671
+  else
 
8672
+    {
 
8673
+      if (rc != 3)
 
8674
+       {
 
8675
+         return 100 * rc + 5;
 
8676
+       }
 
8677
+      if (local_tdb.format != 1)
 
8678
+       {
 
8679
+         dump_tdb (&local_tdb);
 
8680
+         return 100 * local_tdb.format + 6;
 
8681
+       }
 
8682
+    }
 
8683
+  local_tdb256.format = 0;
 
8684
+  if ((rc = __builtin_tbegin (&local_tdb256)) == 0)
 
8685
+    {
 
8686
+      rc = __builtin_tend ();
 
8687
+      if (rc != 0)
 
8688
+       {
 
8689
+         return 1100 * rc + 1;
 
8690
+       }
 
8691
+      if (local_tdb256.format != 0)
 
8692
+       {
 
8693
+         dump_tdb (&local_tdb256);
 
8694
+         return 1100 * local_tdb256.format + 2;
 
8695
+       }
 
8696
+    }
 
8697
+  else
 
8698
+    {
 
8699
+      return 1100 * rc + 3;
 
8700
+    }
 
8701
+  local_tdb256.format = 0;
 
8702
+  if ((rc = __builtin_tbegin (&local_tdb256)) == 0)
 
8703
+    {
 
8704
+      __builtin_tabort (257);
 
8705
+      return 2004;
 
8706
+    }
 
8707
+  else
 
8708
+    {
 
8709
+      if (rc != 3)
 
8710
+       {
 
8711
+         return 2100 * rc + 5;
 
8712
+       }
 
8713
+      if (local_tdb256.format != 1)
 
8714
+       {
 
8715
+         dump_tdb (&local_tdb256);
 
8716
+         return 2100 * local_tdb256.format + 6;
 
8717
+       }
 
8718
+    }
 
8719
+
 
8720
+  return 0;
 
8721
+}
 
8722
+
 
8723
+static int test_tbegin_nofloat_tdb (void)
 
8724
+{
 
8725
+  int rc;
 
8726
+
 
8727
+  local_tdb.format = 0;
 
8728
+  if ((rc = __builtin_tbegin_nofloat (&local_tdb)) == 0)
 
8729
+    {
 
8730
+      rc = __builtin_tend ();
 
8731
+      if (rc != 0)
 
8732
+       {
 
8733
+         return 100 * rc + 1;
 
8734
+       }
 
8735
+      if (local_tdb.format != 0)
 
8736
+       {
 
8737
+         dump_tdb (&local_tdb);
 
8738
+         return 100 * local_tdb.format + 2;
 
8739
+       }
 
8740
+    }
 
8741
+  else
 
8742
+    {
 
8743
+      return 3;
 
8744
+    }
 
8745
+  local_tdb.format = 0;
 
8746
+  if ((rc = __builtin_tbegin_nofloat (&local_tdb)) == 0)
 
8747
+    {
 
8748
+      __builtin_tabort (257);
 
8749
+      return 4;
 
8750
+    }
 
8751
+  else
 
8752
+    {
 
8753
+      if (rc != 3)
 
8754
+       {
 
8755
+         return 100 * rc + 5;
 
8756
+       }
 
8757
+      if (local_tdb.format != 1)
 
8758
+       {
 
8759
+         dump_tdb (&local_tdb);
 
8760
+         return 100 * local_tdb.format + 6;
 
8761
+       }
 
8762
+    }
 
8763
+  local_tdb256.format = 0;
 
8764
+  if ((rc = __builtin_tbegin_nofloat (&local_tdb256)) == 0)
 
8765
+    {
 
8766
+      rc = __builtin_tend ();
 
8767
+      if (rc != 0)
 
8768
+       {
 
8769
+         return 1100 * rc + 1;
 
8770
+       }
 
8771
+      if (local_tdb256.format != 0)
 
8772
+       {
 
8773
+         dump_tdb (&local_tdb256);
 
8774
+         return 1100 * local_tdb256.format + 2;
 
8775
+       }
 
8776
+    }
 
8777
+  else
 
8778
+    {
 
8779
+      return 1003;
 
8780
+    }
 
8781
+  local_tdb256.format = 0;
 
8782
+  if ((rc = __builtin_tbegin_nofloat (&local_tdb256)) == 0)
 
8783
+    {
 
8784
+      __builtin_tabort (257);
 
8785
+      return 2004;
 
8786
+    }
 
8787
+  else
 
8788
+    {
 
8789
+      if (rc != 3)
 
8790
+       {
 
8791
+         return 2100 * rc + 5;
 
8792
+       }
 
8793
+      if (local_tdb256.format != 1)
 
8794
+       {
 
8795
+         dump_tdb (&local_tdb256);
 
8796
+         return 2100 * local_tdb256.format + 6;
 
8797
+       }
 
8798
+    }
 
8799
+
 
8800
+  return 0;
 
8801
+}
 
8802
+
 
8803
+static int test_tbegin_retry_tdb (void)
 
8804
+{
 
8805
+  int rc;
 
8806
+
 
8807
+  local_tdb256.format = 0;
 
8808
+  if ((rc = __builtin_tbegin_retry (&local_tdb256, 2)) == 0)
 
8809
+    {
 
8810
+      rc = __builtin_tend ();
 
8811
+      if (rc != 0)
 
8812
+       {
 
8813
+         return 1100 * rc + 1;
 
8814
+       }
 
8815
+      if (local_tdb256.format != 0)
 
8816
+       {
 
8817
+         dump_tdb (&local_tdb256);
 
8818
+         return 1100 * local_tdb256.format + 2;
 
8819
+       }
 
8820
+    }
 
8821
+  else
 
8822
+    {
 
8823
+      return 1003;
 
8824
+    }
 
8825
+  local_tdb256.format = 0;
 
8826
+  if ((rc = __builtin_tbegin_retry (&local_tdb256, 2)) == 0)
 
8827
+    {
 
8828
+      __builtin_tabort (257);
 
8829
+      return 2004;
 
8830
+    }
 
8831
+  else
 
8832
+    {
 
8833
+      if (rc != 3)
 
8834
+       {
 
8835
+         return 2100 * rc + 5;
 
8836
+       }
 
8837
+      if (local_tdb256.format != 1)
 
8838
+       {
 
8839
+         dump_tdb (&local_tdb256);
 
8840
+         return 2100 * local_tdb256.format + 6;
 
8841
+       }
 
8842
+    }
 
8843
+
 
8844
+  return 0;
 
8845
+}
 
8846
+
 
8847
+static int test_tbegin_retry_nofloat_tdb (void)
 
8848
+{
 
8849
+  int rc;
 
8850
+
 
8851
+  local_tdb.format = 0;
 
8852
+  if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb, 2)) == 0)
 
8853
+    {
 
8854
+      rc = __builtin_tend ();
 
8855
+      if (rc != 0)
 
8856
+       {
 
8857
+         return 100 * rc + 1;
 
8858
+       }
 
8859
+      if (local_tdb.format != 0)
 
8860
+       {
 
8861
+         dump_tdb (&local_tdb);
 
8862
+         return 100 * local_tdb.format + 2;
 
8863
+       }
 
8864
+    }
 
8865
+  else
 
8866
+    {
 
8867
+      return 100 * rc + 3;
 
8868
+    }
 
8869
+  local_tdb.format = 0;
 
8870
+  if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb, 2)) == 0)
 
8871
+    {
 
8872
+      __builtin_tabort (257);
 
8873
+      return 4;
 
8874
+    }
 
8875
+  else
 
8876
+    {
 
8877
+      if (rc != 3)
 
8878
+       {
 
8879
+         return 100 * rc + 5;
 
8880
+       }
 
8881
+      if (local_tdb.format != 1)
 
8882
+       {
 
8883
+         dump_tdb (&local_tdb);
 
8884
+         return 100 * local_tdb.format + 6;
 
8885
+       }
 
8886
+    }
 
8887
+  local_tdb256.format = 0;
 
8888
+  if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb256, 2)) == 0)
 
8889
+    {
 
8890
+      rc = __builtin_tend ();
 
8891
+      if (rc != 0)
 
8892
+       {
 
8893
+         return 1100 * rc + 1;
 
8894
+       }
 
8895
+      if (local_tdb256.format != 0)
 
8896
+       {
 
8897
+         dump_tdb (&local_tdb256);
 
8898
+         return 1100 * local_tdb256.format + 2;
 
8899
+       }
 
8900
+    }
 
8901
+  else
 
8902
+    {
 
8903
+      return 1100 * rc + 3;
 
8904
+    }
 
8905
+  local_tdb256.format = 0;
 
8906
+  if ((rc = __builtin_tbegin_retry_nofloat (&local_tdb256, 2)) == 0)
 
8907
+    {
 
8908
+      __builtin_tabort (257);
 
8909
+      return 2004;
 
8910
+    }
 
8911
+  else
 
8912
+    {
 
8913
+      if (rc != 3)
 
8914
+       {
 
8915
+         return 2100 * rc + 5;
 
8916
+       }
 
8917
+      if (local_tdb256.format != 1)
 
8918
+       {
 
8919
+         dump_tdb (&local_tdb256);
 
8920
+         return 2100 * local_tdb256.format + 6;
 
8921
+       }
 
8922
+    }
 
8923
+
 
8924
+  return 0;
 
8925
+}
 
8926
+
 
8927
+static int test_etnd (void)
 
8928
+{
 
8929
+  int rc;
 
8930
+
 
8931
+  counters.c1 = 0;
 
8932
+  counters.c2 = 0;
 
8933
+  counters.c3 = 0;
 
8934
+  if ((rc = __builtin_tbegin ((void *)0)) == 0)
 
8935
+    {
 
8936
+      counters.c1 = __builtin_tx_nesting_depth ();
 
8937
+      if (__builtin_tbegin ((void *)0) == 0)
 
8938
+       {
 
8939
+         counters.c2 = __builtin_tx_nesting_depth ();
 
8940
+         if (__builtin_tbegin ((void *)0) == 0)
 
8941
+           {
 
8942
+             counters.c3 = __builtin_tx_nesting_depth ();
 
8943
+             __builtin_tend ();
 
8944
+           }
 
8945
+         __builtin_tend ();
 
8946
+       }
 
8947
+      __builtin_tend ();
 
8948
+    }
 
8949
+  else
 
8950
+    {
 
8951
+      return 100 * rc + 1;
 
8952
+    }
 
8953
+  if (counters.c1 != 1)
 
8954
+    {
 
8955
+      return 100 * counters.c1 + 2;
 
8956
+    }
 
8957
+  if (counters.c2 != 2)
 
8958
+    {
 
8959
+      return 100 * counters.c2 + 3;
 
8960
+    }
 
8961
+  if (counters.c3 != 3)
 
8962
+    {
 
8963
+      return 100 * counters.c3 + 4;
 
8964
+    }
 
8965
+
 
8966
+  return 0;
 
8967
+}
 
8968
+
 
8969
+static int test_tbeginc (void)
 
8970
+{
 
8971
+  int rc;
 
8972
+
 
8973
+  counters.c1 = 0;
 
8974
+  __builtin_tbeginc ();
 
8975
+  counters.c1 = 1;
 
8976
+  rc = __builtin_tend ();
 
8977
+  if (rc != 0)
 
8978
+    {
 
8979
+      return 10000 * rc + 1;
 
8980
+    }
 
8981
+  if (counters.c1 != 1)
 
8982
+    {
 
8983
+      return 100000 * counters.c1 + 3;
 
8984
+    }
 
8985
+
 
8986
+  return 0;
 
8987
+}
 
8988
+
 
8989
+/* ---------------------------- local testing framework functions ---------- */
 
8990
+
 
8991
+static int run_one_test (const test_table_entry_t *test_entry)
 
8992
+{
 
8993
+  int do_print_passes;
 
8994
+  int succeeded;
 
8995
+  int rc;
 
8996
+  int i;
 
8997
+
 
8998
+  /* Warmup run to get all necessary data and instruction pages into the page
 
8999
+   * tables.  */
 
9000
+  {
 
9001
+    int run;
 
9002
+
 
9003
+    do_dump_tdb = 0;
 
9004
+    for (run = 0; run < NUM_WARMUP_RUNS; run++)
 
9005
+      {
 
9006
+       test_entry->test_func ();
 
9007
+      }
 
9008
+    do_dump_tdb = 1;
 
9009
+  }
 
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)
 
9015
+    {
 
9016
+      printf (
 
9017
+            "         (requires %d successful out of %d runs)\n",
 
9018
+            test_entry->required_quorum,
 
9019
+            test_entry->max_repetitions);
 
9020
+    }
 
9021
+  succeeded = 0;
 
9022
+  rc = 0;
 
9023
+  for (rc = 0, i = 0; i < test_entry->max_repetitions; i++)
 
9024
+    {
 
9025
+      if (do_print_passes == 1)
 
9026
+       {
 
9027
+         if (i == 0)
 
9028
+           {
 
9029
+             printf ("        ");
 
9030
+           }
 
9031
+         else
 
9032
+           {
 
9033
+             printf (",");
 
9034
+           }
 
9035
+       }
 
9036
+      rc = test_entry->test_func ();
 
9037
+      if (rc == 0)
 
9038
+       {
 
9039
+         if (do_print_passes == 1)
 
9040
+           {
 
9041
+             printf (" success");
 
9042
+           }
 
9043
+         succeeded++;
 
9044
+         if (succeeded >= test_entry->required_quorum)
 
9045
+           {
 
9046
+             break;
 
9047
+           }
 
9048
+       }
 
9049
+      else
 
9050
+       {
 
9051
+         printf (" failed (rc = %d)", rc);
 
9052
+       }
 
9053
+    }
 
9054
+  if (do_print_passes == 1 || rc != 0)
 
9055
+    {
 
9056
+      printf ("\n");
 
9057
+    }
 
9058
+  if (succeeded >= test_entry->required_quorum)
 
9059
+    {
 
9060
+      printf ("+++ OK   %s\n", test_entry->name);
 
9061
+
 
9062
+      return 0;
 
9063
+    }
 
9064
+  else
 
9065
+    {
 
9066
+      printf ("--- FAIL %s\n", test_entry->name);
 
9067
+
 
9068
+      return (rc != 0) ? rc : -1;
 
9069
+    }
 
9070
+}
 
9071
+
 
9072
+static int run_all_tests (const test_table_entry_t *test_table)
 
9073
+{
 
9074
+  const test_table_entry_t *test;
 
9075
+  int rc;
 
9076
+
 
9077
+  for (
 
9078
+       rc = 0, test = &test_table[0];
 
9079
+       test->test_func != NULL && rc == 0; test++)
 
9080
+    {
 
9081
+      rc = run_one_test (test);
 
9082
+    }
 
9083
+
 
9084
+  return rc;
 
9085
+}
 
9086
+
 
9087
+/* ---------------------------- interface functions ------------------------ */
 
9088
+
 
9089
+int main (void)
 
9090
+{
 
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 }
 
9111
+  };
 
9112
+
 
9113
+  {
 
9114
+    int rc;
 
9115
+
 
9116
+    rc = run_all_tests (test_table);
 
9117
+
 
9118
+    return rc;
 
9119
+  }
 
9120
+}
 
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)
 
9125
@@ -0,0 +1,21 @@
 
9126
+/* Functional tests for the function hotpatching feature.  */
 
9127
+
 
9128
+/* { dg-do run } */
 
9129
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
9130
+
 
9131
+#include <stdio.h>
 
9132
+
 
9133
+__attribute__ ((hotpatch(0)))
 
9134
+void hp1(void)
 
9135
+{
 
9136
+  printf("hello, world!\n");
 
9137
+}
 
9138
+
 
9139
+int main (void)
 
9140
+{
 
9141
+  return 0;
 
9142
+}
 
9143
+
 
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)
 
9151
@@ -0,0 +1,682 @@
 
9152
+/* Functional tests of the htm __TM_... macros.  */
 
9153
+
 
9154
+/* { dg-do run } */
 
9155
+/* { dg-require-effective-target htm } */
 
9156
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
 
9157
+
 
9158
+/* ---------------------------- included header files ---------------------- */
 
9159
+
 
9160
+#include <stdio.h>
 
9161
+#include <string.h>
 
9162
+#include <inttypes.h>
 
9163
+#include <htmxlintrin.h>
 
9164
+
 
9165
+/* ---------------------------- local definitions -------------------------- */
 
9166
+
 
9167
+#define DEFAULT_MAX_REPETITIONS 5
 
9168
+#define DEFAULT_REQUIRED_QUORUM ((DEFAULT_MAX_REPETITIONS) - 1)
 
9169
+#define DEFAULT_ABORT_ADDRESS (0x12345678u)
 
9170
+
 
9171
+/* ---------------------------- local macros ------------------------------- */
 
9172
+
 
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 }
 
9176
+
 
9177
+/* ---------------------------- local types -------------------------------- */
 
9178
+
 
9179
+typedef int (*test_func_t)(void);
 
9180
+
 
9181
+typedef struct
 
9182
+{
 
9183
+  const char *name;
 
9184
+  test_func_t test_func;
 
9185
+  int max_repetitions;
 
9186
+  int required_quorum;
 
9187
+} test_table_entry_t;
 
9188
+
 
9189
+typedef enum
 
9190
+{
 
9191
+  ABORT_T_SYSTEM = 0,
 
9192
+  ABORT_T_USER = 1,
 
9193
+} abort_user_t;
 
9194
+
 
9195
+typedef enum
 
9196
+{
 
9197
+  ABORT_T_NONE = 0,
 
9198
+  ABORT_T_ILLEGAL,
 
9199
+  ABORT_T_FOOTPRINT_EXCEEDED,
 
9200
+  ABORT_T_NESTED_TOO_DEEP,
 
9201
+  ABORT_T_CONFLICT,
 
9202
+
 
9203
+  ABORT_T_INVALID_ABORT_CODE
 
9204
+} abort_t;
 
9205
+
 
9206
+/* ---------------------------- local variables ---------------------------- */
 
9207
+
 
9208
+__attribute__ ((aligned(256))) static struct __htm_tdb local_tdb256;
 
9209
+static struct __htm_tdb local_tdb;
 
9210
+
 
9211
+static abort_t const abort_classes[] =
 
9212
+{
 
9213
+  ABORT_T_INVALID_ABORT_CODE,
 
9214
+  ABORT_T_NONE,
 
9215
+  ABORT_T_NONE,
 
9216
+  ABORT_T_NONE,
 
9217
+
 
9218
+  ABORT_T_ILLEGAL,
 
9219
+  ABORT_T_NONE,
 
9220
+  ABORT_T_NONE,
 
9221
+  ABORT_T_FOOTPRINT_EXCEEDED,
 
9222
+
 
9223
+  ABORT_T_FOOTPRINT_EXCEEDED,
 
9224
+  ABORT_T_CONFLICT,
 
9225
+  ABORT_T_CONFLICT,
 
9226
+  ABORT_T_ILLEGAL,
 
9227
+
 
9228
+  ABORT_T_NONE,
 
9229
+  ABORT_T_NESTED_TOO_DEEP,
 
9230
+  ABORT_T_NONE,
 
9231
+  ABORT_T_NONE,
 
9232
+
 
9233
+  ABORT_T_NONE
 
9234
+};
 
9235
+
 
9236
+static size_t num_abort_classes = sizeof(abort_classes) / sizeof(abort_t);
 
9237
+
 
9238
+/* ---------------------------- exported variables (globals) --------------- */
 
9239
+
 
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
 
9246
+{
 
9247
+  volatile uint64_t c1;
 
9248
+  volatile uint64_t c2;
 
9249
+  volatile uint64_t c3;
 
9250
+} counters = { 0, 0, 0 };
 
9251
+
 
9252
+/* ---------------------------- local helper functions --------------------- */
 
9253
+
 
9254
+static void dump_tdb(struct __htm_tdb *tdb)
 
9255
+{
 
9256
+  unsigned char *p;
 
9257
+  int i;
 
9258
+  int j;
 
9259
+
 
9260
+  p = (unsigned char *)tdb;
 
9261
+  for (i = 0; i < 16; i++)
 
9262
+    {
 
9263
+      fprintf(stderr, "0x%02x  ", i * 16);
 
9264
+      for (j = 0; j < 16; j++)
 
9265
+       {
 
9266
+         fprintf(stderr, "%02x", (int)p[i * 16 + j]);
 
9267
+         if (j < 15)
 
9268
+           {
 
9269
+             fprintf(stderr, " ");
 
9270
+           }
 
9271
+         if (j == 7)
 
9272
+           {
 
9273
+             fprintf(stderr, " ");
 
9274
+           }
 
9275
+       }
 
9276
+      fprintf(stderr, "\n");
 
9277
+    }
 
9278
+
 
9279
+  return;
 
9280
+}
 
9281
+
 
9282
+static void make_fake_tdb(struct __htm_tdb *tdb)
 
9283
+{
 
9284
+  memset(tdb, 0, sizeof(*tdb));
 
9285
+  tdb->format = 1;
 
9286
+  tdb->nesting_depth = 1;
 
9287
+  tdb->atia = DEFAULT_ABORT_ADDRESS;
 
9288
+  tdb->abort_code = 11;
 
9289
+
 
9290
+  return;
 
9291
+}
 
9292
+
 
9293
+static int check_abort_code_in_tdb(struct __htm_tdb *tdb, uint64_t abort_code)
 
9294
+{
 
9295
+  long expect_rc;
 
9296
+  long rc;
 
9297
+
 
9298
+  if (abort_code != 0)
 
9299
+    {
 
9300
+      long addr;
 
9301
+
 
9302
+      addr = __TM_failure_address(&local_tdb);
 
9303
+      if (addr != DEFAULT_ABORT_ADDRESS)
 
9304
+       {
 
9305
+         return 11;
 
9306
+       }
 
9307
+    }
 
9308
+  {
 
9309
+    long long tdb_abort_code;
 
9310
+
 
9311
+    tdb_abort_code = __TM_failure_code(tdb);
 
9312
+    if ((uint64_t)tdb_abort_code != abort_code)
 
9313
+      {
 
9314
+       fprintf(
 
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);
 
9319
+       return 10;
 
9320
+      }
 
9321
+  }
 
9322
+  expect_rc = (abort_code >= 256) ? 1 : 0;
 
9323
+  rc = __TM_is_user_abort(tdb);
 
9324
+  if (rc != expect_rc)
 
9325
+    {
 
9326
+      fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
 
9327
+      return 1;
 
9328
+    }
 
9329
+  {
 
9330
+    unsigned char code;
 
9331
+
 
9332
+    code = 0xffu;
 
9333
+    rc = __TM_is_named_user_abort(tdb, &code);
 
9334
+    if (rc != expect_rc)
 
9335
+      {
 
9336
+       fprintf(
 
9337
+               stderr, "rc %ld, expect_rc %ld\n", rc,
 
9338
+               expect_rc);
 
9339
+       return 2;
 
9340
+      }
 
9341
+    if (expect_rc == 1 && code != abort_code - 256)
 
9342
+      {
 
9343
+       return 3;
 
9344
+      }
 
9345
+  }
 
9346
+  if (abort_code > (uint64_t)num_abort_classes)
 
9347
+    {
 
9348
+      abort_code = (uint64_t)num_abort_classes;
 
9349
+    }
 
9350
+  expect_rc = (abort_classes[abort_code] == ABORT_T_ILLEGAL) ? 1 : 0;
 
9351
+  rc = __TM_is_illegal(tdb);
 
9352
+  if (rc != expect_rc)
 
9353
+    {
 
9354
+      dump_tdb(tdb);
 
9355
+      fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
 
9356
+      return 4;
 
9357
+    }
 
9358
+  expect_rc =
 
9359
+    (abort_classes[abort_code] == ABORT_T_FOOTPRINT_EXCEEDED) ?
 
9360
+    1 : 0;
 
9361
+  rc = __TM_is_footprint_exceeded(tdb);
 
9362
+  if (rc != expect_rc)
 
9363
+    {
 
9364
+      dump_tdb(tdb);
 
9365
+      fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
 
9366
+      return 5;
 
9367
+    }
 
9368
+  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)
 
9372
+    {
 
9373
+      dump_tdb(tdb);
 
9374
+      fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
 
9375
+      return 6;
 
9376
+    }
 
9377
+  expect_rc = (abort_classes[abort_code] == ABORT_T_CONFLICT) ? 1 : 0;
 
9378
+  rc = __TM_is_conflict(tdb);
 
9379
+  if (rc != expect_rc)
 
9380
+    {
 
9381
+      dump_tdb(tdb);
 
9382
+      fprintf(stderr, "rc %ld, expect_rc %ld\n", rc, expect_rc);
 
9383
+      return 7;
 
9384
+    }
 
9385
+
 
9386
+  return 0;
 
9387
+}
 
9388
+
 
9389
+/* ---------------------------- local test functions ----------------------- */
 
9390
+
 
9391
+/* Not a test; make sure that the involved global cachelines are reserved for
 
9392
+ * writing.  */
 
9393
+static int init_cache(void)
 
9394
+{
 
9395
+  make_fake_tdb(&local_tdb);
 
9396
+  make_fake_tdb(&local_tdb256);
 
9397
+  global_int = 0;
 
9398
+  global_u64 = 0;
 
9399
+  global_float_1 = 1.0;
 
9400
+  global_float_2 = 2.5;
 
9401
+  global_float_3 = 0.0;
 
9402
+  counters.c1 = 0;
 
9403
+  counters.c2 = 0;
 
9404
+  counters.c3 = 0;
 
9405
+
 
9406
+  return 0;
 
9407
+}
 
9408
+
 
9409
+static int test_abort_classification(void)
 
9410
+{
 
9411
+  int i;
 
9412
+
 
9413
+  make_fake_tdb(&local_tdb);
 
9414
+  for (i = 0; i <= 256; i++)
 
9415
+    {
 
9416
+      int rc;
 
9417
+
 
9418
+      local_tdb.abort_code = (uint64_t)i;
 
9419
+      rc = check_abort_code_in_tdb(&local_tdb, (uint64_t)i);
 
9420
+      if (rc != 0)
 
9421
+       {
 
9422
+         return 100 * i + rc;
 
9423
+       }
 
9424
+    }
 
9425
+
 
9426
+  return 0;
 
9427
+}
 
9428
+
 
9429
+static int test_cc_classification(void)
 
9430
+{
 
9431
+  long rc;
 
9432
+
 
9433
+  rc = __TM_is_failure_persistent(0);
 
9434
+  if (rc != 0)
 
9435
+    {
 
9436
+      return 1;
 
9437
+    }
 
9438
+  rc = __TM_is_failure_persistent(1);
 
9439
+  if (rc != 0)
 
9440
+    {
 
9441
+      return 2;
 
9442
+    }
 
9443
+  rc = __TM_is_failure_persistent(2);
 
9444
+  if (rc != 0)
 
9445
+    {
 
9446
+      return 3;
 
9447
+    }
 
9448
+  rc = __TM_is_failure_persistent(3);
 
9449
+  if (rc != 1)
 
9450
+    {
 
9451
+      return 4;
 
9452
+    }
 
9453
+
 
9454
+  return 0;
 
9455
+}
 
9456
+
 
9457
+static int test_tbegin_ntstg_tend(void)
 
9458
+{
 
9459
+  long rc;
 
9460
+
 
9461
+  counters.c1 = 0;
 
9462
+  counters.c2 = 0;
 
9463
+  if ((rc = __TM_simple_begin()) == 0)
 
9464
+    {
 
9465
+      __TM_non_transactional_store((uint64_t *)&counters.c1, 1);
 
9466
+      counters.c2 = 2;
 
9467
+      rc = __TM_end();
 
9468
+      if (rc != 0)
 
9469
+       {
 
9470
+         return 100 * rc + 5;
 
9471
+       }
 
9472
+      if (counters.c1 != 1)
 
9473
+       {
 
9474
+         return 100 * counters.c1 + 2;
 
9475
+       }
 
9476
+      if (counters.c2 != 2)
 
9477
+       {
 
9478
+         return 100 * counters.c2 + 3;
 
9479
+       }
 
9480
+    }
 
9481
+  else
 
9482
+    {
 
9483
+      return 100 * rc + 4;
 
9484
+    }
 
9485
+
 
9486
+  return 0;
 
9487
+}
 
9488
+
 
9489
+static int test_tbegin_ntstg_tabort(void)
 
9490
+{
 
9491
+  register float f;
 
9492
+
 
9493
+  counters.c1 = 0;
 
9494
+  counters.c2 = 0;
 
9495
+  f = 0;
 
9496
+  if (__TM_simple_begin() == 0)
 
9497
+    {
 
9498
+      __TM_non_transactional_store((uint64_t *)&counters.c1, 1);
 
9499
+      counters.c2 = 2;
 
9500
+      f = 1;
 
9501
+      __TM_named_abort(0);
 
9502
+      return 1;
 
9503
+    }
 
9504
+  if (counters.c1 != 1)
 
9505
+    {
 
9506
+      return 100 * counters.c1 + 2;
 
9507
+    }
 
9508
+  if (counters.c2 != 0)
 
9509
+    {
 
9510
+      return 100 * counters.c2 + 3;
 
9511
+    }
 
9512
+  if (f != 0)
 
9513
+    {
 
9514
+      return 100 * f + 4;
 
9515
+    }
 
9516
+
 
9517
+  return 0;
 
9518
+}
 
9519
+
 
9520
+static int test_tbegin_aborts(void)
 
9521
+{
 
9522
+  float f;
 
9523
+  long rc;
 
9524
+
 
9525
+  f = 77;
 
9526
+  if ((rc = __TM_simple_begin()) == 0)
 
9527
+    {
 
9528
+      f = 88;
 
9529
+      __TM_abort();
 
9530
+      return 2;
 
9531
+    }
 
9532
+  else if (rc != 2)
 
9533
+    {
 
9534
+      return 3;
 
9535
+    }
 
9536
+  if (f != 77)
 
9537
+    {
 
9538
+      return 4;
 
9539
+    }
 
9540
+  f = 66;
 
9541
+  if ((rc = __TM_simple_begin()) == 0)
 
9542
+    {
 
9543
+      f = 99;
 
9544
+      __TM_named_abort(3);
 
9545
+      return 5;
 
9546
+    }
 
9547
+  else if (rc != 3)
 
9548
+    {
 
9549
+      return 100 * rc + 6;
 
9550
+    }
 
9551
+  if (f != 66)
 
9552
+    {
 
9553
+      return 100 * f + 7;
 
9554
+    }
 
9555
+  if ((rc = __TM_simple_begin()) == 0)
 
9556
+    {
 
9557
+      global_float_3 = global_float_1 + global_float_2;
 
9558
+      rc = __TM_end();
 
9559
+      if (rc != 0)
 
9560
+       {
 
9561
+         return 100 * rc + 8;
 
9562
+       }
 
9563
+    }
 
9564
+  else
 
9565
+    {
 
9566
+      return 100 * rc + 9;
 
9567
+    }
 
9568
+  if (global_float_3 != global_float_1 + global_float_2)
 
9569
+    {
 
9570
+      return 100 * rc + 10;
 
9571
+    }
 
9572
+
 
9573
+  return 0;
 
9574
+}
 
9575
+
 
9576
+static int test_tbegin_tdb(void)
 
9577
+{
 
9578
+  long rc;
 
9579
+
 
9580
+  local_tdb.format = 0;
 
9581
+  if ((rc = __TM_begin(&local_tdb)) == 0)
 
9582
+    {
 
9583
+      rc = __TM_end();
 
9584
+      if (rc != 0)
 
9585
+       {
 
9586
+         return 100 * rc + 1;
 
9587
+       }
 
9588
+      if (local_tdb.format != 0)
 
9589
+       {
 
9590
+         dump_tdb(&local_tdb);
 
9591
+         return 100 * local_tdb.format + 2;
 
9592
+       }
 
9593
+    }
 
9594
+  else
 
9595
+    {
 
9596
+      return 100 * rc + 3;
 
9597
+    }
 
9598
+  local_tdb.format = 0;
 
9599
+  if ((rc = __TM_begin(&local_tdb)) == 0)
 
9600
+    {
 
9601
+      __TM_named_abort(1);
 
9602
+      return 4;
 
9603
+    }
 
9604
+  else
 
9605
+    {
 
9606
+      if (rc != 3)
 
9607
+       {
 
9608
+         return 100 * rc + 5;
 
9609
+       }
 
9610
+      if (local_tdb.format != 1)
 
9611
+       {
 
9612
+         dump_tdb(&local_tdb);
 
9613
+         return 100 * local_tdb.format + 6;
 
9614
+       }
 
9615
+    }
 
9616
+  local_tdb256.format = 0;
 
9617
+  if ((rc = __TM_begin(&local_tdb256)) == 0)
 
9618
+    {
 
9619
+      rc = __TM_end();
 
9620
+      if (rc != 0)
 
9621
+       {
 
9622
+         return 1100 * rc + 1;
 
9623
+       }
 
9624
+      if (local_tdb256.format != 0)
 
9625
+       {
 
9626
+         dump_tdb(&local_tdb256);
 
9627
+         return 1100 * local_tdb256.format + 2;
 
9628
+       }
 
9629
+    }
 
9630
+  else
 
9631
+    {
 
9632
+      return 1100 * rc + 3;
 
9633
+    }
 
9634
+#if 1 /*!!!does not work*/
 
9635
+  local_tdb256.format = 0;
 
9636
+  if ((rc = __TM_begin(&local_tdb256)) == 0)
 
9637
+    {
 
9638
+      __TM_named_abort(1);
 
9639
+      return 2004;
 
9640
+    }
 
9641
+  else
 
9642
+    {
 
9643
+      if (rc != 3)
 
9644
+       {
 
9645
+         return 2100 * rc + 5;
 
9646
+       }
 
9647
+      if (local_tdb256.format != 1)
 
9648
+       {
 
9649
+         dump_tdb(&local_tdb256);
 
9650
+         return 2100 * local_tdb256.format + 6;
 
9651
+       }
 
9652
+    }
 
9653
+#endif
 
9654
+
 
9655
+  return 0;
 
9656
+}
 
9657
+
 
9658
+static int test_etnd(void)
 
9659
+{
 
9660
+  long rc;
 
9661
+
 
9662
+  {
 
9663
+    long nd;
 
9664
+
 
9665
+    make_fake_tdb(&local_tdb);
 
9666
+    local_tdb.nesting_depth = 0;
 
9667
+    nd = __TM_nesting_depth(&local_tdb);
 
9668
+    if (nd != 0)
 
9669
+      {
 
9670
+       return 1;
 
9671
+      }
 
9672
+    local_tdb.nesting_depth = 7;
 
9673
+    nd = __TM_nesting_depth(&local_tdb);
 
9674
+    if (nd != 7)
 
9675
+      {
 
9676
+       return 7;
 
9677
+      }
 
9678
+    local_tdb.format = 0;
 
9679
+    nd = __TM_nesting_depth(&local_tdb);
 
9680
+    if (nd != 0)
 
9681
+      {
 
9682
+       return 2;
 
9683
+      }
 
9684
+  }
 
9685
+  counters.c1 = 0;
 
9686
+  counters.c1 = 0;
 
9687
+  counters.c2 = 0;
 
9688
+  counters.c3 = 0;
 
9689
+  if ((rc = __TM_simple_begin()) == 0)
 
9690
+    {
 
9691
+      counters.c1 = __TM_nesting_depth(0);
 
9692
+      if (__TM_simple_begin() == 0)
 
9693
+       {
 
9694
+         counters.c2 = __TM_nesting_depth(0);
 
9695
+         if (__TM_simple_begin() == 0)
 
9696
+           {
 
9697
+             counters.c3 = __TM_nesting_depth(0);
 
9698
+             __TM_end();
 
9699
+           }
 
9700
+         __TM_end();
 
9701
+       }
 
9702
+      __TM_end();
 
9703
+    }
 
9704
+  else
 
9705
+    {
 
9706
+      return 100 * rc + 1;
 
9707
+    }
 
9708
+  if (counters.c1 != 1)
 
9709
+    {
 
9710
+      return 100 * counters.c1 + 2;
 
9711
+    }
 
9712
+  if (counters.c2 != 2)
 
9713
+    {
 
9714
+      return 100 * counters.c2 + 3;
 
9715
+    }
 
9716
+  if (counters.c3 != 3)
 
9717
+    {
 
9718
+      return 100 * counters.c3 + 4;
 
9719
+    }
 
9720
+
 
9721
+  return 0;
 
9722
+}
 
9723
+
 
9724
+/* ---------------------------- local testing framework functions ---------- */
 
9725
+
 
9726
+static int run_one_test(const test_table_entry_t *test_entry)
 
9727
+{
 
9728
+  int do_print_passes;
 
9729
+  int succeeded;
 
9730
+  int rc;
 
9731
+  int i;
 
9732
+
 
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)
 
9738
+    {
 
9739
+      printf(
 
9740
+            "         (requires %d successful out of %d runs)\n",
 
9741
+            test_entry->required_quorum,
 
9742
+            test_entry->max_repetitions);
 
9743
+    }
 
9744
+  succeeded = 0;
 
9745
+  rc = 0;
 
9746
+  for (rc = 0, i = 0; i < test_entry->max_repetitions; i++)
 
9747
+    {
 
9748
+      if (do_print_passes == 1)
 
9749
+       {
 
9750
+         if (i == 0)
 
9751
+           {
 
9752
+             printf("        ");
 
9753
+           }
 
9754
+         else
 
9755
+           {
 
9756
+             printf(",");
 
9757
+           }
 
9758
+       }
 
9759
+      rc = test_entry->test_func();
 
9760
+      if (rc == 0)
 
9761
+       {
 
9762
+         if (do_print_passes == 1)
 
9763
+           {
 
9764
+             printf(" success");
 
9765
+           }
 
9766
+         succeeded++;
 
9767
+         if (succeeded >= test_entry->required_quorum)
 
9768
+           {
 
9769
+             break;
 
9770
+           }
 
9771
+       }
 
9772
+      else
 
9773
+       {
 
9774
+         printf(" failed (rc = %d)", rc);
 
9775
+       }
 
9776
+    }
 
9777
+  if (do_print_passes == 1 || rc != 0)
 
9778
+    {
 
9779
+      printf("\n");
 
9780
+    }
 
9781
+  if (succeeded >= test_entry->required_quorum)
 
9782
+    {
 
9783
+      printf("+++ OK   %s\n", test_entry->name);
 
9784
+
 
9785
+      return 0;
 
9786
+    }
 
9787
+  else
 
9788
+    {
 
9789
+      printf("--- FAIL %s\n", test_entry->name);
 
9790
+
 
9791
+      return (rc != 0) ? rc : -1;
 
9792
+    }
 
9793
+}
 
9794
+
 
9795
+static int run_all_tests(const test_table_entry_t *test_table)
 
9796
+{
 
9797
+  const test_table_entry_t *test;
 
9798
+  int rc;
 
9799
+
 
9800
+  for (
 
9801
+       rc = 0, test = &test_table[0];
 
9802
+       test->test_func != NULL && rc == 0; test++)
 
9803
+    {
 
9804
+      rc = run_one_test(test);
 
9805
+    }
 
9806
+
 
9807
+  return rc;
 
9808
+}
 
9809
+
 
9810
+/* ---------------------------- interface functions ------------------------ */
 
9811
+
 
9812
+int main(void)
 
9813
+{
 
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 }
 
9824
+  };
 
9825
+
 
9826
+  {
 
9827
+    int rc;
 
9828
+
 
9829
+    rc = run_all_tests(test_table);
 
9830
+
 
9831
+    return rc;
 
9832
+  }
 
9833
+}
 
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)
 
9838
@@ -0,0 +1,28 @@
 
9839
+/* Functional tests for the function hotpatching feature.  */
 
9840
+
 
9841
+/* { dg-do run } */
 
9842
+/* { dg-options "-O3 -mzarch -mhotpatch --save-temps" } */
 
9843
+
 
9844
+#include <stdio.h>
 
9845
+
 
9846
+__attribute__ ((hotpatch))
 
9847
+inline void hp1(void)
 
9848
+{
 
9849
+  printf("hello, world!\n");
 
9850
+}
 
9851
+
 
9852
+__attribute__ ((hotpatch))
 
9853
+__attribute__ ((always_inline))
 
9854
+void hp2(void) /* { dg-warning "always_inline function might not be inlinable" } */
 
9855
+{
 
9856
+  printf("hello, world!\n");
 
9857
+} /* { dg-warning "function 'hp2' with the 'always_inline' attribute is not hotpatchable" } */
 
9858
+
 
9859
+int main (void)
 
9860
+{
 
9861
+  return 0;
 
9862
+}
 
9863
+
 
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)
 
9871
@@ -0,0 +1,21 @@
 
9872
+/* Functional tests for the function hotpatching feature.  */
 
9873
+
 
9874
+/* { dg-do run } */
 
9875
+/* { dg-options "-O3 -mzarch -mhotpatch=1 --save-temps" } */
 
9876
+
 
9877
+#include <stdio.h>
 
9878
+
 
9879
+__attribute__ ((hotpatch(2)))
 
9880
+void hp1(void)
 
9881
+{
 
9882
+  printf("hello, world!\n");
 
9883
+}
 
9884
+
 
9885
+int main (void)
 
9886
+{
 
9887
+  return 0;
 
9888
+}
 
9889
+
 
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)
 
9897
@@ -0,0 +1,21 @@
 
9898
+/* Functional tests for the function hotpatching feature.  */
 
9899
+
 
9900
+/* { dg-do run } */
 
9901
+/* { dg-options "-O3 -mzarch -mno-hotpatch --save-temps" } */
 
9902
+
 
9903
+#include <stdio.h>
 
9904
+
 
9905
+__attribute__ ((hotpatch(2)))
 
9906
+void hp1(void)
 
9907
+{
 
9908
+  printf("hello, world!\n");
 
9909
+}
 
9910
+
 
9911
+int main (void)
 
9912
+{
 
9913
+  return 0;
 
9914
+}
 
9915
+
 
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)
 
9923
@@ -0,0 +1,20 @@
 
9924
+/* Functional tests for the function hotpatching feature.  */
 
9925
+
 
9926
+/* { dg-do run } */
 
9927
+/* { dg-options "-O3 -mzarch -mhotpatch -mno-hotpatch --save-temps" } */
 
9928
+
 
9929
+#include <stdio.h>
 
9930
+
 
9931
+void hp1(void)
 
9932
+{
 
9933
+  printf("hello, world!\n");
 
9934
+}
 
9935
+
 
9936
+int main (void)
 
9937
+{
 
9938
+  return 0;
 
9939
+}
 
9940
+
 
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)
 
9948
@@ -0,0 +1,20 @@
 
9949
+/* Functional tests for the function hotpatching feature.  */
 
9950
+
 
9951
+/* { dg-do run } */
 
9952
+/* { dg-options "-O3 -mzarch -mno-hotpatch -mhotpatch=1 --save-temps" } */
 
9953
+
 
9954
+#include <stdio.h>
 
9955
+
 
9956
+void hp1(void)
 
9957
+{
 
9958
+  printf("hello, world!\n");
 
9959
+}
 
9960
+
 
9961
+int main (void)
 
9962
+{
 
9963
+  return 0;
 
9964
+}
 
9965
+
 
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)
 
9973
@@ -0,0 +1,10 @@
 
9974
+/* { dg-options "isa_rev>=2" } */
 
9975
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
 
9976
+
 
9977
+NOMIPS16 unsigned short
 
9978
+foo (unsigned short x)
 
9979
+{
 
9980
+  return ((x << 8) & 0xff00) | ((x >> 8) & 0xff);
 
9981
+}
 
9982
+
 
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)
 
9988
@@ -0,0 +1,9 @@
 
9989
+/* { dg-options "isa_rev>=2" } */
 
9990
+
 
9991
+NOMIPS16 unsigned short
 
9992
+foo (unsigned short x)
 
9993
+{
 
9994
+  return __builtin_bswap16 (x);
 
9995
+}
 
9996
+
 
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)
 
10002
@@ -0,0 +1,34 @@
 
10003
+/* { dg-do run } */
 
10004
+/* { dg-options "-mno-plt" } */
 
10005
+
 
10006
+extern void abort (void);
 
10007
+
 
10008
+struct lispstruct
 
10009
+{
 
10010
+  int e;
 
10011
+  int t;
 
10012
+};
 
10013
+
 
10014
+struct lispstruct Cnil_body;
 
10015
+struct lispstruct Ct_body;
 
10016
+int nvalues;
 
10017
+
 
10018
+struct lispstruct * __attribute__ ((noinline))
 
10019
+fLlistp (struct lispstruct *x0)
 
10020
+{
 
10021
+  if (x0 == &Cnil_body
 
10022
+      || (((unsigned long) x0 >= 0x80000000) ? 0
 
10023
+         : (!x0->e ? (x0 != &Cnil_body) : x0->t)))
 
10024
+    x0 = &Ct_body;
 
10025
+  else
 
10026
+    x0 = &Cnil_body;
 
10027
+  nvalues = 1;
 
10028
+  return x0;
 
10029
+}
 
10030
+
 
10031
+int main ()
 
10032
+{
 
10033
+  if (fLlistp ((struct lispstruct *) 0xa0000001) != &Cnil_body)
 
10034
+    abort ();
 
10035
+  return 0;
 
10036
+}
 
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)
 
10041
@@ -0,0 +1,14 @@
 
10042
+/* { dg-options "isa_rev>=2" } */
 
10043
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
 
10044
+
 
10045
+NOMIPS16 unsigned int
 
10046
+foo (unsigned int x)
 
10047
+{
 
10048
+  return (((x << 24) & 0xff000000)
 
10049
+         | ((x << 8) & 0xff0000)
 
10050
+         | ((x >> 8) & 0xff00)
 
10051
+         | ((x >> 24) & 0xff));
 
10052
+}
 
10053
+
 
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)
 
10060
@@ -0,0 +1,10 @@
 
10061
+/* { dg-options "isa_rev>=2" } */
 
10062
+
 
10063
+NOMIPS16 unsigned int
 
10064
+foo (unsigned int x)
 
10065
+{
 
10066
+  return __builtin_bswap32 (x);
 
10067
+}
 
10068
+
 
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)
 
10075
@@ -0,0 +1,20 @@
 
10076
+/* { dg-options "isa_rev>=2 -mgp64" } */
 
10077
+/* { dg-skip-if "bswap recognition needs expensive optimizations" { *-*-* } { "-O0" "-O1" } { "" } } */
 
10078
+
 
10079
+typedef unsigned long long uint64_t;
 
10080
+
 
10081
+NOMIPS16 uint64_t
 
10082
+foo (uint64_t x)
 
10083
+{
 
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));
 
10092
+}
 
10093
+
 
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)
 
10100
@@ -0,0 +1,12 @@
 
10101
+/* { dg-options "isa_rev>=2 -mgp64" } */
 
10102
+
 
10103
+typedef unsigned long long uint64_t;
 
10104
+
 
10105
+NOMIPS16 uint64_t
 
10106
+foo (uint64_t x)
 
10107
+{
 
10108
+  return __builtin_bswap64 (x);
 
10109
+}
 
10110
+
 
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
 
10121
-   reload.  */
 
10122
+   reload.
 
10123
+
 
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
 
10127
+           correct code.  */
 
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" } } */
 
10133
 
 
10134
 struct request
 
10135
 {
 
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)
 
10140
@@ -5,7 +5,7 @@
 
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" } } */
 
10146
 
 
10147
 int
 
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)
 
10153
@@ -0,0 +1,24 @@
 
10154
+! PR libgomp/59467
 
10155
+! { dg-do compile }
 
10156
+! { dg-options "-fopenmp" }
 
10157
+  FUNCTION t()
 
10158
+    INTEGER :: a, b, t
 
10159
+    a = 0
 
10160
+    b = 0
 
10161
+    !$OMP PARALLEL REDUCTION(+:b)
 
10162
+      !$OMP SINGLE     ! { dg-error "is not threadprivate or private in outer context" }
 
10163
+        !$OMP ATOMIC WRITE
 
10164
+        a = 6
 
10165
+      !$OMP END SINGLE COPYPRIVATE (a)
 
10166
+      b = a
 
10167
+    !$OMP END PARALLEL
 
10168
+    t = b
 
10169
+    b = 0
 
10170
+    !$OMP PARALLEL REDUCTION(+:b)
 
10171
+      !$OMP SINGLE
 
10172
+        !$OMP ATOMIC WRITE
 
10173
+        b = 6
 
10174
+      !$OMP END SINGLE COPYPRIVATE (b)
 
10175
+    !$OMP END PARALLEL
 
10176
+    t = t + b
 
10177
+  END FUNCTION
 
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)
 
10182
@@ -0,0 +1,19 @@
 
10183
+! { dg-do compile }
 
10184
+! PR fortran/58989
 
10185
+!
 
10186
+program test
 
10187
+
 
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/)
 
10192
+
 
10193
+  fluxes = 1
 
10194
+
 
10195
+  dmmy = (/2,2,2/)
 
10196
+
 
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
 
10200
+
 
10201
+end program test
 
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)
 
10206
@@ -0,0 +1,27 @@
 
10207
+! { dg-do run }
 
10208
+!
 
10209
+! PR fortran/58771
 
10210
+!
 
10211
+! Contributed by Vittorio Secca  <zeccav@gmail.com>
 
10212
+!
 
10213
+! ICEd on the write statement with f() because the derived type backend
 
10214
+! declaration not built.
 
10215
+!
 
10216
+module m
 
10217
+  type t
 
10218
+    integer(4) g
 
10219
+  end type
 
10220
+end
 
10221
+
 
10222
+type(t) function f() result(ff)
 
10223
+  use m
 
10224
+  ff%g = 42
 
10225
+end
 
10226
+
 
10227
+  use m
 
10228
+  character (20) :: line1, line2
 
10229
+  type(t)  f
 
10230
+  write (line1, *) f()
 
10231
+  write (line2, *) 42_4
 
10232
+  if (line1 .ne. line2) call abort
 
10233
+end
 
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)
 
10238
@@ -0,0 +1,22 @@
 
10239
+! { dg-do compile }
 
10240
+! { dg-options "-Wall" }
 
10241
+!
 
10242
+! PR 58471: [4.8/4.9 Regression] ICE on invalid with missing type constructor and -Wall
 
10243
+!
 
10244
+! Contributed by Andrew Benson <abensonca@gmail.com>
 
10245
+
 
10246
+module cf
 
10247
+  implicit none
 
10248
+  type :: cfmde
 
10249
+  end type
 
10250
+  interface cfmde
 
10251
+     module procedure mdedc   ! { dg-error "is neither function nor subroutine" }
 
10252
+  end interface
 
10253
+contains
 
10254
+  subroutine cfi()
 
10255
+    type(cfmde), pointer :: cfd
 
10256
+    cfd=cfmde()                  ! { dg-error "Can't convert" }
 
10257
+  end subroutine
 
10258
+end module
 
10259
+
 
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)
 
10265
@@ -0,0 +1,18 @@
 
10266
+! { dg-do compile }
 
10267
+!
 
10268
+! PR 58998: [4.8/4.9 Regression] Generic interface problem with gfortran
 
10269
+!
 
10270
+! Contributed by Paul van Delst
 
10271
+
 
10272
+  interface iargc
 
10273
+    procedure iargc_8
 
10274
+  end interface
 
10275
+  
 
10276
+contains
 
10277
+
 
10278
+  integer(8) function iargc_8()
 
10279
+    integer(4) iargc
 
10280
+    iargc_8 = iargc()
 
10281
+  end function
 
10282
+  
 
10283
+end
 
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)
 
10288
@@ -0,0 +1,19 @@
 
10289
+! { dg-do compile }
 
10290
+!
 
10291
+! PR 58099: [4.8/4.9 Regression] [F03] over-zealous procedure-pointer error checking
 
10292
+!
 
10293
+! Contributed by Daniel Price <daniel.price@monash.edu>
 
10294
+
 
10295
+  implicit none
 
10296
+  procedure(real), pointer :: wfunc
 
10297
+
 
10298
+  wfunc => w_cubic 
 
10299
 
10300
+contains
 
10301
+
 
10302
+  pure real function w_cubic(q2)
 
10303
+    real, intent(in) :: q2
 
10304
+    w_cubic = 0.
 
10305
+  end function
 
10306
+
 
10307
+end
 
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)
 
10312
@@ -0,0 +1,16 @@
 
10313
+! { dg-do compile }
 
10314
+!
 
10315
+! PR 58355: [4.7/4.8/4.9 Regression] [F03] ICE with TYPE, EXTENDS before parent TYPE defined
 
10316
+!
 
10317
+! Contributed by Andrew Benson <abensonca@gmail.com>
 
10318
+
 
10319
+module ct
 
10320
+  public :: t1
 
10321
+
 
10322
+  type, extends(t1) :: t2   ! { dg-error "has not been previously defined" }
 
10323
+
 
10324
+  type :: t1
 
10325
+  end type
 
10326
+end
 
10327
+
 
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)
 
10333
@@ -0,0 +1,45 @@
 
10334
+! { dg-do run }
 
10335
+!
 
10336
+! PR fortran/57445
 
10337
+!
 
10338
+! Contributed by Tobias Burnus  <burnus@gcc.gnu.org>
 
10339
+!
 
10340
+! Spurious assert was added at revision 192495
 
10341
+!
 
10342
+module m
 
10343
+  implicit none
 
10344
+  type t
 
10345
+    integer :: i
 
10346
+  end type t
 
10347
+contains
 
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)])
 
10363
+    end if
 
10364
+  end subroutine foo_opt
 
10365
+end module m
 
10366
+  use m
 
10367
+  class(t), allocatable :: xca(:)
 
10368
+  allocate (xca(1), source = t(42))
 
10369
+  select type (xca)
 
10370
+    type is (t)
 
10371
+      if (any (xca%i .ne. [42])) call abort
 
10372
+  end select
 
10373
+  call opt (xca = xca)
 
10374
+  select type (xca)
 
10375
+    type is (t)
 
10376
+      if (any (xca%i .ne. [9,99,999])) call abort
 
10377
+  end select
 
10378
+end
 
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)
 
10383
@@ -0,0 +1,74 @@
 
10384
+! { dg-do run }
 
10385
+!
 
10386
+! PR 59654: [4.8/4.9 Regression] [OOP] Broken function table with complex OO use case
 
10387
+!
 
10388
+! Contributed by Thomas Clune <Thomas.L.Clune@nasa.gov>
 
10389
+
 
10390
+module TestResult_mod
 
10391
+  implicit none
 
10392
+
 
10393
+  type TestResult
 
10394
+    integer :: numRun = 0
 
10395
+  contains
 
10396
+    procedure :: run
 
10397
+    procedure, nopass :: getNumRun
 
10398
+  end type
 
10399
+
 
10400
+contains
 
10401
+
 
10402
+  subroutine run (this)
 
10403
+    class (TestResult) :: this
 
10404
+    this%numRun = this%numRun + 1
 
10405
+  end subroutine
 
10406
+
 
10407
+  subroutine getNumRun()
 
10408
+   end subroutine
 
10409
+
 
10410
+end module
 
10411
+
 
10412
+
 
10413
+module BaseTestRunner_mod
 
10414
+  implicit none
 
10415
+
 
10416
+  type :: BaseTestRunner
 
10417
+  contains
 
10418
+    procedure, nopass :: norun
 
10419
+  end type
 
10420
+
 
10421
+contains
 
10422
+
 
10423
+  function norun () result(result)
 
10424
+    use TestResult_mod, only: TestResult
 
10425
+    type (TestResult) :: result
 
10426
+  end function
 
10427
+
 
10428
+end module
 
10429
+
 
10430
+
 
10431
+module TestRunner_mod
 
10432
+  use BaseTestRunner_mod, only: BaseTestRunner
 
10433
+  implicit none
 
10434
+end module
 
10435
+
 
10436
+
 
10437
+program main
 
10438
+  use TestRunner_mod, only: BaseTestRunner
 
10439
+  use TestResult_mod, only: TestResult
 
10440
+  implicit none
 
10441
+
 
10442
+  type (TestResult) :: result
 
10443
+
 
10444
+  call runtest (result)
 
10445
+  
 
10446
+contains
 
10447
+
 
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()
 
10453
+  end subroutine
 
10454
+
 
10455
+end
 
10456
+
 
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)
 
10462
@@ -0,0 +1,17 @@
 
10463
+! { dg-do compile }
 
10464
+!
 
10465
+! PR 59493: [OOP] ICE: Segfault on Class(*) pointer association
 
10466
+!
 
10467
+! Contributed by Hossein Talebi <talebi.hossein@gmail.com>
 
10468
+
 
10469
+  implicit none
 
10470
+
 
10471
+  type ty_mytype1
 
10472
+  end type
 
10473
+
 
10474
+  class(ty_mytype1), allocatable, target:: cla1
 
10475
+  class(*), pointer :: ptr
 
10476
+
 
10477
+  ptr => cla1
 
10478
+
 
10479
+end
 
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)
 
10484
@@ -0,0 +1,57 @@
 
10485
+/* PR tree-optimization/58984 */
 
10486
+
 
10487
+struct S { int f0 : 8; int : 6; int f1 : 5; };
 
10488
+struct T { char f0; int : 6; int f1 : 5; };
 
10489
+
 
10490
+int a, *c = &a, e, n, b, m;
 
10491
+
 
10492
+static int
 
10493
+foo (struct S p)
 
10494
+{
 
10495
+  const unsigned short *f[36];
 
10496
+  for (; e < 2; e++)
 
10497
+    {
 
10498
+      const unsigned short **i = &f[0];
 
10499
+      *c ^= 1;
 
10500
+      if (p.f1)
 
10501
+       {
 
10502
+         *i = 0;
 
10503
+         return b;
 
10504
+       }
 
10505
+    }
 
10506
+  return 0;
 
10507
+}
 
10508
+
 
10509
+static int
 
10510
+bar (struct T p)
 
10511
+{
 
10512
+  const unsigned short *f[36];
 
10513
+  for (; e < 2; e++)
 
10514
+    {
 
10515
+      const unsigned short **i = &f[0];
 
10516
+      *c ^= 1;
 
10517
+      if (p.f1)
 
10518
+       {
 
10519
+         *i = 0;
 
10520
+         return b;
 
10521
+       }
 
10522
+    }
 
10523
+  return 0;
 
10524
+}
 
10525
+
 
10526
+int
 
10527
+main ()
 
10528
+{
 
10529
+  struct S o = { 1, 1 };
 
10530
+  foo (o);
 
10531
+  m = n || o.f0;
 
10532
+  if (a != 1)
 
10533
+    __builtin_abort ();
 
10534
+  e = 0;
 
10535
+  struct T p = { 1, 1 };
 
10536
+  bar (p);
 
10537
+  m |= n || p.f0;
 
10538
+  if (a != 0)
 
10539
+    __builtin_abort ();
 
10540
+  return 0;
 
10541
+}
 
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)
 
10546
@@ -0,0 +1,34 @@
 
10547
+/* PR middle-end/59138 */
 
10548
+/* Testcase by John Regehr <regehr@cs.utah.edu> */
 
10549
+
 
10550
+extern void abort (void);
 
10551
+
 
10552
+#pragma pack(1)
 
10553
+
 
10554
+struct S0 {
 
10555
+  int f0;
 
10556
+  int f1;
 
10557
+  int f2;
 
10558
+  short f3;
 
10559
+};
 
10560
+
 
10561
+short a = 1;
 
10562
+
 
10563
+struct S0 b = { 1 }, c, d, e;
 
10564
+
 
10565
+struct S0 fn1() { return c; }
 
10566
+
 
10567
+void fn2 (void)
 
10568
+{
 
10569
+  b = fn1 ();
 
10570
+  a = 0;
 
10571
+  d = e;
 
10572
+}
 
10573
+
 
10574
+int main (void)
 
10575
+{
 
10576
+  fn2 ();
 
10577
+  if (a != 0)
 
10578
+    abort ();
 
10579
+  return 0;
 
10580
+}
 
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)
 
10585
@@ -0,0 +1,44 @@
 
10586
+/* PR tree-optimization/59358 */
 
10587
+
 
10588
+__attribute__((noinline, noclone)) int
 
10589
+foo (int *x, int y)
 
10590
+{
 
10591
+  int z = *x;
 
10592
+  if (y > z && y <= 16)
 
10593
+    while (y > z)
 
10594
+      z *= 2;
 
10595
+  return z;
 
10596
+}
 
10597
+
 
10598
+int
 
10599
+main ()
 
10600
+{
 
10601
+  int i;
 
10602
+  for (i = 1; i < 17; i++)
 
10603
+    {
 
10604
+      int j = foo (&i, 16);
 
10605
+      int k;
 
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;
 
10610
+      else if (i == 3)
 
10611
+       k = 24;
 
10612
+      else
 
10613
+       k = 16;
 
10614
+      if (j != k)
 
10615
+       __builtin_abort ();
 
10616
+      j = foo (&i, 7);
 
10617
+      if (i >= 7)
 
10618
+       k = i;
 
10619
+      else if (i >= 4)
 
10620
+       k = 8 + (i - 4) * 2;
 
10621
+      else if (i == 3)
 
10622
+       k = 12;
 
10623
+      else
 
10624
+       k = 8;
 
10625
+      if (j != k)
 
10626
+       __builtin_abort ();
 
10627
+    }
 
10628
+  return 0;
 
10629
+}
 
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)
 
10634
@@ -0,0 +1,23 @@
 
10635
+/* PR tree-optimization/59014 */
 
10636
+
 
10637
+__attribute__((noinline, noclone)) long long int
 
10638
+foo (long long int x, long long int y)
 
10639
+{
 
10640
+  if (((int) x | (int) y) != 0)
 
10641
+    return 6;
 
10642
+  return x + y;
 
10643
+}
 
10644
+
 
10645
+int
 
10646
+main ()
 
10647
+{
 
10648
+  if (sizeof (long long) == sizeof (int))
 
10649
+    return 0;
 
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 ();
 
10656
+  return 0;
 
10657
+}
 
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)
 
10662
@@ -0,0 +1,15 @@
 
10663
+/* PR target/59101 */
 
10664
+
 
10665
+__attribute__((noinline, noclone)) int
 
10666
+foo (int a)
 
10667
+{
 
10668
+  return (~a & 4102790424LL) > 0 | 6;
 
10669
+}
 
10670
+
 
10671
+int
 
10672
+main ()
 
10673
+{
 
10674
+  if (foo (0) != 7)
 
10675
+    __builtin_abort ();
 
10676
+  return 0;
 
10677
+}
 
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)
 
10682
@@ -0,0 +1,40 @@
 
10683
+#include <assert.h>
 
10684
+
 
10685
+int a, *b, c, d, f, **i, p, q, *r;
 
10686
+short o, j;
 
10687
+
 
10688
+static int __attribute__((noinline, noclone))
 
10689
+fn1 (int *p1, int **p2)
 
10690
+{
 
10691
+  int **e = &b;
 
10692
+  for (; p; p++)
 
10693
+    *p1 = 1;
 
10694
+  *e = *p2 = &d;
 
10695
+
 
10696
+  assert (r);
 
10697
+
 
10698
+  return c;
 
10699
+}
 
10700
+
 
10701
+static int ** __attribute__((noinline, noclone))
 
10702
+fn2 (void)
 
10703
+{
 
10704
+  for (f = 0; f != 42; f++)
 
10705
+    {
 
10706
+      int *g[3] = {0, 0, 0};
 
10707
+      for (o = 0; o; o--)
 
10708
+        for (; a > 1;)
 
10709
+          {
 
10710
+            int **h[1] = { &g[2] };
 
10711
+          }
 
10712
+    }
 
10713
+  return &r;
 
10714
+}
 
10715
+
 
10716
+int
 
10717
+main (void)
 
10718
+{
 
10719
+  i = fn2 ();
 
10720
+  fn1 (b, i);
 
10721
+  return 0;
 
10722
+}
 
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)
 
10727
@@ -0,0 +1,26 @@
 
10728
+/* PR rtl-optimization/58726 */
 
10729
+
 
10730
+int a, c;
 
10731
+union { int f1; int f2 : 1; } b;
 
10732
+
 
10733
+short
 
10734
+foo (short p)
 
10735
+{
 
10736
+  return p < 0 ? p : a;
 
10737
+}
 
10738
+
 
10739
+int
 
10740
+main ()
 
10741
+{
 
10742
+  if (sizeof (short) * __CHAR_BIT__ != 16
 
10743
+      || sizeof (int) * __CHAR_BIT__ != 32)
 
10744
+    return 0;
 
10745
+  b.f1 = 56374;
 
10746
+  unsigned short d;
 
10747
+  int e = b.f2;
 
10748
+  d = e == 0 ? b.f1 : 0;
 
10749
+  c = foo (d);
 
10750
+  if (c != (short) 56374)
 
10751
+    __builtin_abort ();
 
10752
+  return 0;
 
10753
+}
 
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)
 
10758
@@ -0,0 +1,25 @@
 
10759
+/* PR tree-optimization/59014 */
 
10760
+
 
10761
+int a = 2, b, c, d;
 
10762
+
 
10763
+int
 
10764
+foo ()
 
10765
+{
 
10766
+  for (;; c++)
 
10767
+    if ((b > 0) | (a & 1))
 
10768
+      ;
 
10769
+    else
 
10770
+      {
 
10771
+       d = a;
 
10772
+       return 0;
 
10773
+      }
 
10774
+}
 
10775
+
 
10776
+int
 
10777
+main ()
 
10778
+{
 
10779
+  foo ();
 
10780
+  if (d != 2)
 
10781
+    __builtin_abort ();
 
10782
+  return 0;
 
10783
+}
 
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)
 
10788
@@ -0,0 +1,11 @@
 
10789
+/* PR tree-optimization/59388 */
 
10790
+
 
10791
+int a;
 
10792
+struct S { unsigned int f:1; } b;
 
10793
+
 
10794
+int
 
10795
+main ()
 
10796
+{
 
10797
+  a = (0 < b.f) | b.f;
 
10798
+  return a;
 
10799
+}
 
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)
 
10804
@@ -0,0 +1,11 @@
 
10805
+/* PR middle-end/58970 */
 
10806
+
 
10807
+struct T { int b : 1; };
 
10808
+struct S { struct T t[1]; };
 
10809
+
 
10810
+void
 
10811
+foo (int x, struct S *s)
 
10812
+{
 
10813
+  if (x == -1)
 
10814
+    s->t[x].b = 0;
 
10815
+}
 
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)
 
10820
@@ -0,0 +1,27 @@
 
10821
+/* PR target/59803 */
 
10822
+
 
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; };
 
10827
+int c, d, e;
 
10828
+static int f;
 
10829
+
 
10830
+void
 
10831
+foo (void)
 
10832
+{
 
10833
+  f = 1;
 
10834
+}
 
10835
+
 
10836
+void
 
10837
+bar (struct B *x)
 
10838
+{
 
10839
+  x->i = e;
 
10840
+  x->k = c;
 
10841
+  x->l = d;
 
10842
+  x->j = a.h;
 
10843
+  x->m = f;
 
10844
+  if (x->i != e) baz ();
 
10845
+  if (x->k != c) baz ();
 
10846
+  if (x->j != a.h) baz ();
 
10847
+}
 
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)
 
10852
@@ -0,0 +1,19 @@
 
10853
+/* PR rtl-optimization/58997 */
 
10854
+
 
10855
+int a, b, c, e;
 
10856
+short d;
 
10857
+char h;
 
10858
+
 
10859
+void
 
10860
+foo ()
 
10861
+{
 
10862
+  while (b)
 
10863
+    {
 
10864
+      d = a ? c : 1 % a;
 
10865
+      c = d;
 
10866
+      h = d;
 
10867
+      if (!h)
 
10868
+       while (e)
 
10869
+         ;
 
10870
+    }
 
10871
+}
 
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)
 
10876
@@ -0,0 +1,11 @@
 
10877
+/* PR middle-end/58970 */
 
10878
+
 
10879
+struct T { char a : 8; char b : 1; };
 
10880
+struct S { char x; struct T t[1]; };
 
10881
+
 
10882
+void
 
10883
+foo (int x, struct S *s)
 
10884
+{
 
10885
+  if (x == -1)
 
10886
+    s->t[x].b = 0;
 
10887
+}
 
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)
 
10892
@@ -0,0 +1,21 @@
 
10893
+/* PR tree-optimization/59362 */
 
10894
+
 
10895
+char *
 
10896
+foo (char *r, int s)
 
10897
+{
 
10898
+  r = __builtin___stpcpy_chk (r, "abc", __builtin_object_size (r, 1));
 
10899
+  if (s)
 
10900
+    r = __builtin___stpcpy_chk (r, "d", __builtin_object_size (r, 1));
 
10901
+  return r;
 
10902
+}
 
10903
+
 
10904
+char *a;
 
10905
+long int b;
 
10906
+
 
10907
+void
 
10908
+bar (void)
 
10909
+{
 
10910
+  b = __builtin_object_size (0, 0);
 
10911
+  a = __builtin___stpcpy_chk (0, "", b);
 
10912
+  b = __builtin_object_size (a, 0);
 
10913
+}
 
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)
 
10918
@@ -0,0 +1,25 @@
 
10919
+/* PR rtl-optimization/58668 */
 
10920
+/* { dg-do compile } */
 
10921
+/* { dg-options "-O2" } */
 
10922
+/* { dg-additional-options "-mthumb" { target { { arm*-*-* } && arm_thumb2_ok } } } */
 
10923
+
 
10924
+void *fn1 (void *);
 
10925
+void *fn2 (void *, const char *);
 
10926
+void fn3 (void *);
 
10927
+void fn4 (void *, int);
 
10928
+
 
10929
+void *
 
10930
+test (void *x)
 
10931
+{
 
10932
+  void *a, *b;
 
10933
+  if (!(a = fn1 (x)))
 
10934
+    return (void *) 0;
 
10935
+  if (!(b = fn2 (a, "w")))
 
10936
+    {
 
10937
+      fn3 (a);
 
10938
+      return (void *) 0;
 
10939
+    }
 
10940
+  fn3 (a);
 
10941
+  fn4 (b, 1);
 
10942
+  return b;
 
10943
+}
 
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)
 
10948
@@ -1,8 +1,8 @@
 
10949
-/* PR rtl-optimization/57130 */
 
10950
+/* PR rtl-optimization/57518 */
 
10951
 
 
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" } } */
 
10956
 
 
10957
 char ip[10];
 
10958
 int total;
 
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)
 
10963
@@ -0,0 +1,28 @@
 
10964
+/* { dg-do run } */
 
10965
+/* { dg-options "-O2" } */
 
10966
+
 
10967
+extern void abort (void);
 
10968
+extern char *strncpy(char *, const char *, __SIZE_TYPE__);
 
10969
+
 
10970
+union u {
 
10971
+    struct {
 
10972
+       char vi[8];
 
10973
+       char pi[16];
 
10974
+    };
 
10975
+    char all[8+16+4];
 
10976
+};
 
10977
+
 
10978
+void __attribute__((noinline,noclone))
 
10979
+f(union u *u)
 
10980
+{
 
10981
+  char vi[8+1];
 
10982
+  __builtin_strncpy(vi, u->vi, sizeof(u->vi));
 
10983
+  if (__builtin_object_size (u->all, 1) != -1)
 
10984
+    abort ();
 
10985
+}
 
10986
+int main()
 
10987
+{
 
10988
+  union u u;
 
10989
+  f (&u);
 
10990
+  return 0;
 
10991
+}
 
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)
 
10996
@@ -4,7 +4,7 @@
 
10997
 /* { dg-do run } */
 
10998
 /* { dg-options "-O1 -std=c99" } */
 
10999
 
 
11000
-#include <stdlib.h>
 
11001
+extern void abort (void);
 
11002
 
 
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)
 
11009
@@ -1,5 +1,5 @@
 
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)
 
11020
@@ -0,0 +1,13 @@
 
11021
+/* { dg-do run } */
 
11022
+/* { dg-require-effective-target sync_int_128_runtime } */
 
11023
+/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
 
11024
+
 
11025
+__int128_t i;
 
11026
+
 
11027
+int main()
 
11028
+{
 
11029
+  __atomic_store_16(&i, -1, 0);
 
11030
+  if (i != -1)
 
11031
+    __builtin_abort();
 
11032
+  return 0;
 
11033
+}
 
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)
 
11038
@@ -0,0 +1,15 @@
 
11039
+/* PR middle-end/59827 */
 
11040
+/* { dg-do compile } */
 
11041
+
 
11042
+int
 
11043
+foo (int p[2][]) /* { dg-error "array type has incomplete element type" } */
 
11044
+{
 
11045
+  return p[0][0];
 
11046
+}
 
11047
+
 
11048
+void
 
11049
+bar (void)
 
11050
+{
 
11051
+  int p[2][1];
 
11052
+  foo (p); /* { dg-error "type of formal parameter 1 is incomplete" } */
 
11053
+}
 
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)
 
11058
@@ -7,13 +7,13 @@
 
11059
 #include "strlenopt-4.c"
 
11060
 
 
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)
 
11082
@@ -0,0 +1,8 @@
 
11083
+/* { dg-do compile } */
 
11084
+/* { dg-options "-std=c99 -Wpedantic" } */
 
11085
+
 
11086
+unsigned int
 
11087
+foo (void)
 
11088
+{
 
11089
+  return sizeof ((int[]) {}); /* { dg-warning "ISO C forbids empty initializer braces" } */
 
11090
+}
 
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)
 
11095
@@ -1,4 +1,4 @@
 
11096
-/* { dg-do run { xfail *-*-* } } */
 
11097
+/* { dg-do run } */
 
11098
 /* { dg-options "-O2" } */
 
11099
 
 
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)
 
11105
@@ -4,7 +4,8 @@
 
11106
 /* { dg-do run } */
 
11107
 /* { dg-options "-O1 -std=c99" } */
 
11108
 
 
11109
-#include <stdlib.h>
 
11110
+extern void abort (void);
 
11111
+extern void exit (int);
 
11112
 
 
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)
 
11119
@@ -0,0 +1,22 @@
 
11120
+/* PR middle-end/59011 */
 
11121
+/* { dg-do compile } */
 
11122
+/* { dg-options "-std=gnu99" } */
 
11123
+
 
11124
+void
 
11125
+foo (int m)
 
11126
+{
 
11127
+  int a[m];
 
11128
+  void
 
11129
+  bar (void)
 
11130
+  {
 
11131
+    {
 
11132
+      int
 
11133
+      baz (void)
 
11134
+      {
 
11135
+       return a[0];
 
11136
+      }
 
11137
+    }
 
11138
+    a[0] = 42;
 
11139
+  }
 
11140
+  bar ();
 
11141
+}
 
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)
 
11146
@@ -0,0 +1,24 @@
 
11147
+/* { dg-do compile } */
 
11148
+/* { dg-options "-O2 -ftree-tail-merge -fdump-tree-pre" } */
 
11149
+
 
11150
+/* Type that matches the 'p' constraint.  */
 
11151
+#define TYPE void *
 
11152
+
 
11153
+static inline
 
11154
+void bar (TYPE *r)
 
11155
+{
 
11156
+  TYPE t;
 
11157
+  __asm__ ("" : "=&p" (t), "=p" (*r));
 
11158
+}
 
11159
+
 
11160
+void
 
11161
+foo (int n, TYPE *x, TYPE *y)
 
11162
+{
 
11163
+  if (n == 0)
 
11164
+    bar (x);
 
11165
+  else
 
11166
+    bar (y);
 
11167
+}
 
11168
+
 
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 @@
 
11176
    memcpy.  */
 
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)
 
11199
@@ -0,0 +1,39 @@
 
11200
+/* { dg-do run } */
 
11201
+
 
11202
+extern void abort (void);
 
11203
+
 
11204
+struct
 
11205
+{
 
11206
+  int f0;
 
11207
+  int f1:1;
 
11208
+  int f2:2;
 
11209
+} a = {0, 0, 1};
 
11210
+
 
11211
+int b, c, *d, e, f;
 
11212
+
 
11213
+int
 
11214
+fn1 ()
 
11215
+{
 
11216
+  for (; b < 1; ++b)
 
11217
+    {
 
11218
+      for (e = 0; e < 1; e = 1)
 
11219
+       {
 
11220
+         int **g = &d;
 
11221
+         *g = &c;
 
11222
+       } 
 
11223
+      *d = 0;
 
11224
+      f = a.f1;
 
11225
+      if (f)
 
11226
+       return 0;
 
11227
+    }
 
11228
+  return 0;
 
11229
+}
 
11230
+
 
11231
+int
 
11232
+main ()
 
11233
+{
 
11234
+  fn1 ();
 
11235
+  if (b != 1)
 
11236
+    abort ();
 
11237
+  return 0;
 
11238
+}
 
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)
 
11243
@@ -0,0 +1,30 @@
 
11244
+/* { dg-do run } */
 
11245
+
 
11246
+extern void abort (void);
 
11247
+
 
11248
+struct S
 
11249
+{
 
11250
+  int f0;
 
11251
+} a = {1}, b, g, *c = &b, **f = &c;
 
11252
+
 
11253
+int *d, **e = &d, h;
 
11254
+
 
11255
+struct S
 
11256
+foo ()
 
11257
+{
 
11258
+  *e = &h;
 
11259
+  if (!d) 
 
11260
+    __builtin_unreachable ();
 
11261
+  *f = &g;
 
11262
+  return a;
 
11263
+}
 
11264
+
 
11265
+int
 
11266
+main ()
 
11267
+{
 
11268
+  struct S *i = c;
 
11269
+  *i = foo ();
 
11270
+  if (b.f0 != 1)
 
11271
+    abort ();
 
11272
+  return 0;
 
11273
+}
 
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)
 
11278
@@ -0,0 +1,16 @@
 
11279
+/* { dg-do compile } */
 
11280
+
 
11281
+int x[1024], y[1024], z[1024], w[1024];
 
11282
+void foo (void)
 
11283
+{
 
11284
+  int i;
 
11285
+  for (i = 1; i < 1024; ++i)
 
11286
+    {
 
11287
+      int a = x[i];
 
11288
+      int b = y[i];
 
11289
+      int c = x[i-1];
 
11290
+      int d = y[i-1];
 
11291
+      if (w[i])
 
11292
+       z[i] = (a + b) + (c + d);
 
11293
+    }
 
11294
+}
 
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)
 
11299
@@ -0,0 +1,21 @@
 
11300
+/* { dg-do compile } */
 
11301
+
 
11302
+int a, d, e;
 
11303
+long b[10];
 
11304
+int c[10][8];
 
11305
+
 
11306
+int fn1(p1)
 
11307
+{ 
 
11308
+  return 1 >> p1; 
 
11309
+}
 
11310
+
 
11311
+void fn2(void)
 
11312
+{
 
11313
+  int f;
 
11314
+  for (a=1; a <= 4; a++)
 
11315
+    {
 
11316
+      f = fn1(0 < c[a][0]);
 
11317
+      if (f || d)
 
11318
+       e = b[a] = 1;
 
11319
+    }
 
11320
+}
 
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)
 
11325
@@ -0,0 +1,12 @@
 
11326
+/* { dg-do run } */
 
11327
+
 
11328
+int a, c;
 
11329
+
 
11330
+int main ()
 
11331
+{
 
11332
+  int e = -1;
 
11333
+  short d = (c <= 0) ^ e;
 
11334
+  if ((unsigned int) a - (a || d) <= (unsigned int) a)
 
11335
+    __builtin_abort ();
 
11336
+  return 0;
 
11337
+}
 
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)
 
11342
@@ -0,0 +1,20 @@
 
11343
+/* { dg-do compile } */
 
11344
+
 
11345
+int a, b, c, d, e;
 
11346
+int fn1(p1, p2) { return p2 == 0 ? p1 : 1 % p2; }
 
11347
+
 
11348
+void fn2()
 
11349
+{
 
11350
+  c = 0;
 
11351
+  for (;; c = (unsigned short)c)
 
11352
+    {
 
11353
+      b = 2;
 
11354
+      for (; b; b = a)
 
11355
+       {
 
11356
+         e = fn1(2, c && 1);
 
11357
+         d = c == 0 ? e : c;
 
11358
+         if (d)
 
11359
+           return;
 
11360
+       }
 
11361
+    }
 
11362
+}
 
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)
 
11367
@@ -0,0 +1,107 @@
 
11368
+/* { dg-options "-mlong-calls" { target mips*-*-* } } */
 
11369
+
 
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;
 
11376
+};
 
11377
+
 
11378
+struct dmx_ts_feed {
 
11379
+ int is_filtering;
 
11380
+};
 
11381
+struct dmx_section_feed {
 
11382
+ u16 secbufp;
 
11383
+ u16 seclen;
 
11384
+ u16 tsfeedp;
 
11385
+};
 
11386
+
 
11387
+typedef int (*dmx_ts_cb) (
 
11388
+       const u8 * buffer1,
 
11389
+      size_t buffer1_length,
 
11390
+      const u8 * buffer2,
 
11391
+      size_t buffer2_length
 
11392
+);
 
11393
+
 
11394
+struct dvb_demux_feed {
 
11395
+ union {
 
11396
+  struct dmx_ts_feed ts;
 
11397
+  struct dmx_section_feed sec;
 
11398
+ } feed;
 
11399
+ union {
 
11400
+  dmx_ts_cb ts;
 
11401
+ } cb;
 
11402
+ int type;
 
11403
+ u16 pid;
 
11404
+ int ts_type;
 
11405
+ struct list_head list_head;
 
11406
+};
 
11407
+
 
11408
+struct dvb_demux {
 
11409
+ int (*stop_feed)(struct dvb_demux_feed *feed);
 
11410
+ struct list_head feed_list;
 
11411
+};
 
11412
+
 
11413
+
 
11414
+static
 
11415
+inline
 
11416
+__attribute__((always_inline))
 
11417
+u8
 
11418
+payload(const u8 *tsp)
 
11419
+{
 
11420
+ if (tsp[3] & 0x20) {
 
11421
+   return 184 - 1 - tsp[4];
 
11422
+ }
 
11423
+ return 184;
 
11424
+}
 
11425
+
 
11426
+static
 
11427
+inline
 
11428
+__attribute__((always_inline))
 
11429
+int
 
11430
+dvb_dmx_swfilter_payload(struct dvb_demux_feed *feed, const u8 *buf)
 
11431
+{
 
11432
+ int count = payload(buf);
 
11433
+ int p;
 
11434
+ if (count == 0)
 
11435
+  return -1;
 
11436
+ return feed->cb.ts(&buf[p], count, ((void *)0), 0);
 
11437
+}
 
11438
+
 
11439
+static
 
11440
+inline
 
11441
+__attribute__((always_inline))
 
11442
+void
 
11443
+dvb_dmx_swfilter_packet_type(struct dvb_demux_feed *feed, const u8 *buf)
 
11444
+{
 
11445
+ switch (feed->type) {
 
11446
+ case 0:
 
11447
+  if (feed->ts_type & 1) {
 
11448
+    dvb_dmx_swfilter_payload(feed, buf);
 
11449
+  }
 
11450
+  if (dvb_dmx_swfilter_section_packet(feed, buf) < 0)
 
11451
+   feed->feed.sec.seclen = feed->feed.sec.secbufp = 0;
 
11452
+ }
 
11453
+}
 
11454
+
 
11455
+static
 
11456
+void
 
11457
+dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)
 
11458
+{
 
11459
+ struct dvb_demux_feed *feed;
 
11460
+ int dvr_done = 0;
 
11461
+
 
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);
 
11467
+ }
 
11468
+}
 
11469
+void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, size_t count)
 
11470
+{
 
11471
+ while (count--) {
 
11472
+   dvb_dmx_swfilter_packet(demux, buf);
 
11473
+ }
 
11474
+}
 
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)
 
11479
@@ -0,0 +1,42 @@
 
11480
+/* { dg-do run } */
 
11481
+/* { dg-additional-options "-ftree-pre -ftree-partial-pre" } */
 
11482
+
 
11483
+extern void abort (void);
 
11484
+
 
11485
+int b, c, d, f, g, h, i, j[6], *l = &b, *m, n, *o, r; 
 
11486
+char k;
 
11487
+
 
11488
+static int
 
11489
+foo ()
 
11490
+{
 
11491
+  char *p = &k;
 
11492
+
 
11493
+  for (; d; d++)
 
11494
+    if (i)
 
11495
+      h = 0;
 
11496
+    else
 
11497
+      h = c || (r = 0);
 
11498
+
 
11499
+  for (f = 0; f < 2; f++)
 
11500
+    {
 
11501
+      unsigned int q;
 
11502
+      *l = 0;
 
11503
+      if (n)
 
11504
+       *m = g;
 
11505
+      if (g)
 
11506
+       o = 0;
 
11507
+      for (q = -8; q >= 5; q++)
 
11508
+       (*p)--;
 
11509
+    }
 
11510
+
 
11511
+  return 0;
 
11512
+}
 
11513
+
 
11514
+int
 
11515
+main ()
 
11516
+{
 
11517
+  foo ();
 
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)
 
11519
+    abort ();
 
11520
+  return 0;
 
11521
+}
 
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)
 
11526
@@ -0,0 +1,21 @@
 
11527
+/* { dg-do run } */
 
11528
+
 
11529
+extern void abort (void);
 
11530
+
 
11531
+int a = 2, b;
 
11532
+
 
11533
+int
 
11534
+main ()
 
11535
+{
 
11536
+  int c;
 
11537
+  if (!b)
 
11538
+    {
 
11539
+      b = a;
 
11540
+      c = a == 0 ? 1 : 1 % a;
 
11541
+      if (c)
 
11542
+       b = 0;
 
11543
+    }
 
11544
+  if (b != 0)
 
11545
+    abort ();
 
11546
+  return 0;
 
11547
+}
 
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)
 
11552
@@ -0,0 +1,51 @@
 
11553
+/* { dg-do run } */
 
11554
+/* { dg-additional-options "-fstrict-overflow" } */
 
11555
+
 
11556
+extern void abort (void);
 
11557
+
 
11558
+int a, b, c, d, e, f, g, h = 1, i;
 
11559
+
 
11560
+int foo (int p)
 
11561
+{
 
11562
+  return p < 0 && a < - __INT_MAX__ - 1 - p ? 0 : 1;
 
11563
+}
 
11564
+
 
11565
+int *bar ()
 
11566
+{
 
11567
+  int j; 
 
11568
+  i = h ? 0 : 1 % h;
 
11569
+  for (j = 0; j < 1; j++)
 
11570
+    for (d = 0; d; d++)
 
11571
+      for (e = 1; e;)
 
11572
+       return 0;
 
11573
+  return 0;
 
11574
+}
 
11575
+
 
11576
+int baz ()
 
11577
+{
 
11578
+  for (; b >= 0; b--)
 
11579
+    for (c = 1; c >= 0; c--)
 
11580
+      {
 
11581
+       int *k = &c;
 
11582
+       for (;;)
 
11583
+         {
 
11584
+           for (f = 0; f < 1; f++)
 
11585
+             {
 
11586
+               g = foo (*k);
 
11587
+               bar ();
 
11588
+             }
 
11589
+           if (*k)
 
11590
+             break;
 
11591
+           return 0;
 
11592
+         }
 
11593
+      }
 
11594
+  return 0;
 
11595
+}
 
11596
+
 
11597
+int main ()
 
11598
+{
 
11599
+  baz ();
 
11600
+  if (b != 0)
 
11601
+    abort ();
 
11602
+  return 0;
 
11603
+}
 
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)
 
11608
@@ -0,0 +1,34 @@
 
11609
+/* { dg-do run } */
 
11610
+/* { dg-additional-options "-fstrict-overflow" } */
 
11611
+
 
11612
+int a, b, d, e, f, *g, h, i;
 
11613
+volatile int c;
 
11614
+
 
11615
+char foo (unsigned char p)
 
11616
+{
 
11617
+  return p + 1;
 
11618
+}
 
11619
+
 
11620
+int bar () 
 
11621
+{
 
11622
+  for (h = 0; h < 3; h = foo (h))
 
11623
+    {
 
11624
+      c;
 
11625
+      for (f = 0; f < 1; f++)
 
11626
+       {
 
11627
+         i = a && 0 < -__INT_MAX__ - h ? 0 : 1;
 
11628
+         if (e)
 
11629
+           for (; d;)
 
11630
+             b = 0;
 
11631
+         else
 
11632
+           g = 0;
 
11633
+       }
 
11634
+    }
 
11635
+  return 0;
 
11636
+}
 
11637
+
 
11638
+int main ()
 
11639
+{
 
11640
+  bar ();
 
11641
+  return 0;
 
11642
+}
 
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)
 
11647
@@ -0,0 +1,33 @@
 
11648
+/* { dg-do run } */
 
11649
+
 
11650
+extern void abort (void);
 
11651
+
 
11652
+typedef struct {
 
11653
+    int msgLength;
 
11654
+    unsigned char data[1000];
 
11655
+} SMsg;
 
11656
+
 
11657
+typedef struct {
 
11658
+    int dummy;
 
11659
+    int d[0];
 
11660
+} SData;
 
11661
+
 
11662
+int condition = 3;
 
11663
+
 
11664
+int main()
 
11665
+{
 
11666
+  SMsg msg;
 
11667
+  SData *pData = (SData*)(msg.data);
 
11668
+  unsigned int i = 0;
 
11669
+  for (i = 0; i < 1; i++)
 
11670
+    {
 
11671
+      pData->d[i] = 0;
 
11672
+      if(condition & 1)
 
11673
+       pData->d[i] |= 0x55;
 
11674
+      if(condition & 2)
 
11675
+       pData->d[i] |= 0xaa;
 
11676
+    }
 
11677
+  if (pData->d[0] != 0xff)
 
11678
+    abort ();
 
11679
+  return 0;
 
11680
+}
 
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)
 
11685
@@ -0,0 +1,58 @@
 
11686
+/* { dg-do run } */
 
11687
+
 
11688
+extern void abort (void);
 
11689
+
 
11690
+int i, j, *pj = &j, **ppj = &pj;
 
11691
+int x, *px = &x;
 
11692
+
 
11693
+short s, *ps = &s, k;
 
11694
+
 
11695
+unsigned short u, *pu = &u, **ppu = &pu;
 
11696
+
 
11697
+char c, *pc = &c;
 
11698
+
 
11699
+unsigned char v = 48;
 
11700
+
 
11701
+static int
 
11702
+bar (int p)
 
11703
+{
 
11704
+  p = k;
 
11705
+  *px = **ppu = i;
 
11706
+  *ppj = &p;
 
11707
+  if (**ppj)
 
11708
+    *pj = p;
 
11709
+  return p;
 
11710
+}
 
11711
+
 
11712
+void __attribute__((noinline))
 
11713
+foo ()
 
11714
+{
 
11715
+  for (; i <= 3; i++)
 
11716
+    for (; j; j--);
 
11717
+
 
11718
+  u ^= bar (*pj);
 
11719
+
 
11720
+  for (k = 1; k >= 0; k--)
 
11721
+    {
 
11722
+      int l;
 
11723
+      bar (0);
 
11724
+      for (l = 1; l < 5; l++)
 
11725
+       {
 
11726
+         int m;
 
11727
+         for (m = 6; m; m--)
 
11728
+           {
 
11729
+             v--;
 
11730
+             *ps = *pc;
 
11731
+           }
 
11732
+       }
 
11733
+    }
 
11734
+}
 
11735
+
 
11736
+int
 
11737
+main ()
 
11738
+{
 
11739
+  foo ();
 
11740
+  if (v != 0)
 
11741
+    abort ();
 
11742
+  return 0;
 
11743
+}
 
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)
 
11748
@@ -0,0 +1,18 @@
 
11749
+/* { dg-do run } */
 
11750
+/* { dg-additional-options "-fstrict-overflow" } */
 
11751
+
 
11752
+int a, b, c, d, e;
 
11753
+
 
11754
+int
 
11755
+main ()
 
11756
+{
 
11757
+  for (b = 4; b > -30; b--)
 
11758
+    for (; c;)
 
11759
+      for (;;)
 
11760
+       {
 
11761
+         e = a > __INT_MAX__ - b;
 
11762
+         if (d)
 
11763
+           break;
 
11764
+       }
 
11765
+  return 0;
 
11766
+}
 
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)
 
11771
@@ -0,0 +1,9 @@
 
11772
+/* { dg-do compile } */
 
11773
+
 
11774
+void
 
11775
+baz (int *d)
 
11776
+{
 
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);
 
11780
+}
 
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)
 
11785
@@ -0,0 +1,17 @@
 
11786
+/* { dg-do run } */
 
11787
+
 
11788
+void free(void *ptr)
 
11789
+{
 
11790
+}
 
11791
+
 
11792
+void *foo(void)
 
11793
+{
 
11794
+  return 0;
 
11795
+}
 
11796
+
 
11797
+int main(void)
 
11798
+{
 
11799
+  void *p = foo();
 
11800
+  free(p);
 
11801
+  return 0;
 
11802
+}
 
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)
 
11807
@@ -0,0 +1,14 @@
 
11808
+/* { dg-do run } */
 
11809
+/* { dg-options "-O3" } */
 
11810
+
 
11811
+int a, c, e[5][2]; 
 
11812
+unsigned int d;
 
11813
+
 
11814
+int
 
11815
+main ()
 
11816
+{
 
11817
+  for (d = 0; d < 2; d++)
 
11818
+    if (a ? 0 : e[c + 3][d] & e[c + 4][d])
 
11819
+      break;
 
11820
+  return 0;
 
11821
+}
 
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)
 
11826
@@ -0,0 +1,18 @@
 
11827
+/* { dg-do run } */
 
11828
+/* { dg-options "-O3 -fdump-tree-pcom-details" } */
 
11829
+
 
11830
+int b, f, d[5][2];
 
11831
+unsigned int c;
 
11832
+
 
11833
+int
 
11834
+main ()
 
11835
+{
 
11836
+  for (c = 0; c < 2; c++)
 
11837
+    if (d[b + 3][c] & d[b + 4][c])
 
11838
+      if (f)
 
11839
+       break;
 
11840
+  return 0;
 
11841
+}
 
11842
+
 
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)
 
11849
@@ -0,0 +1,11 @@
 
11850
+/* { dg-do compile } */
 
11851
+/* { dg-options "-O2" } */
 
11852
+
 
11853
+struct A { int a; };
 
11854
+extern void *y;
 
11855
+
 
11856
+__attribute__((optimize (0))) void
 
11857
+foo (void *p, struct A x)
 
11858
+{
 
11859
+  foo (y, x);
 
11860
+}
 
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)
 
11865
@@ -6,13 +6,13 @@
 
11866
 #include "strlenopt-1.c"
 
11867
 
 
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)
 
11887
@@ -1,3 +1,647 @@
 
11888
+2014-01-15  Kugan Vivekanandarajah  <kuganv@linaro.org>
 
11889
+
 
11890
+       Backport from mainline
 
11891
+       2014-01-15  Matthew Gretton-Dann  <matthew.gretton-dann@linaro.org>
 
11892
+           Kugan Vivekanandarajah  <kuganv@linaro.org>
 
11893
+
 
11894
+       PR target/59695
 
11895
+       * g++.dg/pr59695.C: New testcase.
 
11896
+
 
11897
+2014-01-17  Terry Guo  <terry.guo@arm.com>
 
11898
+
 
11899
+       * gcc.target/arm/pr59826.c: New test.
 
11900
+
 
11901
+2014-01-16  Jakub Jelinek  <jakub@redhat.com>
 
11902
+
 
11903
+       PR target/59839
 
11904
+       * gcc.target/i386/pr59839.c: New test.
 
11905
+
 
11906
+       PR debug/54694
 
11907
+       * gcc.target/i386/pr9771-1.c (main): Rename to...
 
11908
+       (real_main): ... this.  Add __asm name "main".
 
11909
+       (ASMNAME, ASMNAME2, STRING): Define.
 
11910
+
 
11911
+2014-01-16  Marek Polacek  <polacek@redhat.com>
 
11912
+
 
11913
+       Backported from mainline
 
11914
+       2014-01-16  Marek Polacek  <polacek@redhat.com>
 
11915
+
 
11916
+       PR middle-end/59827
 
11917
+       * gcc.dg/pr59827.c: New test.
 
11918
+
 
11919
+2014-01-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
11920
+
 
11921
+       PR target/59803
 
11922
+       * gcc.c-torture/compile/pr59803.c: New testcase.
 
11923
+
 
11924
+2014-01-10  Yufeng Zhang  <yufeng.zhang@arm.com>
 
11925
+
 
11926
+       * gcc.target/arm/neon/vst1Q_laneu64-1.c: New test.
 
11927
+
 
11928
+2014-01-10  Hans-Peter Nilsson  <hp@axis.com>
 
11929
+
 
11930
+       * gcc.dg/pr46309.c: Disable for cris*-*-*.
 
11931
+
 
11932
+2014-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
 
11933
+
 
11934
+       PR c++/56060
 
11935
+       PR c++/59730
 
11936
+       * g++.dg/cpp0x/variadic144.C: New.
 
11937
+       * g++.dg/cpp0x/variadic145.C: Likewise.
 
11938
+
 
11939
+2014-01-10  Richard Biener  <rguenther@suse.de>
 
11940
+
 
11941
+       PR tree-optimization/59715
 
11942
+       * gcc.dg/torture/pr59715.c: New testcase.
 
11943
+
 
11944
+2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
 
11945
+
 
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.
 
11949
+
 
11950
+2014-01-09  Richard Sandiford  <rdsandiford@googlemail.com>
 
11951
+
 
11952
+       PR rtl-optimization/59137
 
11953
+       * gcc.target/mips/pr59137.c: New test.
 
11954
+
 
11955
+2014-01-09  Richard Biener  <rguenther@suse.de>
 
11956
+
 
11957
+       Backport from mainline
 
11958
+       2013-11-18  Richard Biener  <rguenther@suse.de>
 
11959
+
 
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.
 
11967
+
 
11968
+       2013-12-03  Jakub Jelinek  <jakub@redhat.com>
 
11969
+
 
11970
+       PR tree-optimization/59362
 
11971
+       * gcc.c-torture/compile/pr59362.c: New test.
 
11972
+
 
11973
+2014-01-09  Richard Earnshaw  <rearnsha@arm.com>
 
11974
+
 
11975
+       PR rtl-optimization/54300
 
11976
+       * gcc.target/arm/pr54300.C: New test.
 
11977
+
 
11978
+2014-01-08  Martin Jambor  <mjambor@suse.cz>
 
11979
+
 
11980
+       PR ipa/59610
 
11981
+       * gcc.dg/ipa/pr59610.c: New test.
 
11982
+
 
11983
+2014-01-07  Jakub Jelinek  <jakub@redhat.com>
 
11984
+
 
11985
+       PR rtl-optimization/58668
 
11986
+       * gcc.dg/pr58668.c: New test.
 
11987
+
 
11988
+       Backported from mainline
 
11989
+       2013-12-16  Jakub Jelinek  <jakub@redhat.com>
 
11990
+
 
11991
+       PR middle-end/58956
 
11992
+       PR middle-end/59470
 
11993
+       * gcc.target/i386/pr59470.c: New test.
 
11994
+
 
11995
+2014-01-04  Janus Weil  <janus@gcc.gnu.org>
 
11996
+
 
11997
+       Backport from mainline
 
11998
+       2014-01-02  Janus Weil  <janus@gcc.gnu.org>
 
11999
+
 
12000
+       PR fortran/59654
 
12001
+       * gfortran.dg/dynamic_dispatch_12.f90: New.
 
12002
+
 
12003
+2014-01-03  Joseph Myers  <joseph@codesourcery.com>
 
12004
+
 
12005
+       * gcc.target/powerpc/rs6000-ldouble-3.c: New test.
 
12006
+
 
12007
+2014-01-03  Jakub Jelinek  <jakub@redhat.com>
 
12008
+
 
12009
+       PR target/59625
 
12010
+       * gcc.target/i386/pr59625.c: New test.
 
12011
+
 
12012
+2014-01-01  Jakub Jelinek  <jakub@redhat.com>
 
12013
+
 
12014
+       PR rtl-optimization/59647
 
12015
+       * g++.dg/opt/pr59647.C: New test.
 
12016
+
 
12017
+2013-12-31  Janus Weil  <janus@gcc.gnu.org>
 
12018
+
 
12019
+       Backport from mainline
 
12020
+       2013-12-30  Janus Weil  <janus@gcc.gnu.org>
 
12021
+
 
12022
+       PR fortran/58998
 
12023
+       * gfortran.dg/generic_28.f90: New.
 
12024
+
 
12025
+2013-12-20  Jakub Jelinek  <jakub@redhat.com>
 
12026
+
 
12027
+       PR c++/59255
 
12028
+       * g++.dg/tree-prof/pr59255.C: New test.
 
12029
+
 
12030
+2013-12-19  James Greenhalgh  <james.greenhalgh@arm.com>
 
12031
+
 
12032
+       Backport from Mainline
 
12033
+       2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
12034
+
 
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.
 
12050
+
 
12051
+2013-12-19  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
12052
+           Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
12053
+
 
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
 
12075
+
 
12076
+2013-12-18  Janus Weil  <janus@gcc.gnu.org>
 
12077
+
 
12078
+       Backport from mainline
 
12079
+       2013-12-15  Janus Weil  <janus@gcc.gnu.org>
 
12080
+
 
12081
+       PR fortran/59493
 
12082
+       * gfortran.dg/unlimited_polymorphic_15.f90: New.
 
12083
+
 
12084
+2013-12-15  Uros Bizjak  <ubizjak@gmail.com>
 
12085
+
 
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.
 
12112
+
 
12113
+2013-12-12  Jakub Jelinek  <jakub@redhat.com>
 
12114
+
 
12115
+       PR middle-end/59470
 
12116
+       * g++.dg/opt/pr59470.C: New test.
 
12117
+
 
12118
+       PR libgomp/59467
 
12119
+       * gfortran.dg/gomp/pr59467.f90: New test.
 
12120
+       * c-c++-common/gomp/pr59467.c: New test.
 
12121
+
 
12122
+2013-12-12  Uros Bizjak  <ubizjak@gmail.com>
 
12123
+
 
12124
+       Backport from mainline
 
12125
+       2013-12-12  Ryan Mansfield  <rmansfield@qnx.com>
 
12126
+
 
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.
 
12132
+
 
12133
+2013-12-08  Uros Bizjak  <ubizjak@gmail.com>
 
12134
+
 
12135
+       Backport from mainline
 
12136
+       2013-12-06  Uros Bizjak  <ubizjak@gmail.com>
 
12137
+
 
12138
+       PR target/59405
 
12139
+       * gcc.target/i386/pr59405.c: New test.
 
12140
+
 
12141
+2013-12-06  Jakub Jelinek  <jakub@redhat.com>
 
12142
+
 
12143
+       PR tree-optimization/59388
 
12144
+       * gcc.c-torture/execute/pr59388.c: New test.
 
12145
+
 
12146
+2013-12-06  Richard Biener  <rguenther@suse.de>
 
12147
+
 
12148
+       Backport from mainline
 
12149
+       2013-11-28  Richard Biener  <rguenther@suse.de>
 
12150
+
 
12151
+       PR tree-optimization/59330
 
12152
+       * gcc.dg/torture/pr59330.c: New testcase.
 
12153
+
 
12154
+2013-12-06  Richard Biener  <rguenther@suse.de>
 
12155
+
 
12156
+       Backport from mainline
 
12157
+       2013-11-27  Richard Biener  <rguenther@suse.de>
 
12158
+
 
12159
+       PR tree-optimization/59288
 
12160
+       * gcc.dg/torture/pr59288.c: New testcase.
 
12161
+
 
12162
+       2013-11-19  Richard Biener  <rguenther@suse.de>
 
12163
+
 
12164
+       PR tree-optimization/59164
 
12165
+       * gcc.dg/torture/pr59164.c: New testcase.
 
12166
+
 
12167
+       2013-09-05  Richard Biener  <rguenther@suse.de>
 
12168
+
 
12169
+       PR tree-optimization/58137
 
12170
+       * gcc.target/i386/pr58137.c: New testcase.
 
12171
+
 
12172
+2013-12-06  Oleg Endo  <olegendo@gcc.gnu.org>
 
12173
+
 
12174
+       PR target/51244
 
12175
+       PR target/59343
 
12176
+       * gcc.target/sh/pr51244-19.c: Adjust test case.
 
12177
+
 
12178
+2013-12-05  Richard Biener  <rguenther@suse.de>
 
12179
+
 
12180
+       Backport from mainline
 
12181
+       2013-11-19  Richard Biener  <rguenther@suse.de>
 
12182
+
 
12183
+       PR middle-end/58956
 
12184
+       * gcc.dg/torture/pr58956.c: New testcase.
 
12185
+
 
12186
+2013-12-04  Jakub Jelinek  <jakub@redhat.com>
 
12187
+
 
12188
+       PR c++/59268
 
12189
+       * g++.dg/cpp0x/constexpr-template6.C: New test.
 
12190
+
 
12191
+       PR rtl-optimization/58726
 
12192
+       * gcc.c-torture/execute/pr58726.c: New test.
 
12193
+
 
12194
+       PR target/59163
 
12195
+       * g++.dg/torture/pr59163.C: New test.
 
12196
+
 
12197
+2013-12-03  Marek Polacek  <polacek@redhat.com>
 
12198
+
 
12199
+       Backport from mainline
 
12200
+       2013-12-03  Marek Polacek  <polacek@redhat.com>
 
12201
+
 
12202
+       PR c/59351
 
12203
+       * gcc.dg/pr59351.c: New test.
 
12204
+
 
12205
+2013-12-03  Jakub Jelinek  <jakub@redhat.com>
 
12206
+
 
12207
+       PR middle-end/59011
 
12208
+       * gcc.dg/pr59011.c: New test.
 
12209
+
 
12210
+       PR target/58864
 
12211
+       * g++.dg/opt/pr58864.C: New test.
 
12212
+
 
12213
+2013-12-02  Jakub Jelinek  <jakub@redhat.com>
 
12214
+
 
12215
+       PR tree-optimization/59358
 
12216
+       * gcc.c-torture/execute/pr59358.c: New test.
 
12217
+
 
12218
+2013-12-02  Richard Biener  <rguenther@suse.de>
 
12219
+
 
12220
+       PR tree-optimization/59139
 
12221
+       * gcc.dg/torture/pr59139.c: New testcase.
 
12222
+
 
12223
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
12224
+           Marc Glisse  <marc.glisse@inria.fr>
 
12225
+
 
12226
+       PR c++/59032
 
12227
+       * c-c++-common/pr59032.c: New testcase.
 
12228
+
 
12229
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
12230
+           Marc Glisse  <marc.glisse@inria.fr>
 
12231
+
 
12232
+       PR middle-end/59037
 
12233
+       * c-c++-common/pr59037.c: New testcase.
 
12234
+
 
12235
+2013-11-30  Paul Thomas  <pault@gcc.gnu.org>
 
12236
+
 
12237
+       Backport from mainline
 
12238
+       2013-11-04  Paul Thomas  <pault@gcc.gnu.org>
 
12239
+
 
12240
+       PR fortran/57445
 
12241
+       * gfortran.dg/optional_class_1.f90 : New test
 
12242
+
 
12243
+2013-11-29  Jakub Jelinek  <jakub@redhat.com>
 
12244
+
 
12245
+       PR c/59280
 
12246
+       * c-c++-common/pr59280.c: New test.
 
12247
+
 
12248
+2013-11-28  Jakub Jelinek  <jakub@redhat.com>
 
12249
+
 
12250
+       PR c++/59297
 
12251
+       * g++.dg/gomp/pr59297.C: New test.
 
12252
+
 
12253
+2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
12254
+
 
12255
+       Backport from mainline
 
12256
+       2013-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
12257
+
 
12258
+       * gcc.target/arm/vrinta-ce.c: New testcase.
 
12259
+
 
12260
+2013-11-28  Uros Bizjak  <ubizjak@gmail.com>
 
12261
+
 
12262
+       Backport from mainline
 
12263
+       2013-11-23  Uros Bizjak  <ubizjak@gmail.com>
 
12264
+
 
12265
+       PR target/56788
 
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
 
12274
+       result with __A.
 
12275
+
 
12276
+2013-11-28  Terry Guo  <terry.guo@arm.com>
 
12277
+
 
12278
+       Backport mainline r205391
 
12279
+       2013-11-26  Terry Guo  <terry.guo@arm.com>
 
12280
+
 
12281
+       * gcc.target/arm/thumb1-pic-high-reg.c: New case.
 
12282
+       * gcc.target/arm/thumb1-pic-single-base.c: New case.
 
12283
+
 
12284
+2013-11-27  Jakub Jelinek  <jakub@redhat.com>
 
12285
+
 
12286
+       Backported from mainline
 
12287
+       2013-11-27  Jakub Jelinek  <jakub@redhat.com>
 
12288
+
 
12289
+       PR tree-optimization/59014
 
12290
+       * gcc.c-torture/execute/pr59014-2.c: New test.
 
12291
+
 
12292
+       2013-11-26  Jakub Jelinek  <jakub@redhat.com>
 
12293
+
 
12294
+       PR tree-optimization/59014
 
12295
+       * gcc.c-torture/execute/pr59014.c: New test.
 
12296
+
 
12297
+2013-11-27  Eric Botcazou  <ebotcazou@adacore.com>
 
12298
+
 
12299
+       * gcc.c-torture/execute/20131127-1.c: New test.
 
12300
+
 
12301
+2013-11-25  Vidya Praveen  <vidyapraveen@arm.com>
 
12302
+
 
12303
+       Backport from mainline
 
12304
+       2013-10-21  Vidya Praveen  <vidyapraveen@arm.com>
 
12305
+
 
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().
 
12308
+
 
12309
+2013-11-20  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
12310
+
 
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
 
12314
+       one.
 
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.
 
12321
+
 
12322
+2013-11-19  Richard Biener  <rguenther@suse.de>
 
12323
+
 
12324
+       PR tree-optimization/57517
 
12325
+       * gfortran.fortran-torture/compile/pr57517.f90: New testcase.
 
12326
+       * gcc.dg/torture/pr57517.c: Likewise.
 
12327
+
 
12328
+2013-11-19  Richard Biener  <rguenther@suse.de>
 
12329
+
 
12330
+       Backport from mainline
 
12331
+       2013-11-05  Richard Biener  <rguenther@suse.de>
 
12332
+
 
12333
+       PR middle-end/58941
 
12334
+       * gcc.dg/torture/pr58941.c: New testcase.
 
12335
+
 
12336
+2013-11-18  Richard Biener  <rguenther@suse.de>
 
12337
+
 
12338
+       Backport from mainline
 
12339
+       2013-10-21  Richard Biener  <rguenther@suse.de>
 
12340
+
 
12341
+       PR tree-optimization/58794
 
12342
+       * c-c++-common/torture/pr58794-1.c: New testcase.
 
12343
+       * c-c++-common/torture/pr58794-2.c: Likewise.
 
12344
+
 
12345
+       2013-10-21  Richard Biener  <rguenther@suse.de>
 
12346
+
 
12347
+       PR middle-end/58742
 
12348
+       * c-c++-common/fold-divmul-1.c: New testcase.
 
12349
+
 
12350
+       2013-11-06  Richard Biener  <rguenther@suse.de>
 
12351
+
 
12352
+       PR tree-optimization/58653
 
12353
+       * gcc.dg/tree-ssa/predcom-6.c: New testcase.
 
12354
+       * gcc.dg/tree-ssa/predcom-7.c: Likewise.
 
12355
+
 
12356
+       PR tree-optimization/59047
 
12357
+       * gcc.dg/torture/pr59047.c: New testcase.
 
12358
+
 
12359
+       2013-10-15  Richard Biener  <rguenther@suse.de>
 
12360
+
 
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.
 
12365
+
 
12366
+2013-11-17  Janus Weil  <janus@gcc.gnu.org>
 
12367
+
 
12368
+       Backport from mainline
 
12369
+       2013-11-07  Janus Weil  <janus@gcc.gnu.org>
 
12370
+
 
12371
+       PR fortran/58471
 
12372
+       * gfortran.dg/constructor_9.f90: New.
 
12373
+
 
12374
+2013-11-16  Janus Weil  <janus@gcc.gnu.org>
 
12375
+
 
12376
+       Backport from mainline
 
12377
+       2013-09-20  Janus Weil  <janus@gcc.gnu.org>
 
12378
+
 
12379
+       PR fortran/58099
 
12380
+       * gfortran.dg/proc_ptr_43.f90: New.
 
12381
+
 
12382
+2013-11-16  Paul Thomas  <pault@gcc.gnu.org>
 
12383
+
 
12384
+       PR fortran/58771
 
12385
+       * gfortran.dg/derived_external_function_1.f90 : New test
 
12386
+
 
12387
+2013-11-14  Uros Bizjak  <ubizjak@gmail.com>
 
12388
+
 
12389
+       Backport from mainline
 
12390
+       2013-11-06  Uros Bizjak  <ubizjak@gmail.com>
 
12391
+
 
12392
+       PR target/59021
 
12393
+       * gcc.target/i386/pr59021.c: New test.
 
12394
+
 
12395
+2013-11-14  Jakub Jelinek  <jakub@redhat.com>
 
12396
+
 
12397
+       PR target/59101
 
12398
+       * gcc.c-torture/execute/pr59101.c: New test.
 
12399
+
 
12400
+2013-11-11  Jakub Jelinek  <jakub@redhat.com>
 
12401
+
 
12402
+       Backported from mainline
 
12403
+       2013-11-06  Jakub Jelinek  <jakub@redhat.com>
 
12404
+
 
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.
 
12408
+
 
12409
+       2013-11-05  Jakub Jelinek  <jakub@redhat.com>
 
12410
+
 
12411
+       PR rtl-optimization/58997
 
12412
+       * gcc.c-torture/compile/pr58997.c: New test.
 
12413
+
 
12414
+2013-11-10  Wei Mi  <wmi@google.com>
 
12415
+
 
12416
+       * gcc.dg/pr57518.c: Backport regex fix from r200720.
 
12417
+
 
12418
+2013-11-07  H.J. Lu  <hongjiu.lu@intel.com>
 
12419
+
 
12420
+       Backport from mainline
 
12421
+       2013-11-07  H.J. Lu  <hongjiu.lu@intel.com>
 
12422
+
 
12423
+       PR target/59034
 
12424
+       * gcc.target/i386/pr59034-1.c: New test.
 
12425
+       * gcc.target/i386/pr59034-2.c: Likewise.
 
12426
+
 
12427
+2013-11-06  Wei Mi  <wmi@google.com>
 
12428
+
 
12429
+       PR regression/58985
 
12430
+       * gcc.dg/pr57518.c: Add subreg in regexp pattern.
 
12431
+
 
12432
+2013-11-05  Steven G. Kargl <kargl@gcc.gnu.org>
 
12433
+
 
12434
+       PR fortran/58989
 
12435
+       * gfortran.dg/reshape_6.f90: New test.
 
12436
+
 
12437
+2013-11-05  Jakub Jelinek  <jakub@redhat.com>
 
12438
+
 
12439
+       PR tree-optimization/58984
 
12440
+       * gcc.c-torture/execute/pr58984.c: New test.
 
12441
+
 
12442
+2013-11-04  Marek Polacek  <polacek@redhat.com>
 
12443
+
 
12444
+       Backport from mainline
 
12445
+       2013-11-04  Marek Polacek  <polacek@redhat.com>
 
12446
+
 
12447
+       PR c++/58979
 
12448
+       * g++.dg/diagnostic/pr58979.C: New test.
 
12449
+
 
12450
+2013-11-03  H.J. Lu  <hongjiu.lu@intel.com>
 
12451
+
 
12452
+       Backport from mainline
 
12453
+       2013-10-12  H.J. Lu  <hongjiu.lu@intel.com>
 
12454
+
 
12455
+       PR target/58690
 
12456
+       * gcc.target/i386/pr58690.c: New test
 
12457
+
 
12458
+2013-11-02  Janus Weil  <janus@gcc.gnu.org>
 
12459
+
 
12460
+       Backport from mainline
 
12461
+       2013-09-23  Janus Weil  <janus@gcc.gnu.org>
 
12462
+
 
12463
+       PR fortran/58355
 
12464
+       * gfortran.dg/extends_15.f90: New.
 
12465
+
 
12466
+2013-10-29  Uros Bizjak  <ubizjak@gmail.com>
 
12467
+
 
12468
+       Backport from mainline
 
12469
+       2013-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
 
12470
+
 
12471
+       PR rtl-optimization/58079
 
12472
+       * gcc.dg/torture/pr58079.c: New test.
 
12473
+
 
12474
+2013-10-28  Tom de Vries  <tom@codesourcery.com>
 
12475
+
 
12476
+       * gcc.target/arm/require-pic-register-loc.c: New test.
 
12477
+
 
12478
+2013-10-26  Uros Bizjak  <ubizjak@gmail.com>
 
12479
+
 
12480
+       Backport from mainline
 
12481
+       2013-10-22  Uros Bizjak  <ubizjak@gmail.com>
 
12482
+
 
12483
+       PR target/58779
 
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.
 
12487
+
 
12488
+2013-10-25  Richard Henderson  <rth@redhat.com>
 
12489
+
 
12490
+       PR rtl/58542
 
12491
+       * gcc.dg/atomic-store-6.c: New.
 
12492
+
 
12493
+2013-10-25  Tom de Vries  <tom@codesourcery.com>
 
12494
+
 
12495
+       PR c++/58282
 
12496
+       * g++.dg/tm/noexcept-6.C: New test.
 
12497
+
 
12498
+2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
 
12499
+
 
12500
+       * gcc.c-torture/execute/pr58831.c: New test.
 
12501
+
 
12502
+2013-10-23  Tom de Vries  <tom@codesourcery.com>
 
12503
+
 
12504
+       PR tree-optimization/58805
 
12505
+       * gcc.dg/pr58805.c: New test.
 
12506
+
 
12507
+2013-10-23  Richard Biener  <rguenther@suse.de>
 
12508
+
 
12509
+       * gcc.dg/torture/pr58830.c: New testcase.
 
12510
+
 
12511
+       Backport from mainline
 
12512
+       2013-06-24  Richard Biener  <rguenther@suse.de>
 
12513
+
 
12514
+       PR tree-optimization/57488
 
12515
+       * gcc.dg/torture/pr57488.c: New testcase.
 
12516
+
 
12517
+2013-10-19  Oleg Endo  <olegendo@gcc.gnu.org>
 
12518
+
 
12519
+       * gcc.target/sh/pr54089-3.c: Fix test for load of constant 31.
 
12520
+
 
12521
+2013-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
 
12522
+
 
12523
+       PR c++/58596
 
12524
+       * g++.dg/cpp0x/lambda/lambda-nsdmi5.C: New
 
12525
+
 
12526
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
 
12527
+
 
12528
+       PR c++/58633
 
12529
+       * g++.dg/cpp0x/decltype57.C: New.
 
12530
+       * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
 
12531
+
 
12532
 2013-10-16  Release Manager
 
12533
 
 
12534
        * GCC 4.8.2 released.
 
12535
@@ -39,9 +683,9 @@
 
12536
        Backport from mainline
 
12537
        2013-06-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
12538
 
 
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.
 
12545
 
 
12546
 2013-10-04  Tobias Burnus  <burnus@net-b.de>
 
12547
 
 
12548
@@ -307,8 +951,8 @@
 
12549
        Backport from mainline
 
12550
        2013-08-12  Perez Read  <netfirewall@gmail.com>
 
12551
 
 
12552
-        PR target/58132
 
12553
-        * gcc.target/i386/movabs-1.c: New test.
 
12554
+       PR target/58132
 
12555
+       * gcc.target/i386/movabs-1.c: New test.
 
12556
 
 
12557
 2013-08-11  Janus Weil  <janus@gcc.gnu.org>
 
12558
 
 
12559
@@ -494,7 +1138,7 @@
 
12560
        2013-06-19  Wei Mi  <wmi@google.com>
 
12561
 
 
12562
        PR rtl-optimization/57518
 
12563
-       * testsuite/gcc.dg/pr57518.c: New test.
 
12564
+       * gcc.dg/pr57518.c: New test.
 
12565
 
 
12566
 2013-06-11  Tobias Burnus  <burnus@net-b.de>
 
12567
 
 
12568
@@ -623,8 +1267,8 @@
 
12569
 
 
12570
 2013-05-09  Martin Jambor  <mjambor@suse.cz>
 
12571
 
 
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.
 
12576
 
 
12577
 2013-05-08  Marc Glisse  <marc.glisse@inria.fr>
 
12578
 
 
12579
@@ -701,7 +1345,7 @@
 
12580
        2013-04-25  Marek Polacek  <polacek@redhat.com>
 
12581
 
 
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.
 
12585
 
 
12586
 2013-05-02  Jakub Jelinek  <jakub@redhat.com>
 
12587
 
 
12588
@@ -727,32 +1371,32 @@
 
12589
        Backport from mainline
 
12590
        2013-04-24  Vladimir Makarov  <vmakarov@redhat.com>
 
12591
 
 
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.
 
12596
 
 
12597
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
12598
 
 
12599
        Backport from mainline
 
12600
        2013-04-22  Vladimir Makarov  <vmakarov@redhat.com>
 
12601
 
 
12602
-        PR target/57018
 
12603
-        * gcc.target/i386/pr57018.c: New test.
 
12604
+       PR target/57018
 
12605
+       * gcc.target/i386/pr57018.c: New test.
 
12606
 
 
12607
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
12608
 
 
12609
        Backport from mainline
 
12610
        2013-04-18  Jakub Jelinek  <jakub@redhat.com>
 
12611
 
 
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.
 
12616
 
 
12617
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
12618
 
 
12619
        Backport from mainline
 
12620
        2013-04-19  Vladimir Makarov  <vmakarov@redhat.com>
 
12621
 
 
12622
-        PR rtl-optimization/56847
 
12623
-        * gcc.dg/pr56847.c: New test.
 
12624
+       PR rtl-optimization/56847
 
12625
+       * gcc.dg/pr56847.c: New test.
 
12626
 
 
12627
 2013-05-02  Ian Bolton  <ian.bolton@arm.com>
 
12628
 
 
12629
@@ -1102,7 +1746,7 @@
 
12630
        2013-03-29  Tobias Burnus  <burnus@net-b.de>
 
12631
 
 
12632
        PR fortran/56737
 
12633
-       * testsuite/gfortran.dg/fmt_cache_3.f90: New.
 
12634
+       * gfortran.dg/fmt_cache_3.f90: New.
 
12635
 
 
12636
 2013-04-02  Richard Biener  <rguenther@suse.de>
 
12637
 
 
12638
@@ -1636,7 +2280,7 @@
 
12639
 2013-02-20  Jan Hubicka  <jh@suse.cz>
 
12640
 
 
12641
        PR tree-optimization/56265
 
12642
-       * testsuite/g++.dg/ipa/devirt-11.C: New testcase.
 
12643
+       * g++.dg/ipa/devirt-11.C: New testcase.
 
12644
 
 
12645
 2013-02-20  Richard Biener  <rguenther@suse.de>
 
12646
 
 
12647
@@ -1823,11 +2467,9 @@
 
12648
 
 
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:
 
12652
-       Likewise.
 
12653
-       * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c:
 
12654
-       Likewise.
 
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.
 
12659
 
 
12660
 2013-02-12  Vladimir Makarov  <vmakarov@redhat.com>
 
12661
 
 
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)
 
12666
@@ -0,0 +1,13 @@
 
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
 
12671
+  INTEGER :: i
 
12672
+  REAL :: zu
 
12673
+  DO i = its, ite
 
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 
 
12677
+    ENDIF
 
12678
+  END DO
 
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)
 
12684
@@ -0,0 +1,32 @@
 
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 } } }
 
12689
+
 
12690
+void f1 (int);
 
12691
+void f2 ();
 
12692
+double f3 (int);
 
12693
+
 
12694
+struct A
 
12695
+{
 
12696
+  int f4 () const
 
12697
+  {
 
12698
+    if (a == 0)
 
12699
+      return 1;
 
12700
+    return 0;
 
12701
+  }
 
12702
+  unsigned f5 ()
 
12703
+  {
 
12704
+    if (!f4 ())
 
12705
+      f2 ();
 
12706
+    return a;
 
12707
+  }
 
12708
+  int a;
 
12709
+};
 
12710
+
 
12711
+void
 
12712
+f6 (A *x)
 
12713
+{
 
12714
+  unsigned b = x->f5 ();
 
12715
+  f1 (b - 1 - f3 (x->f5 () - 1U));
 
12716
+}
 
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)
 
12721
@@ -0,0 +1,188 @@
 
12722
+// PR middle-end/59470
 
12723
+// { dg-do run }
 
12724
+// { dg-options "-O2 -fstack-protector" }
 
12725
+// { dg-additional-options "-fPIC" { target fpic } }
 
12726
+// { dg-require-effective-target fstack_protector }
 
12727
+
 
12728
+struct A
 
12729
+{
 
12730
+  int a1;
 
12731
+  A () throw () : a1 (0) {}
 
12732
+};
 
12733
+
 
12734
+struct B
 
12735
+{
 
12736
+  unsigned int b1 () throw ();
 
12737
+};
 
12738
+
 
12739
+__attribute__((noinline, noclone)) unsigned int
 
12740
+B::b1 () throw ()
 
12741
+{
 
12742
+  asm volatile ("" : : : "memory");
 
12743
+  return 0;
 
12744
+}
 
12745
+
 
12746
+struct C
 
12747
+{
 
12748
+  const A **c1;
 
12749
+  void c2 (const A *, unsigned int);
 
12750
+};
 
12751
+
 
12752
+__attribute__((noinline, noclone)) void
 
12753
+C::c2 (const A *, unsigned int)
 
12754
+{
 
12755
+  asm volatile ("" : : : "memory");
 
12756
+}
 
12757
+
 
12758
+struct D
 
12759
+{
 
12760
+  C *d1;
 
12761
+};
 
12762
+
 
12763
+struct E
 
12764
+{
 
12765
+  int e1;
 
12766
+  int e2;
 
12767
+  D e3;
 
12768
+};
 
12769
+
 
12770
+struct F
 
12771
+{
 
12772
+  virtual int f1 (const char * s, int n);
 
12773
+};
 
12774
+
 
12775
+struct G
 
12776
+{
 
12777
+  F *g1;
 
12778
+  bool g2;
 
12779
+  G & g3 (const char * ws, int len)
 
12780
+  {
 
12781
+    if (__builtin_expect (!g2, true)
 
12782
+       && __builtin_expect (this->g1->f1 (ws, len) != len, false))
 
12783
+      g2 = true;
 
12784
+    return *this;
 
12785
+  }
 
12786
+};
 
12787
+
 
12788
+struct H : public A
 
12789
+{
 
12790
+  const char *h1;
 
12791
+  unsigned int h2;
 
12792
+  bool h3;
 
12793
+  const char *h4;
 
12794
+  char h5;
 
12795
+  char h6;
 
12796
+  char h7[31];
 
12797
+  bool h8;
 
12798
+  H () : h1 (0), h2 (0), h4 (0), h5 (0), h6 (0), h8 (false) {}
 
12799
+  void h9 (const D &) __attribute__((noinline, noclone));
 
12800
+};
 
12801
+
 
12802
+void
 
12803
+H::h9 (const D &)
 
12804
+{
 
12805
+  h3 = true;
 
12806
+  __builtin_memset (h7, 0, sizeof (h7));
 
12807
+  asm volatile ("" : : : "memory");
 
12808
+};
 
12809
+
 
12810
+B b;
 
12811
+
 
12812
+inline const H *
 
12813
+foo (const D &x)
 
12814
+{
 
12815
+  const unsigned int i = b.b1 ();
 
12816
+  const A **j = x.d1->c1;
 
12817
+  if (!j[i])
 
12818
+    {
 
12819
+      H *k = 0;
 
12820
+      try
 
12821
+       {
 
12822
+         k = new H;
 
12823
+         k->h9 (x);
 
12824
+       }
 
12825
+      catch (...)
 
12826
+       {
 
12827
+       }
 
12828
+      x.d1->c2 (k, i);
 
12829
+    }
 
12830
+    return static_cast <const H *>(j[i]);
 
12831
+}
 
12832
+
 
12833
+__attribute__((noinline, noclone)) int
 
12834
+bar (char *x, unsigned long v, const char *y, int z, bool w)
 
12835
+{
 
12836
+  asm volatile ("" : : "r" (x), "r" (v), "r" (y) : "memory");
 
12837
+  asm volatile ("" : : "r" (z), "r" (w) : "memory");
 
12838
+  return 8;
 
12839
+}
 
12840
+
 
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)
 
12843
+{
 
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");
 
12847
+  if (n == c)
 
12848
+    __builtin_abort ();
 
12849
+  int i = 0;
 
12850
+  asm ("" : "+r" (i));
 
12851
+  if (i == 0)
 
12852
+    __builtin_exit (0);
 
12853
+}
 
12854
+
 
12855
+__attribute__((noinline, noclone)) G
 
12856
+test (void *z, G s, E &x, char, long v)
 
12857
+{
 
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);
 
12868
+  c += i - l;
 
12869
+  if (h->h3)
 
12870
+    {
 
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);
 
12873
+      c = c2 + 2;
 
12874
+    }
 
12875
+  if (__builtin_expect (e, true))
 
12876
+    {
 
12877
+    }
 
12878
+  else if ((f & 4096) && v)
 
12879
+    {
 
12880
+      {
 
12881
+       const bool m = f & 176;
 
12882
+       *--c = q[m];
 
12883
+       *--c = q[1];
 
12884
+      }
 
12885
+    }
 
12886
+  const int w = x.e1;
 
12887
+  if (w > l)
 
12888
+    {
 
12889
+      char * c3 = static_cast <char *>(__builtin_alloca (w));
 
12890
+      c = c3;
 
12891
+    }
 
12892
+  return s.g3 (c, l);
 
12893
+}
 
12894
+
 
12895
+int
 
12896
+main ()
 
12897
+{
 
12898
+  H h;
 
12899
+  const A *j[1];
 
12900
+  C c;
 
12901
+  G g;
 
12902
+  E e;
 
12903
+  h.h9 (e.e3);
 
12904
+  j[0] = &h;
 
12905
+  c.c1 = j;
 
12906
+  e.e3.d1 = &c;
 
12907
+  test (0, g, e, 0, 0);
 
12908
+  __builtin_abort ();
 
12909
+}
 
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)
 
12914
@@ -0,0 +1,21 @@
 
12915
+// PR target/58864
 
12916
+// { dg-do compile }
 
12917
+// { dg-options "-Os" }
 
12918
+// { dg-additional-options "-march=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } }
 
12919
+
 
12920
+struct A { A (); ~A (); };
 
12921
+struct B { B (); };
 
12922
+
 
12923
+float d, e;
 
12924
+
 
12925
+void
 
12926
+foo ()
 
12927
+{
 
12928
+  A a;
 
12929
+  float c = d;
 
12930
+  while (1)
 
12931
+    {
 
12932
+      B b;
 
12933
+      e = c ? -c : 0;
 
12934
+    }
 
12935
+}
 
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)
 
12940
@@ -0,0 +1,29 @@
 
12941
+// PR c++/59255
 
12942
+// { dg-options "-O2 -std=c++11" }
 
12943
+
 
12944
+struct S
 
12945
+{
 
12946
+  __attribute__((noinline, noclone)) ~S () noexcept (true)
 
12947
+  {
 
12948
+    if (fn)
 
12949
+      fn (1);
 
12950
+  }
 
12951
+  void (*fn) (int);
 
12952
+};
 
12953
+
 
12954
+__attribute__((noinline, noclone)) void
 
12955
+foo (int x)
 
12956
+{
 
12957
+  if (x != 1)
 
12958
+    throw 1;
 
12959
+}
 
12960
+
 
12961
+int
 
12962
+main ()
 
12963
+{
 
12964
+  for (int i = 0; i < 100; i++)
 
12965
+    {
 
12966
+      S s;
 
12967
+      s.fn = foo;
 
12968
+    }
 
12969
+}
 
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)
 
12974
@@ -0,0 +1,25 @@
 
12975
+// PR c++/59297
 
12976
+// { dg-do compile }
 
12977
+// { dg-options "-fopenmp" }
 
12978
+
 
12979
+template <typename T>
 
12980
+struct A
 
12981
+{
 
12982
+  ~A ();
 
12983
+  const T &operator[] (int) const;
 
12984
+};
 
12985
+
 
12986
+struct B
 
12987
+{
 
12988
+  int &operator () (A <int>);
 
12989
+};
 
12990
+
 
12991
+void
 
12992
+foo (B &x, int &z)
 
12993
+{
 
12994
+  A<A<int> > y;
 
12995
+  #pragma omp atomic
 
12996
+  x (y[0]) += 1;
 
12997
+  #pragma omp atomic
 
12998
+  z += x(y[1]);
 
12999
+}
 
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)
 
13004
@@ -0,0 +1,4 @@
 
13005
+// PR c++/58979
 
13006
+// { dg-do compile }
 
13007
+
 
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)
 
13013
@@ -0,0 +1,23 @@
 
13014
+// { dg-do compile }
 
13015
+// { dg-options "-fno-exceptions -fgnu-tm -O -std=c++0x -fdump-tree-tmlower" }
 
13016
+
 
13017
+struct TrueFalse
 
13018
+{
 
13019
+  static constexpr bool v() { return true; }
 
13020
+};
 
13021
+
 
13022
+int global;
 
13023
+
 
13024
+template<typename T> int foo()
 
13025
+{
 
13026
+  return __transaction_atomic noexcept(T::v()) (global + 1);
 
13027
+}
 
13028
+
 
13029
+int f1()
 
13030
+{
 
13031
+  return foo<TrueFalse>();
 
13032
+}
 
13033
+
 
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)
 
13041
@@ -0,0 +1,125 @@
 
13042
+
 
13043
+/* PR target/59695 */
 
13044
+/* { dg-do run } */
 
13045
+/* { dg-options "-O0" } */
 
13046
+
 
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 ()   {}\
 
13070
+
 
13071
+class base_class_2
 
13072
+{
 
13073
+
 
13074
+public:
 
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)
 
13096
+
 
13097
+  base_class_2();
 
13098
+  virtual ~base_class_2 ();
 
13099
+};
 
13100
+
 
13101
+base_class_2::base_class_2()
 
13102
+{
 
13103
+}
 
13104
+
 
13105
+base_class_2::~base_class_2 ()
 
13106
+{
 
13107
+}
 
13108
+
 
13109
+class base_class_1
 
13110
+{
 
13111
+public:
 
13112
+  virtual ~base_class_1();
 
13113
+  base_class_1();
 
13114
+};
 
13115
+
 
13116
+base_class_1::base_class_1()
 
13117
+{
 
13118
+}
 
13119
+
 
13120
+base_class_1::~base_class_1()
 
13121
+{
 
13122
+}
 
13123
+
 
13124
+class base_Impl_class :
 
13125
+  virtual public base_class_2, public base_class_1
 
13126
+{
 
13127
+public:
 
13128
+  base_Impl_class ();
 
13129
+  virtual ~base_Impl_class ();
 
13130
+};
 
13131
+
 
13132
+base_Impl_class::base_Impl_class ()
 
13133
+{
 
13134
+}
 
13135
+
 
13136
+base_Impl_class::~base_Impl_class ()
 
13137
+{
 
13138
+}
 
13139
+
 
13140
+
 
13141
+class test_cls : public base_Impl_class
 
13142
+{
 
13143
+public:
 
13144
+  test_cls();
 
13145
+  virtual ~test_cls();
 
13146
+};
 
13147
+
 
13148
+test_cls::test_cls()
 
13149
+{
 
13150
+}
 
13151
+
 
13152
+test_cls::~test_cls()
 
13153
+{
 
13154
+}
 
13155
+
 
13156
+int main()
 
13157
+{
 
13158
+  test_cls *test = new test_cls;
 
13159
+  base_class_2 *p1 = test;
 
13160
+
 
13161
+  /* PR59695  destructor thunk offsets are not setup
 
13162
+   correctly resulting in crash.  */
 
13163
+  delete p1;
 
13164
+  return 0;
 
13165
+}
 
13166
+
 
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)
 
13171
@@ -0,0 +1,7 @@
 
13172
+// PR c++/58596
 
13173
+// { dg-do compile { target c++11 } }
 
13174
+
 
13175
+struct A
 
13176
+{
 
13177
+  int i = [] { return decltype(i)(); }();
 
13178
+};
 
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)
 
13183
@@ -0,0 +1,15 @@
 
13184
+// PR c++/56060
 
13185
+// { dg-do compile { target c++11 } }
 
13186
+
 
13187
+template<typename T> struct baz { };
 
13188
+template<typename T> T bar();
 
13189
+
 
13190
+template<typename T, typename ... U>
 
13191
+baz<decltype(bar<T>()(bar<U> ...))>  // { dg-error "cannot be used" }
 
13192
+foo();
 
13193
+
 
13194
+int main()
 
13195
+{
 
13196
+  foo<int>();     // { dg-error "no matching" }
 
13197
+  return 0;
 
13198
+}
 
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)
 
13203
@@ -4,5 +4,5 @@
 
13204
 int main(void) {
 
13205
   enum e {};
 
13206
   e ev;
 
13207
-  ev.e::~e_u();        // { dg-error "e_u. has not been declared" }
 
13208
+  ev.e::~e_u();        // { dg-error "" }
 
13209
 }
 
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)
 
13214
@@ -0,0 +1,39 @@
 
13215
+// PR c++/58954
 
13216
+// { dg-require-effective-target c++11 }
 
13217
+
 
13218
+template<class T>
 
13219
+T&& declval();
 
13220
+
 
13221
+template<class T>
 
13222
+struct foo_argument
 
13223
+{
 
13224
+  template<class Ret, class C, class Arg>
 
13225
+  static Arg test(Ret (C::*)(Arg));
 
13226
+
 
13227
+  typedef decltype(test(&T::template foo<>)) type;
 
13228
+};
 
13229
+
 
13230
+template<class T, class>
 
13231
+struct dependent { typedef T type; };
 
13232
+
 
13233
+template<class T>
 
13234
+struct base
 
13235
+{
 
13236
+  template<class Ignore = void>
 
13237
+  auto foo(int i) -> decltype(declval<
 
13238
+    typename dependent<T&, Ignore>::type
 
13239
+  >().foo_impl(i));
 
13240
+};
 
13241
+
 
13242
+struct derived : base<derived>
 
13243
+{
 
13244
+  friend struct base<derived>;
 
13245
+private:
 
13246
+  int foo_impl(int i);
 
13247
+};
 
13248
+
 
13249
+int main()
 
13250
+{
 
13251
+  foo_argument<derived>::type var = 0;
 
13252
+  return var;
 
13253
+}
 
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)
 
13258
@@ -0,0 +1,20 @@
 
13259
+// PR c++/59268
 
13260
+// { dg-do compile }
 
13261
+// { dg-options "-std=c++11" }
 
13262
+
 
13263
+template <typename>
 
13264
+struct A
 
13265
+{
 
13266
+  constexpr A (int) {}
 
13267
+  virtual void foo ()
 
13268
+  {
 
13269
+    constexpr A<void> a (0);
 
13270
+  }
 
13271
+};
 
13272
+
 
13273
+void
 
13274
+bar ()
 
13275
+{
 
13276
+  A<int> a (3);
 
13277
+  a.foo ();
 
13278
+}
 
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)
 
13283
@@ -0,0 +1,13 @@
 
13284
+// PR c++/58162
 
13285
+// { dg-require-effective-target c++11 }
 
13286
+
 
13287
+struct A {
 
13288
+ A();
 
13289
+ A(A&&);
 
13290
+};
 
13291
+
 
13292
+struct B {
 
13293
+ A const a = A();
 
13294
+};
 
13295
+
 
13296
+B b;
 
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)
 
13301
@@ -0,0 +1,13 @@
 
13302
+// PR c++/59730
 
13303
+// { dg-do compile { target c++11 } }
 
13304
+
 
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>...);
 
13313
+  }
 
13314
+};
 
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)
 
13319
@@ -0,0 +1,8 @@
 
13320
+// PR c++/58633
 
13321
+// { dg-do compile { target c++11 } }
 
13322
+
 
13323
+void foo(int i)
 
13324
+{
 
13325
+  typedef int I;
 
13326
+  decltype(i.I::~I())* p;
 
13327
+}
 
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)
 
13332
@@ -0,0 +1,17 @@
 
13333
+// PR c++/59031
 
13334
+// { dg-do compile }
 
13335
+// { dg-options "-fdump-tree-gimple " }
 
13336
+class B {
 
13337
+ public:
 
13338
+  virtual int add (int a, int b) {return a+ b;}
 
13339
+};
 
13340
+
 
13341
+class D : public B {
 
13342
+};
 
13343
+
 
13344
+int foo (int a, int b) {
 
13345
+  D d;
 
13346
+  return d.add(a, b);
 
13347
+}
 
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)
 
13354
@@ -0,0 +1,30 @@
 
13355
+// PR target/59163
 
13356
+// { dg-do run }
 
13357
+
 
13358
+struct A { float a[4]; };
 
13359
+struct B { int b; A a; };
 
13360
+
 
13361
+__attribute__((noinline, noclone)) void
 
13362
+bar (A &a)
 
13363
+{
 
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 ();
 
13366
+}
 
13367
+
 
13368
+__attribute__((noinline, noclone)) void
 
13369
+foo (A &a)
 
13370
+{
 
13371
+  int i;
 
13372
+  A c = a;
 
13373
+  for (i = 0; i < 4; i++)
 
13374
+    c.a[i] *= 6.0f;
 
13375
+  a = c;
 
13376
+  bar (a);
 
13377
+}
 
13378
+
 
13379
+int
 
13380
+main ()
 
13381
+{
 
13382
+  B b = { 5, { 6, 7, 8, 9 } };
 
13383
+  foo (b.a);
 
13384
+}
 
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)
 
13389
@@ -0,0 +1,16 @@
 
13390
+// PR c++/59044
 
13391
+
 
13392
+template <class T>
 
13393
+class C {
 
13394
+private:
 
13395
+  template <T a, T b>
 
13396
+  struct Implementation {};
 
13397
+public:
 
13398
+  typedef typename Implementation<0, 0>::Typedef Type;
 
13399
+};
 
13400
+
 
13401
+template <class T>
 
13402
+template <T b>
 
13403
+struct C<T>::Implementation<0, b> { typedef void Typedef; };
 
13404
+
 
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)
 
13410
@@ -0,0 +1,12 @@
 
13411
+/* { dg-do compile } */
 
13412
+/* { dg-options "-O3" } */
 
13413
+
 
13414
+typedef int v4si __attribute__ ((vector_size (16)));
 
13415
+
 
13416
+int
 
13417
+main (int argc, char** argv)
 
13418
+{
 
13419
+  v4si x = {0,1,2,3};
 
13420
+  x = (v4si) {(x)[3], (x)[2], (x)[1], (x)[0]};
 
13421
+  return x[4];
 
13422
+}
 
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)
 
13427
@@ -0,0 +1,4 @@
 
13428
+/* PR c/59280 */
 
13429
+/* { dg-do compile } */
 
13430
+
 
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)
 
13436
@@ -0,0 +1,11 @@
 
13437
+/* { dg-do compile } */
 
13438
+/* { dg-options "-fdump-tree-original" } */
 
13439
+
 
13440
+int *
 
13441
+fx (int *b, int *e)
 
13442
+{
 
13443
+  return b + (e - b);
 
13444
+}
 
13445
+
 
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)
 
13452
@@ -0,0 +1,29 @@
 
13453
+/* { dg-do compile } */
 
13454
+
 
13455
+struct S0
 
13456
+{
 
13457
+  int f;
 
13458
+};
 
13459
+
 
13460
+struct S1
 
13461
+{
 
13462
+  struct S0 f1;
 
13463
+  volatile int f2;
 
13464
+};
 
13465
+
 
13466
+struct S2
 
13467
+{
 
13468
+  struct S1 g;
 
13469
+} a, b; 
 
13470
+
 
13471
+static int *c[1][2] = {{0, (int *)&a.g.f2}};
 
13472
+static int d; 
 
13473
+
 
13474
+int
 
13475
+main ()
 
13476
+{
 
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;
 
13480
+  return 0;
 
13481
+}
 
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)
 
13486
@@ -0,0 +1,21 @@
 
13487
+/* { dg-do compile } */
 
13488
+
 
13489
+struct S 
 
13490
+{
 
13491
+  volatile int f;
 
13492
+} a;
 
13493
+
 
13494
+unsigned int b;
 
13495
+
 
13496
+static int *c[1][2] = {{0, (int *)&a.f}};
 
13497
+static unsigned int d;
 
13498
+
 
13499
+int 
 
13500
+main ()
 
13501
+{
 
13502
+  for (; d < 1; d++)
 
13503
+    for (; b < 1; b++)
 
13504
+      *c[b][d + 1] = 0;
 
13505
+
 
13506
+  return 0;
 
13507
+}
 
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)
 
13512
@@ -0,0 +1,68 @@
 
13513
+/* PR libgomp/59467 */
 
13514
+
 
13515
+int v;
 
13516
+
 
13517
+void
 
13518
+foo (void)
 
13519
+{
 
13520
+  int x = 0, y = 0;
 
13521
+  #pragma omp parallel
 
13522
+  {
 
13523
+    int z;
 
13524
+    #pragma omp single copyprivate (x) /* { dg-error "is not threadprivate or private in outer context" } */
 
13525
+    {
 
13526
+      #pragma omp atomic write
 
13527
+       x = 6;
 
13528
+    }
 
13529
+    #pragma omp atomic read
 
13530
+    z = x;
 
13531
+    #pragma omp atomic
 
13532
+    y += z;
 
13533
+  }
 
13534
+  #pragma omp parallel
 
13535
+  {
 
13536
+    int z;
 
13537
+    #pragma omp single copyprivate (v) /* { dg-error "is not threadprivate or private in outer context" } */
 
13538
+    {
 
13539
+      #pragma omp atomic write
 
13540
+       v = 6;
 
13541
+    }
 
13542
+    #pragma omp atomic read
 
13543
+    z = v;
 
13544
+    #pragma omp atomic
 
13545
+    y += z;
 
13546
+  }
 
13547
+  #pragma omp parallel private (x)
 
13548
+  {
 
13549
+    int z;
 
13550
+    #pragma omp single copyprivate (x)
 
13551
+    {
 
13552
+      #pragma omp atomic write
 
13553
+       x = 6;
 
13554
+    }
 
13555
+    #pragma omp atomic read
 
13556
+    z = x;
 
13557
+    #pragma omp atomic
 
13558
+    y += z;
 
13559
+  }
 
13560
+  x = 0;
 
13561
+  #pragma omp parallel reduction (+:x)
 
13562
+  {
 
13563
+    #pragma omp single copyprivate (x)
 
13564
+    {
 
13565
+      #pragma omp atomic write
 
13566
+       x = 6;
 
13567
+    }
 
13568
+    #pragma omp atomic
 
13569
+    y += x;
 
13570
+  }
 
13571
+  #pragma omp single copyprivate (x)
 
13572
+  {
 
13573
+    x = 7;
 
13574
+  }
 
13575
+  #pragma omp single copyprivate (v)   /* { dg-error "is not threadprivate or private in outer context" } */
 
13576
+  {
 
13577
+    #pragma omp atomic write
 
13578
+      v = 6;
 
13579
+  }
 
13580
+}
 
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)
 
13585
@@ -0,0 +1,30 @@
 
13586
+/* { dg-do compile } */
 
13587
+/* { dg-options "-O2" } */
 
13588
+
 
13589
+void
 
13590
+foo()
 
13591
+{
 
13592
+  float v __attribute__((vector_size(8)));
 
13593
+  v++;
 
13594
+}
 
13595
+
 
13596
+void
 
13597
+foo2 ()
 
13598
+{
 
13599
+  float v __attribute__((vector_size(8)));
 
13600
+  ++v;
 
13601
+}
 
13602
+
 
13603
+void
 
13604
+foo3 ()
 
13605
+{
 
13606
+  float v __attribute__((vector_size(8)));
 
13607
+  v--;
 
13608
+}
 
13609
+
 
13610
+void
 
13611
+foo4 ()
 
13612
+{
 
13613
+  float v __attribute__((vector_size(8)));
 
13614
+  --v;
 
13615
+}
 
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));
 
13622
          }
 
13623
        else
 
13624
-         inc = integer_one_node;
 
13625
+         inc = (TREE_CODE (argtype) == VECTOR_TYPE
 
13626
+                ? build_one_cst (argtype)
 
13627
+                : integer_one_node);
 
13628
 
 
13629
        inc = cp_convert (argtype, inc, complain);
 
13630
 
 
13631
@@ -7611,7 +7613,7 @@
 
13632
   /* Handle null pointer to member function conversions.  */
 
13633
   if (null_ptr_cst_p (pfn))
 
13634
     {
 
13635
-      pfn = build_c_cast (input_location, type, pfn);
 
13636
+      pfn = cp_build_c_cast (type, pfn, complain);
 
13637
       return build_ptrmemfunc1 (to_type,
 
13638
                                integer_zero_node,
 
13639
                                pfn);
 
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 @@
 
13645
 {
 
13646
   tree type = body ? TREE_TYPE (body) : void_type_node;
 
13647
 
 
13648
+  if (!flag_exceptions)
 
13649
+    return body;
 
13650
+
 
13651
   if (cond && !value_dependent_expression_p (cond))
 
13652
     {
 
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)
 
13658
@@ -1,3 +1,89 @@
 
13659
+2014-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
 
13660
+
 
13661
+       PR c++/56060
 
13662
+       PR c++/59730
 
13663
+       * pt.c (type_dependent_expression_p): Handle EXPR_PACK_EXPANSION.
 
13664
+
 
13665
+2013-12-12  Jason Merrill  <jason@redhat.com>
 
13666
+
 
13667
+       PR c++/58954
 
13668
+       * pt.c (resolve_overloaded_unification): Discard access checks.
 
13669
+
 
13670
+2013-12-05  Jason Merrill  <jason@redhat.com>
 
13671
+
 
13672
+       PR c++/59044
 
13673
+       PR c++/59052
 
13674
+       * pt.c (most_specialized_class): Use the partially instantiated
 
13675
+       template for deduction.  Drop the TMPL parameter.
 
13676
+
 
13677
+2013-12-04  Jakub Jelinek  <jakub@redhat.com>
 
13678
+
 
13679
+       PR c++/59268
 
13680
+       * pt.c (tsubst_copy_and_build): Handle POINTER_PLUS_EXPR.
 
13681
+
 
13682
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
13683
+           Marc Glisse  <marc.glisse@inria.fr>
 
13684
+
 
13685
+       PR c++/59032
 
13686
+       * typeck.c (cp_build_unary_op): Allow vector increment and decrement.
 
13687
+
 
13688
+2013-11-27  Tom de Vries  <tom@codesourcery.com>
 
13689
+           Marc Glisse  <marc.glisse@inria.fr>
 
13690
+
 
13691
+       PR middle-end/59037
 
13692
+       * semantics.c (cxx_fold_indirect_ref): Don't create out-of-bounds
 
13693
+       BIT_FIELD_REF.
 
13694
+
 
13695
+2013-11-28  Jakub Jelinek  <jakub@redhat.com>
 
13696
+
 
13697
+       PR c++/59297
 
13698
+       * semantics.c (finish_omp_atomic): Call finish_expr_stmt
 
13699
+       rather than add_stmt.
 
13700
+
 
13701
+2013-11-23  Easwaran Raman  <eraman@google.com>
 
13702
+
 
13703
+       PR c++/59031
 
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.
 
13707
+
 
13708
+2013-10-31  Jason Merrill  <jason@redhat.com>
 
13709
+
 
13710
+       PR c++/58162
 
13711
+       * parser.c (cp_parser_late_parse_one_default_arg): Set
 
13712
+       TARGET_EXPR_DIRECT_INIT_P.
 
13713
+
 
13714
+2013-11-11  Paolo Carlini  <paolo.carlini@oracle.com>
 
13715
+
 
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.
 
13719
+
 
13720
+       * typeck.c (build_ptrmemfunc): Use cp_build_c_cast.
 
13721
+
 
13722
+2013-10-25  Tom de Vries  <tom@codesourcery.com>
 
13723
+
 
13724
+       PR c++/58282
 
13725
+       * except.c (build_must_not_throw_expr): Handle
 
13726
+       flag_exceptions.
 
13727
+
 
13728
+2013-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
 
13729
+
 
13730
+       PR c++/58596
 
13731
+       * semantics.c (lambda_expr_this_capture): Handle NSDMIs in the
 
13732
+       cp_unevaluated_operand case.
 
13733
+
 
13734
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
 
13735
+
 
13736
+       PR c++/58633
 
13737
+       * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.
 
13738
+
 
13739
+2013-10-16  Jason Merrill  <jason@redhat.com>
 
13740
+
 
13741
+       PR c++/57850
 
13742
+       * decl2.c (dump_tu): Split out from...
 
13743
+       (cp_write_global_declarations): ...here.  Call it in PCH mode.
 
13744
+
 
13745
 2013-10-16  Release Manager
 
13746
 
 
13747
        * GCC 4.8.2 released.
 
13748
Index: gcc/cp/pt.c
 
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))
 
13764
        {
 
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 @@
 
13771
 
 
13772
   /* Determine what specialization of the original template to
 
13773
      instantiate.  */
 
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)
 
13777
     {
 
13778
       TYPE_BEING_DEFINED (type) = 1;
 
13779
@@ -13710,6 +13710,10 @@
 
13780
        RETURN (r);
 
13781
       }
 
13782
 
 
13783
+    case POINTER_PLUS_EXPR:
 
13784
+      return fold_build_pointer_plus (RECUR (TREE_OPERAND (t, 0)),
 
13785
+                                     RECUR (TREE_OPERAND (t, 1)));
 
13786
+
 
13787
     case SCOPE_REF:
 
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))
 
13793
            {
 
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 @@
 
13800
     return -1;
 
13801
 }
 
13802
 
 
13803
-/* Determine which of two partial specializations of MAIN_TMPL is more
 
13804
+/* Determine which of two partial specializations of TMPL is more
 
13805
    specialized.
 
13806
 
 
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.  */
 
13810
 
 
13811
 static int
 
13812
-more_specialized_class (tree main_tmpl, tree pat1, tree pat2)
 
13813
+more_specialized_class (tree tmpl, tree pat1, tree pat2)
 
13814
 {
 
13815
   tree targs;
 
13816
   tree tmpl1, tmpl2;
 
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));
 
13825
   if (targs)
 
13826
@@ -17593,7 +17597,7 @@
 
13827
       any_deductions = true;
 
13828
     }
 
13829
 
 
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));
 
13834
   if (targs)
 
13835
@@ -17673,7 +17677,7 @@
 
13836
 }
 
13837
 
 
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
 
13842
    ARGS.
 
13843
 
 
13844
@@ -17688,7 +17692,7 @@
 
13845
    is bound to `double'.  */
 
13846
 
 
13847
 static tree
 
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)
 
13850
 {
 
13851
   int i, ntparms = TREE_VEC_LENGTH (tparms);
 
13852
   tree deduced_args;
 
13853
@@ -17728,8 +17732,8 @@
 
13854
      `T' is `A' but unify () does not check whether `typename T::X'
 
13855
      is `int'.  */
 
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),
 
13860
+                                    spec_args, 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 @@
 
13865
 }
 
13866
 
 
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.
 
13875
 
 
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
 
13879
-   returned.  */
 
13880
+   partial specializations matching TYPE, then NULL_TREE is
 
13881
+   returned, indicating that the primary template should be used.  */
 
13882
 
 
13883
 static tree
 
13884
-most_specialized_class (tree type, tree tmpl, tsubst_flags_t complain)
 
13885
+most_specialized_class (tree type, tsubst_flags_t complain)
 
13886
 {
 
13887
   tree list = NULL_TREE;
 
13888
   tree t;
 
13889
   tree champ;
 
13890
   int fate;
 
13891
   bool ambiguous_p;
 
13892
-  tree args;
 
13893
   tree outer_args = NULL_TREE;
 
13894
 
 
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);
 
13900
 
 
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);
 
13905
     }
 
13906
 
 
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))
 
13909
     {
 
13910
       tree partial_spec_args;
 
13911
       tree spec_args;
 
13912
@@ -17944,8 +17948,7 @@
 
13913
 
 
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,
 
13919
                                 tmpl, tf_none,
 
13920
                                 /*require_all_args=*/true,
 
13921
                                 /*use_default_args=*/true);
 
13922
@@ -19955,6 +19958,10 @@
 
13923
       if (TREE_CODE (expression) == SCOPE_REF)
 
13924
        return false;
 
13925
 
 
13926
+      /* Always dependent, on the number of arguments if nothing else.  */
 
13927
+      if (TREE_CODE (expression) == EXPR_PACK_EXPANSION)
 
13928
+       return true;
 
13929
+
 
13930
       if (BASELINK_P (expression))
 
13931
        expression = BASELINK_FUNCTIONS (expression);
 
13932
 
 
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 @@
 
13938
        }
 
13939
       stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt);
 
13940
     }
 
13941
-  add_stmt (stmt);
 
13942
+  finish_expr_stmt (stmt);
 
13943
 }
 
13944
 
 
13945
 void
 
13946
@@ -7543,7 +7543,7 @@
 
13947
              unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
 
13948
              tree index = bitsize_int (indexi);
 
13949
 
 
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
 
13957
      nearest 'this'.  */
 
13958
   if (cp_unevaluated_operand)
 
13959
-    return lookup_name (this_identifier);
 
13960
+    {
 
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);
 
13967
+    }
 
13968
 
 
13969
   /* Try to default capture 'this' if we can.  */
 
13970
   if (!this_capture
 
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));
 
13977
 }
 
13978
 
 
13979
+/* The entire file is now complete.  If requested, dump everything
 
13980
+   to a file.  */
 
13981
+
 
13982
+static void
 
13983
+dump_tu (void)
 
13984
+{
 
13985
+  int flags;
 
13986
+  FILE *stream = dump_begin (TDI_tu, &flags);
 
13987
+
 
13988
+  if (stream)
 
13989
+    {
 
13990
+      dump_node (global_namespace, flags & ~TDF_SLIM, stream);
 
13991
+      dump_end (TDI_tu, stream);
 
13992
+    }
 
13993
+}
 
13994
+
 
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 @@
 
13999
   if (pch_file)
 
14000
     {
 
14001
       c_common_write_pch ();
 
14002
+      dump_tu ();
 
14003
       return;
 
14004
     }
 
14005
 
 
14006
@@ -4359,17 +4376,8 @@
 
14007
 
 
14008
   /* The entire file is now complete.  If requested, dump everything
 
14009
      to a file.  */
 
14010
-  {
 
14011
-    int flags;
 
14012
-    FILE *stream = dump_begin (TDI_tu, &flags);
 
14013
+  dump_tu ();
 
14014
 
 
14015
-    if (stream)
 
14016
-      {
 
14017
-       dump_node (global_namespace, flags & ~TDF_SLIM, stream);
 
14018
-       dump_end (TDI_tu, stream);
 
14019
-      }
 
14020
-  }
 
14021
-
 
14022
   if (flag_detailed_statistics)
 
14023
     {
 
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);
 
14032
 
 
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);
 
14036
-
 
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;
 
14047
        }
 
14048
     }
 
14049
 
 
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;
 
14060
   tree optype;
 
14061
   tree first_mem_arg = NULL_TREE;
 
14062
   tree instance_ptr;
 
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 @@
 
14072
            {
 
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 @@
 
14092
 
 
14093
   if (null_ptr_cst_p (expr))
 
14094
     {
 
14095
-      if (complain & tf_warning)
 
14096
-       maybe_warn_zero_as_null_pointer_constant (expr, loc);
 
14097
-
 
14098
       if (TYPE_PTRMEMFUNC_P (type))
 
14099
        return build_ptrmemfunc (TYPE_PTRMEMFUNC_FN_TYPE (type), expr, 0,
 
14100
                                 /*c_cast_p=*/false, complain);
 
14101
 
 
14102
+      if (complain & tf_warning)
 
14103
+       maybe_warn_zero_as_null_pointer_constant (expr, loc);
 
14104
+
 
14105
       /* A NULL pointer-to-data-member is represented by -1, not by
 
14106
         zero.  */
 
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 @@
 
14127
 
 
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
 
14131
-            from no_mode.  */
 
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)
 
14136
            {
 
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);
 
14141
            }
 
14142
        }
 
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.  */
 
14150
 
 
14151
 static bool
 
14152
-check_load (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
14153
+check_load (gimple, tree op, tree, void *data)
 
14154
 {
 
14155
   if (DECL_P (op))
 
14156
     check_decl ((funct_state)data, op, false, false);
 
14157
@@ -600,7 +600,7 @@
 
14158
 /* Wrapper around check_decl for stores in local more.  */
 
14159
 
 
14160
 static bool
 
14161
-check_store (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
14162
+check_store (gimple, tree op, tree, void *data)
 
14163
 {
 
14164
   if (DECL_P (op))
 
14165
     check_decl ((funct_state)data, op, true, false);
 
14166
@@ -612,7 +612,7 @@
 
14167
 /* Wrapper around check_decl for loads in ipa mode.  */
 
14168
 
 
14169
 static bool
 
14170
-check_ipa_load (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
14171
+check_ipa_load (gimple, tree op, tree, void *data)
 
14172
 {
 
14173
   if (DECL_P (op))
 
14174
     check_decl ((funct_state)data, op, false, true);
 
14175
@@ -624,7 +624,7 @@
 
14176
 /* Wrapper around check_decl for stores in ipa mode.  */
 
14177
 
 
14178
 static bool
 
14179
-check_ipa_store (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
14180
+check_ipa_store (gimple, tree op, tree, void *data)
 
14181
 {
 
14182
   if (DECL_P (op))
 
14183
     check_decl ((funct_state)data, op, true, true);
 
14184
Index: gcc/cse.c
 
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 @@
 
14189
        return x;
 
14190
       }
 
14191
 
 
14192
+    case UNSIGNED_FLOAT:
 
14193
+      {
 
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);
 
14201
+       return x;
 
14202
+      }
 
14203
+
 
14204
     case REG:
 
14205
       i = REG_QTY (REGNO (x));
 
14206
 
 
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 @@
 
14212
            break;
 
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)
 
14225
 {
 
14226
   loop_optimizer_init (LOOPS_NORMAL);
 
14227
-
 
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 @@
 
14237
 #endif
 
14238
 
 
14239
 
 
14240
+/* Define if your assembler supports LEON instructions. */
 
14241
+#ifndef USED_FOR_TARGET
 
14242
+#undef HAVE_AS_LEON
 
14243
+#endif
 
14244
+
 
14245
+
 
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
 
14249
Index: gcc/ifcvt.c
 
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 @@
 
14254
 
 
14255
   while (1)
 
14256
     {
 
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)
 
14263
        count++;
 
14264
 
 
14265
       if (insn == BB_END (bb))
 
14266
@@ -505,7 +509,10 @@
 
14267
          n_insns -= 2 * n_matching;
 
14268
        }
 
14269
 
 
14270
-      if (then_start && else_start)
 
14271
+      if (then_start
 
14272
+         && else_start
 
14273
+         && then_n_insns > n_matching
 
14274
+         && else_n_insns > n_matching)
 
14275
        {
 
14276
          int longest_match = MIN (then_n_insns - n_matching,
 
14277
                                   else_n_insns - n_matching);
 
14278
Index: gcc/expr.c
 
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;
 
14288
       rtx dest = dst;
 
14289
 
 
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;
 
14293
+      else
 
14294
+       adj_bytelen = bytelen;
 
14295
 
 
14296
       if (GET_CODE (dst) == CONCAT)
 
14297
        {
 
14298
@@ -2040,6 +2042,7 @@
 
14299
            }
 
14300
        }
 
14301
 
 
14302
+      /* Handle trailing fragments that run over the size of the struct.  */
 
14303
       if (ssize >= 0 && bytepos + (HOST_WIDE_INT) bytelen > ssize)
 
14304
        {
 
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);
 
14309
            }
 
14310
-         bytelen = adj_bytelen;
 
14311
+
 
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]);
 
14317
        }
 
14318
 
 
14319
       /* Optimize the access just a bit.  */
 
14320
-      if (MEM_P (dest)
 
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]);
 
14331
+
 
14332
       else
 
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));
 
14337
 
 
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)
 
14345
     {
 
14346
       HOST_WIDE_INT adjust = bitoffset - *bitpos;
 
14347
-
 
14348
       gcc_assert ((adjust % BITS_PER_UNIT) == 0);
 
14349
-      gcc_assert (*offset != NULL_TREE);
 
14350
 
 
14351
       *bitpos += adjust;
 
14352
-      *offset
 
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);
 
14356
+      else
 
14357
+       *offset
 
14358
+         = size_binop (MINUS_EXPR, *offset, size_int (adjust / BITS_PER_UNIT));
 
14359
       *bitstart = 0;
 
14360
     }
 
14361
   else
 
14362
@@ -4668,8 +4677,7 @@
 
14363
          expand_insn (icode, 2, ops);
 
14364
        }
 
14365
       else
 
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);
 
14369
       return;
 
14370
     }
 
14371
 
 
14372
@@ -4698,6 +4706,15 @@
 
14373
       tem = get_inner_reference (to, &bitsize, &bitpos, &offset, &mode1,
 
14374
                                 &unsignedp, &volatilep, true);
 
14375
 
 
14376
+      /* Make sure bitpos is not negative, it can wreak havoc later.  */
 
14377
+      if (bitpos < 0)
 
14378
+       {
 
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;
 
14383
+       }
 
14384
+
 
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 @@
 
14393
   Bexpression*
 
14394
   convert_expression(Btype* type, Bexpression* expr, Location);
 
14395
 
 
14396
+  Bexpression*
 
14397
+  function_code_expression(Bfunction*, Location);
 
14398
+
 
14399
   // Statements.
 
14400
 
 
14401
   Bstatement*
 
14402
@@ -334,6 +337,17 @@
 
14403
   Bexpression*
 
14404
   label_address(Blabel*, Location);
 
14405
 
 
14406
+  // Functions.
 
14407
+
 
14408
+  Bfunction*
 
14409
+  error_function()
 
14410
+  { return this->make_function(error_mark_node); }
 
14411
+
 
14412
+  Bfunction*
 
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);
 
14416
+
 
14417
  private:
 
14418
   // Make a Bexpression from a tree.
 
14419
   Bexpression*
 
14420
@@ -350,6 +364,10 @@
 
14421
   make_type(tree t)
 
14422
   { return new Btype(t); }
 
14423
 
 
14424
+  Bfunction*
 
14425
+  make_function(tree t)
 
14426
+  { return new Bfunction(t); }
 
14427
+
 
14428
   Btype*
 
14429
   fill_in_struct(Btype*, const std::vector<Btyped_identifier>&);
 
14430
 
 
14431
@@ -966,6 +984,19 @@
 
14432
   return tree_to_expr(ret);
 
14433
 }
 
14434
 
 
14435
+// Get the address of a function.
 
14436
+
 
14437
+Bexpression*
 
14438
+Gcc_backend::function_code_expression(Bfunction* bfunc, Location location)
 
14439
+{
 
14440
+  tree func = bfunc->get_tree();
 
14441
+  if (func == error_mark_node)
 
14442
+    return this->error_expression();
 
14443
+
 
14444
+  tree ret = build_fold_addr_expr_loc(location.gcc_location(), func);
 
14445
+  return this->make_expression(ret);
 
14446
+}
 
14447
+
 
14448
 // An expression as a statement.
 
14449
 
 
14450
 Bstatement*
 
14451
@@ -1724,6 +1755,56 @@
 
14452
   return this->make_expression(ret);
 
14453
 }
 
14454
 
 
14455
+// Declare or define a new function.
 
14456
+
 
14457
+Bfunction*
 
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)
 
14463
+{
 
14464
+  tree functype = fntype->get_tree();
 
14465
+  if (functype != error_mark_node)
 
14466
+    {
 
14467
+      gcc_assert(FUNCTION_POINTER_TYPE_P(functype));
 
14468
+      functype = TREE_TYPE(functype);
 
14469
+    }
 
14470
+  tree id = get_identifier_from_string(name);
 
14471
+  if (functype == error_mark_node || id == error_mark_node)
 
14472
+    return this->error_function();
 
14473
+
 
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));
 
14477
+  if (is_visible)
 
14478
+    TREE_PUBLIC(decl) = 1;
 
14479
+  if (is_declaration)
 
14480
+    DECL_EXTERNAL(decl) = 1;
 
14481
+  else
 
14482
+    {
 
14483
+      tree restype = TREE_TYPE(functype);
 
14484
+      tree resdecl =
 
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;
 
14490
+    }
 
14491
+  if (!is_inlinable)
 
14492
+    DECL_UNINLINABLE(decl) = 1;
 
14493
+  if (disable_split_stack)
 
14494
+    {
 
14495
+      tree attr = get_identifier("__no_split_stack__");
 
14496
+      DECL_ATTRIBUTES(decl) = tree_cons(attr, NULL_TREE, NULL_TREE);
 
14497
+    }
 
14498
+  if (in_unique_section)
 
14499
+    resolve_unique_section(decl, 0, 1);
 
14500
+
 
14501
+  go_preserve_from_gc(decl);
 
14502
+  return new Bfunction(decl);
 
14503
+}
 
14504
+
 
14505
 // The single backend.
 
14506
 
 
14507
 static Gcc_backend gcc_backend;
 
14508
@@ -1799,3 +1880,9 @@
 
14509
 {
 
14510
   return bv->get_tree();
 
14511
 }
 
14512
+
 
14513
+tree
 
14514
+function_to_tree(Bfunction* bf)
 
14515
+{
 
14516
+  return bf->get_tree();
 
14517
+}
 
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)
 
14522
@@ -1,3 +1,22 @@
 
14523
+2013-12-11  Ian Lance Taylor  <iant@google.com>
 
14524
+
 
14525
+       * go-lang.c (go_langhook_post_options): Disable sibling calls by
 
14526
+       default.
 
14527
+
 
14528
+2013-10-16  Ian Lance Taylor  <iant@google.com>
 
14529
+
 
14530
+       Bring in from mainline:
 
14531
+
 
14532
+       2013-10-11  Chris Manghane  <cmang@google.com>
 
14533
+       * go-gcc.cc (Gcc_backend::function_code_expression): New
 
14534
+       function.
 
14535
+
 
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.
 
14541
+
 
14542
 2013-10-16  Release Manager
 
14543
 
 
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;
 
14552
 
 
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;
 
14556
+
 
14557
   /* Returning false means that the backend should be used.  */
 
14558
   return false;
 
14559
 }
 
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();
 
14567
 
 
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,
 
14574
                                              location);
 
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();
 
14579
 
 
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())
 
14583
+       {
 
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();
 
14589
+              ++p)
 
14590
+           {
 
14591
+             const std::string& pname((*p)->name());
 
14592
+             if (pname[0] == 'r' && pname[1] == '.')
 
14593
+               {
 
14594
+                 new_receiver_name = pname;
 
14595
+                 break;
 
14596
+               }
 
14597
+           }
 
14598
+         go_assert(!new_receiver_name.empty());
 
14599
+       }
 
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)
 
14611
 {
 
14612
 }
 
14613
@@ -3819,6 +3841,81 @@
 
14614
   *presults = results;
 
14615
 }
 
14616
 
 
14617
+// Get the backend representation.
 
14618
+
 
14619
+Bfunction*
 
14620
+Function::get_or_make_decl(Gogo* gogo, Named_object* no)
 
14621
+{
 
14622
+  if (this->fndecl_ == NULL)
 
14623
+    {
 
14624
+      std::string asm_name;
 
14625
+      bool is_visible = false;
 
14626
+      if (no->package() != NULL)
 
14627
+        ;
 
14628
+      else if (this->enclosing_ != NULL || Gogo::is_thunk(no))
 
14629
+        ;
 
14630
+      else if (Gogo::unpack_hidden_name(no->name()) == "init"
 
14631
+               && !this->type_->is_method())
 
14632
+        ;
 
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())
 
14641
+        {
 
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())
 
14648
+            {
 
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
 
14653
+              // case.
 
14654
+              pkgpath = Gogo::hidden_name_pkgpath(no->name());
 
14655
+              pkgpath = Gogo::pkgpath_for_symbol(pkgpath);
 
14656
+            }
 
14657
+
 
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())
 
14662
+            {
 
14663
+              asm_name.append(1, '.');
 
14664
+              Type* rtype = this->type_->receiver()->type();
 
14665
+              asm_name.append(rtype->mangled_name(gogo));
 
14666
+            }
 
14667
+        }
 
14668
+
 
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_);
 
14676
+
 
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_;
 
14681
+
 
14682
+      Btype* functype = this->type_->get_backend_fntype(gogo);
 
14683
+      this->fndecl_ =
 
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());
 
14688
+    }
 
14689
+  return this->fndecl_;
 
14690
+}
 
14691
+
 
14692
 // Class Block.
 
14693
 
 
14694
 Block::Block(Block* enclosing, Location location)
 
14695
@@ -5110,6 +5207,75 @@
 
14696
     go_unreachable();
 
14697
 }
 
14698
 
 
14699
+
 
14700
+// Return the external identifier for this object.
 
14701
+
 
14702
+std::string
 
14703
+Named_object::get_id(Gogo* gogo)
 
14704
+{
 
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()))
 
14712
+    {
 
14713
+      // We don't need the package name for builtin types.
 
14714
+      decl_name = Gogo::unpack_hidden_name(this->name_);
 
14715
+    }
 
14716
+  else
 
14717
+    {
 
14718
+      std::string package_name;
 
14719
+      if (this->package_ == NULL)
 
14720
+       package_name = gogo->package_name();
 
14721
+      else
 
14722
+       package_name = this->package_->package_name();
 
14723
+
 
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.
 
14733
+
 
14734
+      decl_name = package_name + '.' + Gogo::unpack_hidden_name(this->name_);
 
14735
+
 
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();
 
14741
+      else
 
14742
+       fntype = NULL;
 
14743
+      if (fntype != NULL && fntype->is_method())
 
14744
+       {
 
14745
+         decl_name.push_back('.');
 
14746
+         decl_name.append(fntype->receiver()->type()->mangled_name(gogo));
 
14747
+       }
 
14748
+    }
 
14749
+  if (this->is_type())
 
14750
+    {
 
14751
+      unsigned int index;
 
14752
+      const Named_object* in_function = this->type_value()->in_function(&index);
 
14753
+      if (in_function != NULL)
 
14754
+       {
 
14755
+         decl_name += '$' + Gogo::unpack_hidden_name(in_function->name());
 
14756
+         if (index > 0)
 
14757
+           {
 
14758
+             char buf[30];
 
14759
+             snprintf(buf, sizeof buf, "%u", index);
 
14760
+             decl_name += '$';
 
14761
+             decl_name += buf;
 
14762
+           }
 
14763
+       }
 
14764
+    }
 
14765
+  return decl_name;
 
14766
+}
 
14767
+
 
14768
 // Class Bindings.
 
14769
 
 
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)
 
14775
@@ -68,6 +68,12 @@
 
14776
               P1(STRING), R1(SLICE))
 
14777
 
 
14778
 
 
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))
 
14784
+
 
14785
 // Make a slice.
 
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)
 
14792
@@ -48,6 +48,7 @@
 
14793
 class Bblock;
 
14794
 class Bvariable;
 
14795
 class Blabel;
 
14796
+class Bfunction;
 
14797
 
 
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;
 
14802
   }
 
14803
 
 
14804
+  // Record that this function is a stub method created for an unnamed
 
14805
+  // type.
 
14806
+  void
 
14807
+  set_is_unnamed_type_stub_method()
 
14808
+  {
 
14809
+    go_assert(this->is_method());
 
14810
+    this->is_unnamed_type_stub_method_ = true;
 
14811
+  }
 
14812
+
 
14813
   // Add a new field to the closure variable.
 
14814
   void
 
14815
   add_closure_field(Named_object* var, Location loc)
 
14816
@@ -1089,17 +1099,13 @@
 
14817
     this->descriptor_ = descriptor;
 
14818
   }
 
14819
 
 
14820
-  // Return the function's decl given an identifier.
 
14821
-  tree
 
14822
-  get_or_make_decl(Gogo*, Named_object*, tree id);
 
14823
+  // Return the backend representation.
 
14824
+  Bfunction*
 
14825
+  get_or_make_decl(Gogo*, Named_object*);
 
14826
 
 
14827
   // Return the function's decl after it has been built.
 
14828
   tree
 
14829
-  get_decl() const
 
14830
-  {
 
14831
-    go_assert(this->fndecl_ != NULL);
 
14832
-    return this->fndecl_;
 
14833
-  }
 
14834
+  get_decl() const;
 
14835
 
 
14836
   // Set the function decl to hold a tree of the function code.
 
14837
   void
 
14838
@@ -1170,7 +1176,7 @@
 
14839
   // The function descriptor, if any.
 
14840
   Expression* descriptor_;
 
14841
   // The function decl.
 
14842
-  tree fndecl_;
 
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
 
14852
+  // type.
 
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; }
 
14860
 
 
14861
-  // Return a decl for the function given an identifier.
 
14862
-  tree
 
14863
-  get_or_make_decl(Gogo*, Named_object*, tree id);
 
14864
+  // Return a backend representation.
 
14865
+  Bfunction*
 
14866
+  get_or_make_decl(Gogo*, Named_object*);
 
14867
 
 
14868
   // If there is a descriptor, build it into the backend
 
14869
   // representation.
 
14870
@@ -1290,7 +1299,7 @@
 
14871
   // The function descriptor, if any.
 
14872
   Expression* descriptor_;
 
14873
   // The function decl if needed.
 
14874
-  tree fndecl_;
 
14875
+  Bfunction* fndecl_;
 
14876
 };
 
14877
 
 
14878
 // A variable.
 
14879
@@ -2181,8 +2190,8 @@
 
14880
   Bvariable*
 
14881
   get_backend_variable(Gogo*, Named_object* function);
 
14882
 
 
14883
-  // Return a tree for the external identifier for this object.
 
14884
-  tree
 
14885
+  // Return the external identifier for this object.
 
14886
+  std::string
 
14887
   get_id(Gogo*);
 
14888
 
 
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);
 
14897
 
 
14898
+  void
 
14899
+  write_named_hash(Gogo*, Named_type*, Function_type* hash_fntype,
 
14900
+                  Function_type* equal_fntype);
 
14901
+
 
14902
+  void
 
14903
+  write_named_equal(Gogo*, Named_type*);
 
14904
+
 
14905
   // Build a composite literal for the uncommon type information.
 
14906
   Expression*
 
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),
 
14914
+      fnbtype_(NULL)
 
14915
   { }
 
14916
 
 
14917
   // Get the receiver.
 
14918
@@ -1789,6 +1797,12 @@
 
14919
   Function_type*
 
14920
   copy_with_receiver(Type*) const;
 
14921
 
 
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.
 
14925
+  Function_type*
 
14926
+  copy_with_receiver_as_param(bool want_pointer_receiver) const;
 
14927
+
 
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
 
14930
   // values.
 
14931
@@ -1798,6 +1812,11 @@
 
14932
   static Type*
 
14933
   make_function_type_descriptor_type();
 
14934
 
 
14935
+  // Return the backend representation of this function type. This is used
 
14936
+  // as the real type of a backend function declaration or defintion.
 
14937
+  Btype*
 
14938
+  get_backend_fntype(Gogo*);
 
14939
+
 
14940
  protected:
 
14941
   int
 
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.
 
14946
   bool is_builtin_;
 
14947
+  // The backend representation of this type for backend function
 
14948
+  // declarations and definitions.
 
14949
+  Btype* fnbtype_;
 
14950
 };
 
14951
 
 
14952
 // The type of a pointer.
 
14953
@@ -1915,7 +1937,7 @@
 
14954
 {
 
14955
  public:
 
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)
 
14959
   { }
 
14960
 
 
14961
   // The field name.
 
14962
@@ -1926,6 +1948,10 @@
 
14963
   bool
 
14964
   is_field_name(const std::string& name) const;
 
14965
 
 
14966
+  // Return whether this struct field is an unexported field named NAME.
 
14967
+  bool
 
14968
+  is_unexported_field_name(Gogo*, const std::string& name) const;
 
14969
+
 
14970
   // Return whether this struct field is an embedded built-in type.
 
14971
   bool
 
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); }
 
14976
 
 
14977
+  // Record that this field is defined in an imported struct.
 
14978
+  void
 
14979
+  set_is_imported()
 
14980
+  { this->is_imported_ = true; }
 
14981
+
 
14982
   // Set the type.  This is only used in error cases.
 
14983
   void
 
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.
 
14988
   std::string* tag_;
 
14989
+  // Whether this field is defined in an imported struct.
 
14990
+  bool is_imported_;
 
14991
 };
 
14992
 
 
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 @@
 
14999
     return NULL;
 
15000
 
 
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 @@
 
15012
   location() const
 
15013
   { return this->location_; }
 
15014
 
 
15015
+  // Return the package we are importing.
 
15016
+  Package*
 
15017
+  package() const
 
15018
+  { return this->package_; }
 
15019
+
 
15020
   // Return the next character.
 
15021
   int
 
15022
   peek_char()
 
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)
 
15027
@@ -42,6 +42,8 @@
 
15028
   RFT_RUNE,
 
15029
   // Go type float64, C type double.
 
15030
   RFT_FLOAT64,
 
15031
+  // Go type complex64, C type __complex float.
 
15032
+  RFT_COMPLEX64,
 
15033
   // Go type complex128, C type __complex double.
 
15034
   RFT_COMPLEX128,
 
15035
   // Go type string, C type struct __go_string.
 
15036
@@ -126,6 +128,10 @@
 
15037
          t = Type::lookup_float_type("float64");
 
15038
          break;
 
15039
 
 
15040
+       case RFT_COMPLEX64:
 
15041
+         t = Type::lookup_complex_type("complex64");
 
15042
+         break;
 
15043
+
 
15044
        case RFT_COMPLEX128:
 
15045
          t = Type::lookup_complex_type("complex128");
 
15046
          break;
 
15047
@@ -216,6 +222,7 @@
 
15048
     case RFT_UINTPTR:
 
15049
     case RFT_RUNE:
 
15050
     case RFT_FLOAT64:
 
15051
+    case RFT_COMPLEX64:
 
15052
     case RFT_COMPLEX128:
 
15053
     case RFT_STRING:
 
15054
     case RFT_POINTER:
 
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 @@
 
15060
   closure()
 
15061
   { return this->closure_; }
 
15062
 
 
15063
-  // Return a tree for the code for a function.
 
15064
-  static tree
 
15065
+  // Return a backend expression for the code of a function.
 
15066
+  static Bexpression*
 
15067
   get_code_pointer(Gogo*, Named_object* function, Location loc);
 
15068
 
 
15069
  protected:
 
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 @@
 
15075
   delete[] vec;
 
15076
 }
 
15077
 
 
15078
-// Get a tree for the identifier for a named object.
 
15079
-
 
15080
-tree
 
15081
-Named_object::get_id(Gogo* gogo)
 
15082
-{
 
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()))
 
15090
-    {
 
15091
-      // We don't need the package name for builtin types.
 
15092
-      decl_name = Gogo::unpack_hidden_name(this->name_);
 
15093
-    }
 
15094
-  else
 
15095
-    {
 
15096
-      std::string package_name;
 
15097
-      if (this->package_ == NULL)
 
15098
-       package_name = gogo->package_name();
 
15099
-      else
 
15100
-       package_name = this->package_->package_name();
 
15101
-
 
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.
 
15111
-
 
15112
-      decl_name = package_name + '.' + Gogo::unpack_hidden_name(this->name_);
 
15113
-
 
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();
 
15119
-      else
 
15120
-       fntype = NULL;
 
15121
-      if (fntype != NULL && fntype->is_method())
 
15122
-       {
 
15123
-         decl_name.push_back('.');
 
15124
-         decl_name.append(fntype->receiver()->type()->mangled_name(gogo));
 
15125
-       }
 
15126
-    }
 
15127
-  if (this->is_type())
 
15128
-    {
 
15129
-      unsigned int index;
 
15130
-      const Named_object* in_function = this->type_value()->in_function(&index);
 
15131
-      if (in_function != NULL)
 
15132
-       {
 
15133
-         decl_name += '$' + Gogo::unpack_hidden_name(in_function->name());
 
15134
-         if (index > 0)
 
15135
-           {
 
15136
-             char buf[30];
 
15137
-             snprintf(buf, sizeof buf, "%u", index);
 
15138
-             decl_name += '$';
 
15139
-             decl_name += buf;
 
15140
-           }
 
15141
-       }
 
15142
-    }
 
15143
-  return get_identifier_from_string(decl_name);
 
15144
-}
 
15145
-
 
15146
 // Get a tree for a named object.
 
15147
 
 
15148
 tree
 
15149
@@ -1067,11 +999,6 @@
 
15150
       return error_mark_node;
 
15151
     }
 
15152
 
 
15153
-  tree name;
 
15154
-  if (this->classification_ == NAMED_OBJECT_TYPE)
 
15155
-    name = NULL_TREE;
 
15156
-  else
 
15157
-    name = this->get_id(gogo);
 
15158
   tree decl;
 
15159
   switch (this->classification_)
 
15160
     {
 
15161
@@ -1099,6 +1026,7 @@
 
15162
              decl = error_mark_node;
 
15163
            else if (INTEGRAL_TYPE_P(TREE_TYPE(expr_tree)))
 
15164
              {
 
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:
 
15171
       {
 
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)
 
15176
          {
 
15177
            if (func->block() != NULL)
 
15178
@@ -1286,124 +1214,13 @@
 
15179
   return block_tree;
 
15180
 }
 
15181
 
 
15182
-// Get a tree for a function decl.
 
15183
+// Get the backend representation.
 
15184
 
 
15185
-tree
 
15186
-Function::get_or_make_decl(Gogo* gogo, Named_object* no, tree id)
 
15187
+Bfunction*
 
15188
+Function_declaration::get_or_make_decl(Gogo* gogo, Named_object* no)
 
15189
 {
 
15190
-  if (this->fndecl_ == NULL_TREE)
 
15191
+  if (this->fndecl_ == NULL)
 
15192
     {
 
15193
-      tree functype = type_to_tree(this->type_->get_backend(gogo));
 
15194
-
 
15195
-      if (functype != error_mark_node)
 
15196
-       {
 
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);
 
15205
-       }
 
15206
-
 
15207
-      if (functype == error_mark_node)
 
15208
-       this->fndecl_ = error_mark_node;
 
15209
-      else
 
15210
-       {
 
15211
-         tree decl = build_decl(this->location().gcc_location(), FUNCTION_DECL,
 
15212
-                                 id, functype);
 
15213
-
 
15214
-         this->fndecl_ = decl;
 
15215
-
 
15216
-         if (no->package() != NULL)
 
15217
-           ;
 
15218
-         else if (this->enclosing_ != NULL || Gogo::is_thunk(no))
 
15219
-           ;
 
15220
-         else if (Gogo::unpack_hidden_name(no->name()) == "init"
 
15221
-                  && !this->type_->is_method())
 
15222
-           ;
 
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())
 
15231
-           {
 
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())
 
15237
-               {
 
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
 
15242
-                 // case.
 
15243
-                 pkgpath = Gogo::hidden_name_pkgpath(no->name());
 
15244
-                 pkgpath = Gogo::pkgpath_for_symbol(pkgpath);
 
15245
-               }
 
15246
-
 
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())
 
15251
-               {
 
15252
-                 asm_name.append(1, '.');
 
15253
-                 Type* rtype = this->type_->receiver()->type();
 
15254
-                 asm_name.append(rtype->mangled_name(gogo));
 
15255
-               }
 
15256
-             SET_DECL_ASSEMBLER_NAME(decl,
 
15257
-                                     get_identifier_from_string(asm_name));
 
15258
-           }
 
15259
-
 
15260
-         // Why do we have to do this in the frontend?
 
15261
-         tree restype = TREE_TYPE(functype);
 
15262
-         tree resdecl =
 
15263
-            build_decl(this->location().gcc_location(), RESULT_DECL, NULL_TREE,
 
15264
-                       restype);
 
15265
-         DECL_ARTIFICIAL(resdecl) = 1;
 
15266
-         DECL_IGNORED_P(resdecl) = 1;
 
15267
-         DECL_CONTEXT(resdecl) = decl;
 
15268
-         DECL_RESULT(decl) = resdecl;
 
15269
-
 
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;
 
15278
-
 
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_)
 
15283
-           {
 
15284
-             tree attr = get_identifier("__no_split_stack__");
 
15285
-             DECL_ATTRIBUTES(decl) = tree_cons(attr, NULL_TREE, NULL_TREE);
 
15286
-           }
 
15287
-
 
15288
-         if (this->in_unique_section_)
 
15289
-           resolve_unique_section (decl, 0, 1);
 
15290
-
 
15291
-         go_preserve_from_gc(decl);
 
15292
-       }
 
15293
-    }
 
15294
-  return this->fndecl_;
 
15295
-}
 
15296
-
 
15297
-// Get a tree for a function declaration.
 
15298
-
 
15299
-tree
 
15300
-Function_declaration::get_or_make_decl(Gogo* gogo, Named_object* no, tree id)
 
15301
-{
 
15302
-  if (this->fndecl_ == NULL_TREE)
 
15303
-    {
 
15304
       // Let Go code use an asm declaration to pick up a builtin
 
15305
       // function.
 
15306
       if (!this->asm_name_.empty())
 
15307
@@ -1412,58 +1229,46 @@
 
15308
            builtin_functions.find(this->asm_name_);
 
15309
          if (p != builtin_functions.end())
 
15310
            {
 
15311
-             this->fndecl_ = p->second;
 
15312
+             this->fndecl_ = tree_to_function(p->second);
 
15313
              return this->fndecl_;
 
15314
            }
 
15315
        }
 
15316
 
 
15317
-      tree functype = type_to_tree(this->fntype_->get_backend(gogo));
 
15318
+      std::string asm_name;
 
15319
+      if (this->asm_name_.empty())
 
15320
+        {
 
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())
 
15327
+            {
 
15328
+              asm_name.append(1, '.');
 
15329
+              Type* rtype = this->fntype_->receiver()->type();
 
15330
+              asm_name.append(rtype->mangled_name(gogo));
 
15331
+            }
 
15332
+        }
 
15333
 
 
15334
-      if (functype != error_mark_node)
 
15335
-       {
 
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);
 
15344
-       }
 
15345
+      Btype* functype = this->fntype_->get_backend_fntype(gogo);
 
15346
+      this->fndecl_ =
 
15347
+          gogo->backend()->function(functype, no->get_id(gogo), asm_name,
 
15348
+                                    true, true, true, false, false,
 
15349
+                                    this->location());
 
15350
+    }
 
15351
 
 
15352
-      tree decl;
 
15353
-      if (functype == error_mark_node)
 
15354
-       decl = error_mark_node;
 
15355
-      else
 
15356
-       {
 
15357
-         decl = build_decl(this->location().gcc_location(), FUNCTION_DECL, id,
 
15358
-                            functype);
 
15359
-         TREE_PUBLIC(decl) = 1;
 
15360
-         DECL_EXTERNAL(decl) = 1;
 
15361
-
 
15362
-         if (this->asm_name_.empty())
 
15363
-           {
 
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())
 
15370
-               {
 
15371
-                 asm_name.append(1, '.');
 
15372
-                 Type* rtype = this->fntype_->receiver()->type();
 
15373
-                 asm_name.append(rtype->mangled_name(gogo));
 
15374
-               }
 
15375
-             SET_DECL_ASSEMBLER_NAME(decl,
 
15376
-                                     get_identifier_from_string(asm_name));
 
15377
-           }
 
15378
-       }
 
15379
-      this->fndecl_ = decl;
 
15380
-      go_preserve_from_gc(decl);
 
15381
-    }
 
15382
   return this->fndecl_;
 
15383
 }
 
15384
 
 
15385
+// Return the function's decl after it has been built.
 
15386
+
 
15387
+tree
 
15388
+Function::get_decl() const
 
15389
+{
 
15390
+  go_assert(this->fndecl_ != NULL);
 
15391
+  return function_to_tree(this->fndecl_);
 
15392
+}
 
15393
+
 
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 @@
 
15398
 void
 
15399
 Function::build_tree(Gogo* gogo, Named_object* named_function)
 
15400
 {
 
15401
-  tree fndecl = this->fndecl_;
 
15402
+  tree fndecl = this->get_decl();
 
15403
   go_assert(fndecl != NULL_TREE);
 
15404
 
 
15405
   tree params = NULL_TREE;
 
15406
@@ -1796,7 +1601,7 @@
 
15407
     set = NULL_TREE;
 
15408
   else
 
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,
 
15417
                                  &stmt_list);
 
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);
 
15423
 
 
15424
@@ -1869,7 +1674,7 @@
 
15425
   *fini = stmt_list;
 
15426
 }
 
15427
 
 
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 @@
 
15434
     }
 
15435
   else
 
15436
     {
 
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);
 
15441
       int index = 0;
 
15442
@@ -2323,18 +2128,14 @@
 
15443
       go_assert(m != NULL);
 
15444
 
 
15445
       Named_object* no = m->named_object();
 
15446
-
 
15447
-      tree fnid = no->get_id(this);
 
15448
-
 
15449
-      tree fndecl;
 
15450
+      Bfunction* bf;
 
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,
 
15456
-                                                               fnid);
 
15457
+       bf = no->func_declaration_value()->get_or_make_decl(this, no);
 
15458
       else
 
15459
        go_unreachable();
 
15460
-      fndecl = build_fold_addr_expr(fndecl);
 
15461
+      tree fndecl = build_fold_addr_expr(function_to_tree(bf));
 
15462
 
 
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;
 
15468
 
 
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
 
15476
+  // packages.
 
15477
+  if (has_hidden_methods && type->named_type() != NULL)
 
15478
     TREE_PUBLIC(decl) = 1;
 
15479
   else
 
15480
     {
 
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')
 
15487
              && cc != '_'
 
15488
              && (cc < '0' || cc > '9'))
 
15489
-           break;
 
15490
+           {
 
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)
 
15495
+                 || cc == '\t'
 
15496
+                 || cc == '\r'
 
15497
+                 || cc == '\n')
 
15498
+               break;
 
15499
+
 
15500
+             this->lineoff_ = p - this->linebuf_;
 
15501
+             error_at(this->location(),
 
15502
+                      "invalid character 0x%x in identifier",
 
15503
+                      cc);
 
15504
+             if (!has_non_ascii_char)
 
15505
+               {
 
15506
+                 buf.assign(pstart, p - pstart);
 
15507
+                 has_non_ascii_char = true;
 
15508
+               }
 
15509
+             if (!Lex::is_invalid_identifier(buf))
 
15510
+               buf.append("$INVALID$");
 
15511
+           }
 
15512
          ++p;
 
15513
          if (is_first)
 
15514
            {
 
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)
 
15519
@@ -23,7 +23,7 @@
 
15520
 // The backend representation of a statement.
 
15521
 class Bstatement;
 
15522
 
 
15523
-// The backend representation of a function definition.
 
15524
+// The backend representation of a function definition or declaration.
 
15525
 class Bfunction;
 
15526
 
 
15527
 // The backend representation of a block.
 
15528
@@ -266,6 +266,11 @@
 
15529
   virtual Bexpression*
 
15530
   convert_expression(Btype* type, Bexpression* expr, Location) = 0;
 
15531
 
 
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;
 
15536
+
 
15537
   // Statements.
 
15538
 
 
15539
   // Create an error statement.  This is used for cases which should
 
15540
@@ -498,6 +503,32 @@
 
15541
   // recover.
 
15542
   virtual Bexpression*
 
15543
   label_address(Blabel*, Location) = 0;
 
15544
+
 
15545
+  // Functions.
 
15546
+
 
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;
 
15552
+
 
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;
 
15570
 };
 
15571
 
 
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*);
 
15578
 
 
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 @@
 
15585
                                               bloc);
 
15586
   gogo->start_block(bloc);
 
15587
 
 
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,
 
15593
                                             equal_fntype);
 
15594
   else if (this->array_type() != NULL)
 
15595
@@ -1852,7 +1854,9 @@
 
15596
                                                false, bloc);
 
15597
   gogo->start_block(bloc);
 
15598
 
 
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);
 
15608
 }
 
15609
 
 
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.
 
15615
+
 
15616
+void
 
15617
+Type::write_named_hash(Gogo* gogo, Named_type* name,
 
15618
+                      Function_type* hash_fntype, Function_type* equal_fntype)
 
15619
+{
 
15620
+  Location bloc = Linemap::predeclared_location();
 
15621
+
 
15622
+  Named_type* base_type = name->real_type()->named_type();
 
15623
+  go_assert(base_type != NULL);
 
15624
+
 
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);
 
15629
+
 
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);
 
15633
+
 
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);
 
15638
+
 
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);
 
15647
+
 
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);
 
15653
+}
 
15654
+
 
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.
 
15660
+
 
15661
+void
 
15662
+Type::write_named_equal(Gogo* gogo, Named_type* name)
 
15663
+{
 
15664
+  Location bloc = Linemap::predeclared_location();
 
15665
+
 
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);
 
15671
+
 
15672
+  Named_type* base_type = name->real_type()->named_type();
 
15673
+  go_assert(base_type != NULL);
 
15674
+
 
15675
+  // Build temporaries with the base type.
 
15676
+  Type* pt = Type::make_pointer_type(base_type);
 
15677
+
 
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);
 
15682
+
 
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);
 
15687
+
 
15688
+  // Compare the values for equality.
 
15689
+  Expression* t1 = Expression::make_temporary_reference(p1, bloc);
 
15690
+  t1 = Expression::make_unary(OPERATOR_MULT, t1, bloc);
 
15691
+
 
15692
+  Expression* t2 = Expression::make_temporary_reference(p2, bloc);
 
15693
+  t2 = Expression::make_unary(OPERATOR_MULT, t2, bloc);
 
15694
+
 
15695
+  Expression* cond = Expression::make_binary(OPERATOR_EQEQ, t1, t2, bloc);
 
15696
+
 
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);
 
15702
+}
 
15703
+
 
15704
 // Return a composite literal for the type descriptor for a plain type
 
15705
 // of kind RUNTIME_TYPE_KIND named NAME.
 
15706
 
 
15707
@@ -2164,26 +2262,9 @@
 
15708
 
 
15709
   ++p;
 
15710
   go_assert(p->is_field_name("typ"));
 
15711
-  if (!only_value_methods && m->is_value_method())
 
15712
-    {
 
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
 
15723
-                                       ? NULL
 
15724
-                                       : mtype->parameters()->copy()),
 
15725
-                                      (mtype->results() == NULL
 
15726
-                                       ? NULL
 
15727
-                                       : mtype->results()->copy()),
 
15728
-                                      mtype->location());
 
15729
-    }
 
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));
 
15734
 
 
15735
   ++p;
 
15736
   go_assert(p->is_field_name("tfn"));
 
15737
@@ -3383,6 +3464,68 @@
 
15738
 // Get the backend representation for a function type.
 
15739
 
 
15740
 Btype*
 
15741
+Function_type::get_backend_fntype(Gogo* gogo)
 
15742
+{
 
15743
+  if (this->fnbtype_ == NULL)
 
15744
+    {
 
15745
+      Backend::Btyped_identifier breceiver;
 
15746
+      if (this->receiver_ != NULL)
 
15747
+        {
 
15748
+          breceiver.name = Gogo::unpack_hidden_name(this->receiver_->name());
 
15749
+
 
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();
 
15757
+        }
 
15758
+
 
15759
+      std::vector<Backend::Btyped_identifier> bparameters;
 
15760
+      if (this->parameters_ != NULL)
 
15761
+        {
 
15762
+          bparameters.resize(this->parameters_->size());
 
15763
+          size_t i = 0;
 
15764
+          for (Typed_identifier_list::const_iterator p =
 
15765
+                   this->parameters_->begin(); p != this->parameters_->end();
 
15766
+               ++p, ++i)
 
15767
+           {
 
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();
 
15771
+            }
 
15772
+          go_assert(i == bparameters.size());
 
15773
+        }
 
15774
+
 
15775
+      std::vector<Backend::Btyped_identifier> bresults;
 
15776
+      if (this->results_ != NULL)
 
15777
+        {
 
15778
+          bresults.resize(this->results_->size());
 
15779
+          size_t i = 0;
 
15780
+          for (Typed_identifier_list::const_iterator p =
 
15781
+                   this->results_->begin(); p != this->results_->end();
 
15782
+               ++p, ++i)
 
15783
+           {
 
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();
 
15787
+            }
 
15788
+          go_assert(i == bresults.size());
 
15789
+        }
 
15790
+
 
15791
+      this->fnbtype_ = gogo->backend()->function_type(breceiver, bparameters,
 
15792
+                                                      bresults,
 
15793
+                                                      this->location());
 
15794
+
 
15795
+    }
 
15796
+
 
15797
+  return this->fnbtype_;
 
15798
+}
 
15799
+
 
15800
+// Get the backend representation for a Go function type.
 
15801
+
 
15802
+Btype*
 
15803
 Function_type::do_get_backend(Gogo* gogo)
 
15804
 {
 
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);
 
15809
 
 
15810
-  Backend::Btyped_identifier breceiver;
 
15811
-  if (this->receiver_ != NULL)
 
15812
-    {
 
15813
-      breceiver.name = Gogo::unpack_hidden_name(this->receiver_->name());
 
15814
-
 
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();
 
15822
-    }
 
15823
-
 
15824
-  std::vector<Backend::Btyped_identifier> bparameters;
 
15825
-  if (this->parameters_ != NULL)
 
15826
-    {
 
15827
-      bparameters.resize(this->parameters_->size());
 
15828
-      size_t i = 0;
 
15829
-      for (Typed_identifier_list::const_iterator p = this->parameters_->begin();
 
15830
-          p != this->parameters_->end();
 
15831
-          ++p, ++i)
 
15832
-       {
 
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();
 
15836
-       }
 
15837
-      go_assert(i == bparameters.size());
 
15838
-    }
 
15839
-
 
15840
-  std::vector<Backend::Btyped_identifier> bresults;
 
15841
-  if (this->results_ != NULL)
 
15842
-    {
 
15843
-      bresults.resize(this->results_->size());
 
15844
-      size_t i = 0;
 
15845
-      for (Typed_identifier_list::const_iterator p = this->results_->begin();
 
15846
-          p != this->results_->end();
 
15847
-          ++p, ++i)
 
15848
-       {
 
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();
 
15852
-       }
 
15853
-      go_assert(i == bresults.size());
 
15854
-    }
 
15855
-
 
15856
-  Btype* fntype = gogo->backend()->function_type(breceiver, bparameters,
 
15857
-                                                bresults, loc);
 
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 @@
 
15866
   return ret;
 
15867
 }
 
15868
 
 
15869
+// Make a copy of a function type with the receiver as the first
 
15870
+// parameter.
 
15871
+
 
15872
+Function_type*
 
15873
+Function_type::copy_with_receiver_as_param(bool want_pointer_receiver) const
 
15874
+{
 
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())
 
15885
+    {
 
15886
+      for (Typed_identifier_list::const_iterator p = orig_params->begin();
 
15887
+          p != orig_params->end();
 
15888
+          ++p)
 
15889
+       new_params->push_back(*p);
 
15890
+    }
 
15891
+  return Type::make_function_type(NULL, new_params, this->results_,
 
15892
+                                 this->location_);
 
15893
+}
 
15894
+
 
15895
 // Make a copy of a function type ignoring any receiver and adding a
 
15896
 // closure parameter.
 
15897
 
 
15898
@@ -4195,7 +4316,8 @@
 
15899
 
 
15900
       // This is a horrible hack caused by the fact that we don't pack
 
15901
       // the names of builtin types.  FIXME.
 
15902
-      if (nt != NULL
 
15903
+      if (!this->is_imported_
 
15904
+         && nt != NULL
 
15905
          && nt->is_builtin()
 
15906
          && nt->name() == Gogo::unpack_hidden_name(name))
 
15907
        return true;
 
15908
@@ -4204,6 +4326,36 @@
 
15909
     }
 
15910
 }
 
15911
 
 
15912
+// Return whether this field is an unexported field named NAME.
 
15913
+
 
15914
+bool
 
15915
+Struct_field::is_unexported_field_name(Gogo* gogo,
 
15916
+                                      const std::string& name) const
 
15917
+{
 
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)
 
15922
+    return true;
 
15923
+
 
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())
 
15928
+    {
 
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();
 
15933
+      if (nt != NULL
 
15934
+         && nt->is_builtin()
 
15935
+         && nt->name() == Gogo::unpack_hidden_name(name))
 
15936
+       return true;
 
15937
+    }
 
15938
+
 
15939
+  return false;
 
15940
+}
 
15941
+
 
15942
 // Return whether this field is an embedded built-in type.
 
15943
 
 
15944
 bool
 
15945
@@ -4264,13 +4416,8 @@
 
15946
        ++p)
 
15947
     {
 
15948
       Type* t = p->type();
 
15949
-      if (t->is_undefined())
 
15950
+      if (p->is_anonymous())
 
15951
        {
 
15952
-         error_at(p->location(), "struct field type is incomplete");
 
15953
-         p->set_type(Type::make_error_type());
 
15954
-       }
 
15955
-      else if (p->is_anonymous())
 
15956
-       {
 
15957
          if (t->named_type() != NULL && t->points_to() != NULL)
 
15958
            {
 
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();
 
15963
           ++pf)
 
15964
-       {
 
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)
 
15969
-           return true;
 
15970
-       }
 
15971
+       if (pf->is_unexported_field_name(gogo, name))
 
15972
+         return true;
 
15973
     }
 
15974
   return false;
 
15975
 }
 
15976
@@ -5250,6 +5392,7 @@
 
15977
          Type* ftype = imp->read_type();
 
15978
 
 
15979
          Struct_field sf(Typed_identifier(name, ftype, imp->location()));
 
15980
+         sf.set_is_imported();
 
15981
 
 
15982
          if (imp->peek_char() == ' ')
 
15983
            {
 
15984
@@ -9022,6 +9165,8 @@
 
15985
                                      fntype->is_varargs(), location);
 
15986
          gogo->finish_function(fntype->location());
 
15987
 
 
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();
 
15992
        }
 
15993
@@ -9289,7 +9434,9 @@
 
15994
       else
 
15995
        {
 
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;
 
16002
          else
 
16003
            {
 
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 @@
 
16009
 
 
16010
 // Get the tree for the code of a function expression.
 
16011
 
 
16012
-tree
 
16013
+Bexpression*
 
16014
 Func_expression::get_code_pointer(Gogo* gogo, Named_object* no, Location loc)
 
16015
 {
 
16016
   Function_type* fntype;
 
16017
@@ -1237,25 +1237,18 @@
 
16018
       error_at(loc,
 
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();
 
16023
     }
 
16024
 
 
16025
-  tree id = no->get_id(gogo);
 
16026
-  if (id == error_mark_node)
 
16027
-    return error_mark_node;
 
16028
-
 
16029
-  tree fndecl;
 
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);
 
16037
   else
 
16038
     go_unreachable();
 
16039
 
 
16040
-  if (fndecl == error_mark_node)
 
16041
-    return error_mark_node;
 
16042
-
 
16043
-  return build_fold_addr_expr_loc(loc.gcc_location(), fndecl);
 
16044
+  return gogo->backend()->function_code_expression(fndecl, loc);
 
16045
 }
 
16046
 
 
16047
 // Get the tree for a function expression.  This is used when we take
 
16048
@@ -1492,8 +1485,10 @@
 
16049
 tree
 
16050
 Func_code_reference_expression::do_get_tree(Translate_context* context)
 
16051
 {
 
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);
 
16058
 }
 
16059
 
 
16060
 // Make a reference to the code of a function.
 
16061
@@ -3055,8 +3050,7 @@
 
16062
   do_lower(Gogo*, Named_object*, Statement_inserter*, int);
 
16063
 
 
16064
   bool
 
16065
-  do_is_constant() const
 
16066
-  { return this->expr_->is_constant(); }
 
16067
+  do_is_constant() const;
 
16068
 
 
16069
   bool
 
16070
   do_numeric_constant_value(Numeric_constant*) const;
 
16071
@@ -3198,6 +3192,27 @@
 
16072
   return this;
 
16073
 }
 
16074
 
 
16075
+// Return whether a type conversion is a constant.
 
16076
+
 
16077
+bool
 
16078
+Type_conversion_expression::do_is_constant() const
 
16079
+{
 
16080
+  if (!this->expr_->is_constant())
 
16081
+    return false;
 
16082
+
 
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())
 
16091
+    return false;
 
16092
+
 
16093
+  return true;
 
16094
+}
 
16095
+
 
16096
 // Return the constant numeric value if there is one.
 
16097
 
 
16098
 bool
 
16099
@@ -5586,6 +5601,15 @@
 
16100
       subcontext.type = NULL;
 
16101
     }
 
16102
 
 
16103
+  if (this->op_ == OPERATOR_ANDAND || this->op_ == OPERATOR_OROR)
 
16104
+    {
 
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;
 
16110
+    }
 
16111
+
 
16112
   // Set the context for the left hand operand.
 
16113
   if (is_shift_op)
 
16114
     {
 
16115
@@ -5967,6 +5991,43 @@
 
16116
                                right);
 
16117
     }
 
16118
 
 
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)
 
16122
+    {
 
16123
+      const char *name;
 
16124
+      tree *pdecl;
 
16125
+      Type* ctype;
 
16126
+      static tree complex64_div_decl;
 
16127
+      static tree complex128_div_decl;
 
16128
+      switch (this->left_->type()->complex_type()->bits())
 
16129
+       {
 
16130
+       case 64:
 
16131
+         name = "__go_complex64_div";
 
16132
+         pdecl = &complex64_div_decl;
 
16133
+         ctype = Type::lookup_complex_type("complex64");
 
16134
+         break;
 
16135
+       case 128:
 
16136
+         name = "__go_complex128_div";
 
16137
+         pdecl = &complex128_div_decl;
 
16138
+         ctype = Type::lookup_complex_type("complex128");
 
16139
+         break;
 
16140
+       default:
 
16141
+         go_unreachable();
 
16142
+       }
 
16143
+      Btype* cbtype = ctype->get_backend(gogo);
 
16144
+      tree ctype_tree = type_to_tree(cbtype);
 
16145
+      return Gogo::call_builtin(pdecl,
 
16146
+                               this->location(),
 
16147
+                               name,
 
16148
+                               2,
 
16149
+                               ctype_tree,
 
16150
+                               ctype_tree,
 
16151
+                               fold_convert_loc(gccloc, ctype_tree, left),
 
16152
+                               type,
 
16153
+                               fold_convert_loc(gccloc, ctype_tree, right));
 
16154
+    }
 
16155
+
 
16156
   tree compute_type = excess_precision_type(type);
 
16157
   if (compute_type != NULL_TREE)
 
16158
     {
 
16159
@@ -7191,6 +7252,15 @@
 
16160
   if (this->code_ == BUILTIN_OFFSETOF)
 
16161
     {
 
16162
       Expression* arg = this->one_arg();
 
16163
+
 
16164
+      if (arg->bound_method_expression() != NULL
 
16165
+         || arg->interface_field_reference_expression() != NULL)
 
16166
+       {
 
16167
+         this->report_error(_("invalid use of method value as argument "
 
16168
+                              "of Offsetof"));
 
16169
+         return this;
 
16170
+       }
 
16171
+
 
16172
       Field_reference_expression* farg = arg->field_reference_expression();
 
16173
       while (farg != NULL)
 
16174
        {
 
16175
@@ -7200,7 +7270,8 @@
 
16176
          // it must not be reached through pointer indirections.
 
16177
          if (farg->expr()->deref() != farg->expr())
 
16178
            {
 
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"));
 
16182
              return this;
 
16183
            }
 
16184
          // Go up until we reach the original base.
 
16185
@@ -7476,7 +7547,7 @@
 
16186
       switch (nc.to_unsigned_long(&v))
 
16187
        {
 
16188
        case Numeric_constant::NC_UL_VALID:
 
16189
-         return true;
 
16190
+         break;
 
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.
 
16198
-         return true;
 
16199
+         break;
 
16200
        }
 
16201
+
 
16202
+      mpz_t val;
 
16203
+      if (!nc.to_int(&val))
 
16204
+       go_unreachable();
 
16205
+      int bits = mpz_sizeinbase(val, 2);
 
16206
+      mpz_clear(val);
 
16207
+      Type* int_type = Type::lookup_integer_type("int");
 
16208
+      if (bits >= int_type->integer_type()->bits())
 
16209
+       {
 
16210
+         error_at(e->location(), "%s argument too large for make",
 
16211
+                  is_length ? "len" : "cap");
 
16212
+         return false;
 
16213
+       }
 
16214
+
 
16215
+      return true;
 
16216
     }
 
16217
 
 
16218
   if (e->type()->integer_type() != NULL)
 
16219
@@ -7595,6 +7681,8 @@
 
16220
 bool
 
16221
 Builtin_call_expression::do_is_constant() const
 
16222
 {
 
16223
+  if (this->is_error_expression())
 
16224
+    return true;
 
16225
   switch (this->code_)
 
16226
     {
 
16227
     case BUILTIN_LEN:
 
16228
@@ -9744,15 +9832,9 @@
 
16229
     }
 
16230
 
 
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 @@
 
16247
   if (func != NULL)
 
16248
     {
 
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));
 
16252
       if (!has_closure)
 
16253
        closure_tree = NULL_TREE;
 
16254
       else
 
16255
@@ -10817,11 +10899,20 @@
 
16256
 void
 
16257
 String_index_expression::do_check_types(Gogo*)
 
16258
 {
 
16259
-  if (this->start_->type()->integer_type() == NULL)
 
16260
+  Numeric_constant nc;
 
16261
+  unsigned long v;
 
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"));
 
16276
 
 
16277
   std::string sval;
 
16278
Index: gcc/recog.c
 
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 @@
 
16283
   return 1;
 
16284
 }
 
16285
 
 
16286
+/* Regno offset to be used in the register search.  */
 
16287
+static int search_ofs;
 
16288
+
 
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)
 
16295
 {
 
16296
-  static int search_ofs;
 
16297
   enum reg_class cl;
 
16298
   HARD_REG_SET live;
 
16299
   df_ref *def_rec;
 
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 (&reg_obstack);
 
16304
+  search_ofs = 0;
 
16305
   live = BITMAP_ALLOC (&reg_obstack);
 
16306
 
 
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)
 
16312
@@ -0,0 +1,67 @@
 
16313
+------------------------------------------------------------------------------
 
16314
+--                                                                          --
 
16315
+--                         GNAT COMPILER COMPONENTS                         --
 
16316
+--                                                                          --
 
16317
+--                              I N D E P S W                               --
 
16318
+--                                                                          --
 
16319
+--                                 B o d y                                  --
 
16320
+--                            (Darwin version)                              --
 
16321
+--                                                                          --
 
16322
+--            Copyright (C) 2013, Free Software Foundation, Inc.            --
 
16323
+--                                                                          --
 
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.                                     --
 
16330
+--                                                                          --
 
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.               --
 
16334
+--                                                                          --
 
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/>.                                          --
 
16339
+--                                                                          --
 
16340
+-- GNAT was originally developed  by the GNAT team at  New York University. --
 
16341
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
 
16342
+--                                                                          --
 
16343
+------------------------------------------------------------------------------
 
16344
+
 
16345
+--  This is the Darwin version
 
16346
+
 
16347
+package body Indepsw is
 
16348
+
 
16349
+   Map_Switch : aliased constant String := "-Wl,-map,";
 
16350
+
 
16351
+   -------------
 
16352
+   -- Convert --
 
16353
+   -------------
 
16354
+
 
16355
+   procedure Convert
 
16356
+     (Switch   : Switch_Kind;
 
16357
+      Argument : String;
 
16358
+      To       : out String_List_Access)
 
16359
+   is
 
16360
+   begin
 
16361
+      case Switch is
 
16362
+         when Map_File =>
 
16363
+            To := new Argument_List'(1 => new String'(Map_Switch & Argument));
 
16364
+      end case;
 
16365
+   end Convert;
 
16366
+
 
16367
+   ------------------
 
16368
+   -- Is_Supported --
 
16369
+   ------------------
 
16370
+
 
16371
+   function Is_Supported (Switch : Switch_Kind) return Boolean is
 
16372
+   begin
 
16373
+      case Switch is
 
16374
+         when Map_File =>
 
16375
+            return True;
 
16376
+      end case;
 
16377
+   end Is_Supported;
 
16378
+
 
16379
+end Indepsw;
 
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)
 
16384
@@ -1,3 +1,36 @@
 
16385
+2014-01-12  Eric Botcazou  <ebotcazou@adacore.com>
 
16386
+
 
16387
+       PR ada/59772
 
16388
+       * gcc-interface/cuintp.c (build_cst_from_int): Use 32-bit integer type
 
16389
+       as intermediate type.
 
16390
+       (UI_To_gnu): Likewise.
 
16391
+
 
16392
+2013-12-12  Eric Botcazou  <ebotcazou@adacore.com>
 
16393
+           Iain Sandoe  <iain@codesourcery.com>
 
16394
+
 
16395
+       PR ada/55946
 
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.
 
16400
+
 
16401
+2013-12-04  Eric Botcazou  <ebotcazou@adacore.com>
 
16402
+
 
16403
+       PR ada/59382
 
16404
+       * indepsw-darwin.adb: New file.
 
16405
+
 
16406
+2013-10-19  Eric Botcazou  <ebotcazou@adacore.com>
 
16407
+
 
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.
 
16412
+
 
16413
+2013-10-19  Eric Botcazou  <ebotcazou@adacore.com>
 
16414
+
 
16415
+       * gcc-interface/utils.c (gnat_set_type_context): New function.
 
16416
+       (gnat_pushdecl): Use it to set the context of the type.
 
16417
+
 
16418
 2013-10-16  Release Manager
 
16419
 
 
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 *);
 
16432
 
 
16433
@@ -532,6 +533,22 @@
 
16434
   free_binding_level = level;
 
16435
 }
 
16436
 
 
16437
+/* Set the context of TYPE and its parallel types (if any) to CONTEXT.  */
 
16438
+
 
16439
+static void
 
16440
+gnat_set_type_context (tree type, tree context)
 
16441
+{
 
16442
+  tree decl = TYPE_STUB_DECL (type);
 
16443
+
 
16444
+  TYPE_CONTEXT (type) = context;
 
16445
+
 
16446
+  while (decl && DECL_PARALLEL_TYPE (decl))
 
16447
+    {
 
16448
+      TYPE_CONTEXT (DECL_PARALLEL_TYPE (decl)) = context;
 
16449
+      decl = TYPE_STUB_DECL (DECL_PARALLEL_TYPE (decl));
 
16450
+    }
 
16451
+}
 
16452
+
 
16453
 /* Record DECL as belonging to the current lexical scope and use GNAT_NODE
 
16454
    for location information and flag propagation.  */
 
16455
 
 
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;
 
16464
            }
 
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))
 
16476
            {
 
16477
              TYPE_NAME (t) = decl;
 
16478
-             TYPE_CONTEXT (t) = DECL_CONTEXT (decl);
 
16479
+             gnat_set_type_context (t, DECL_CONTEXT (decl));
 
16480
            }
 
16481
     }
 
16482
 }
 
16483
@@ -1692,93 +1709,74 @@
 
16484
       TYPE_SIZE_UNIT (new_record_type)
 
16485
        = size_int (TYPE_ALIGN (record_type) / BITS_PER_UNIT);
 
16486
 
 
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))
 
16493
        {
 
16494
          tree field_type = TREE_TYPE (old_field);
 
16495
          tree field_name = DECL_NAME (old_field);
 
16496
-         tree new_field;
 
16497
          tree curpos = bit_position (old_field);
 
16498
+         tree pos, new_field;
 
16499
          bool var = false;
 
16500
          unsigned int align = 0;
 
16501
-         tree pos;
 
16502
 
 
16503
+         /* We're going to do some pattern matching below so remove as many
 
16504
+            conversions as possible.  */
 
16505
+         curpos = remove_conversions (curpos, true);
 
16506
+
 
16507
          /* See how the position was modified from the last position.
 
16508
 
 
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
 
16514
-         again.
 
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.
 
16520
 
 
16521
-         If this is a union, the position can be taken as zero. */
 
16522
-
 
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);
 
16526
-
 
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;
 
16531
          else
 
16532
            pos = compute_related_constant (curpos, last_pos);
 
16533
 
 
16534
-         if (!pos && TREE_CODE (curpos) == MULT_EXPR
 
16535
+         if (!pos
 
16536
+             && TREE_CODE (curpos) == MULT_EXPR
 
16537
              && host_integerp (TREE_OPERAND (curpos, 1), 1))
 
16538
            {
 
16539
              tree offset = TREE_OPERAND (curpos, 0);
 
16540
              align = tree_low_cst (TREE_OPERAND (curpos, 1), 1);
 
16541
-
 
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)
 
16547
-               {
 
16548
-                 unsigned HOST_WIDE_INT mask
 
16549
-                   = TREE_INT_CST_LOW (TREE_OPERAND (offset, 1));
 
16550
-                 unsigned int i;
 
16551
-
 
16552
-                 for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++)
 
16553
-                   {
 
16554
-                     if (mask & 1)
 
16555
-                       break;
 
16556
-                     mask >>= 1;
 
16557
-                     align *= 2;
 
16558
-                   }
 
16559
-               }
 
16560
-
 
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);
 
16566
            }
 
16567
-         else if (!pos && TREE_CODE (curpos) == PLUS_EXPR
 
16568
-                  && TREE_CODE (TREE_OPERAND (curpos, 1)) == INTEGER_CST
 
16569
+         else if (!pos
 
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),
 
16575
-                                    1))
 
16576
+                  && host_integerp
 
16577
+                     (TREE_OPERAND (TREE_OPERAND (curpos, 0), 1), 1))
 
16578
            {
 
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);
 
16582
              align
 
16583
-               = tree_low_cst
 
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);
 
16592
            }
 
16593
-         else if (potential_alignment_gap (prev_old_field, old_field,
 
16594
-                                           pos))
 
16595
+         else if (potential_alignment_gap (prev_old_field, old_field, pos))
 
16596
            {
 
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);
 
16602
            }
 
16603
 
 
16604
          /* If we can't compute a position, set it to zero.
 
16605
 
 
16606
-         ??? We really should abort here, but it's too much work
 
16607
-         to get this correct for all cases.  */
 
16608
-
 
16609
+            ??? We really should abort here, but it's too much work
 
16610
+            to get this correct for all cases.  */
 
16611
          if (!pos)
 
16612
            pos = bitsize_zero_node;
 
16613
 
 
16614
@@ -2553,6 +2551,32 @@
 
16615
   return false;
 
16616
 }
 
16617
 
 
16618
+/* Return VALUE scaled by the biggest power-of-2 factor of EXPR.  */
 
16619
+
 
16620
+static unsigned int
 
16621
+scale_by_factor_of (tree expr, unsigned int value)
 
16622
+{
 
16623
+  expr = remove_conversions (expr, true);
 
16624
+
 
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)
 
16629
+    {
 
16630
+      unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (TREE_OPERAND (expr, 1));
 
16631
+      unsigned int i = 0;
 
16632
+
 
16633
+      while ((mask & 1) == 0 && i < HOST_BITS_PER_WIDE_INT)
 
16634
+       {
 
16635
+         mask >>= 1;
 
16636
+         value *= 2;
 
16637
+         i++;
 
16638
+       }
 
16639
+    }
 
16640
+
 
16641
+  return value;
 
16642
+}
 
16643
+
 
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)"
 
16654
 
 
16655
-GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES)
 
16656
+GCC_LINK=$(CC) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)
 
16657
 
 
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 @@
 
16661
 
 
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) \
 
16665
-                   $(TOOLS_LIBS)
 
16666
+       +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
 
16667
 
 
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) \
 
16670
-                   $(TOOLS_LIBS)
 
16671
+       +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
 
16672
 
 
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)
 
16679
@@ -6,7 +6,7 @@
 
16680
  *                                                                          *
 
16681
  *                          C Implementation File                           *
 
16682
  *                                                                          *
 
16683
- *          Copyright (C) 1992-2012, Free Software Foundation, Inc.         *
 
16684
+ *          Copyright (C) 1992-2014, Free Software Foundation, Inc.         *
 
16685
  *                                                                          *
 
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- *
 
16688
@@ -59,8 +59,8 @@
 
16689
 static tree
 
16690
 build_cst_from_int (tree type, HOST_WIDE_INT low)
 
16691
 {
 
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));
 
16696
   else
 
16697
     return build_int_cst_type (type, low);
 
16698
 }
 
16699
@@ -99,20 +99,13 @@
 
16700
       gcc_assert (Length > 0);
 
16701
 
 
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);
 
16712
 
 
16713
-      if (TREE_CODE (comp_type) != REAL_TYPE
 
16714
-         && TYPE_PRECISION (comp_type)
 
16715
-            < TYPE_PRECISION (long_integer_type_node))
 
16716
-       {
 
16717
-         comp_type = long_integer_type_node;
 
16718
-         gcc_assert (TYPE_PRECISION (comp_type) > 16);
 
16719
-       }
 
16720
-
 
16721
       gnu_base = build_cst_from_int (comp_type, Base);
 
16722
 
 
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
 
16734
 
 
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 @@
 
16742
          return FAILURE;
 
16743
        }
 
16744
 
 
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)
 
16748
        {
 
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)
 
16753
        {
 
16754
          /* If both are functions, check result characteristics.  */
 
16755
-         if (check_result_characteristics (s1, s2, errmsg, err_len)
 
16756
-             == FAILURE)
 
16757
+         if (check_result_characteristics (s1, s2, errmsg, err_len) == FAILURE
 
16758
+             || check_result_characteristics (s2, s1, errmsg, err_len) == FAILURE)
 
16759
            return 0;
 
16760
        }
 
16761
 
 
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));
 
16769
 
 
16770
-  gcc_assert (!optional || (optional && !copyback));
 
16771
   if (optional)
 
16772
     {
 
16773
       tree tmp2;
 
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 @@
 
16779
     return NULL;
 
16780
 
 
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);
 
16785
 
 
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 @@
 
16792
 
 
16793
 
 
16794
 /* Check a derived type that is being extended.  */
 
16795
+
 
16796
 static gfc_symbol*
 
16797
 check_extended_derived_type (char *name)
 
16798
 {
 
16799
@@ -7395,14 +7396,15 @@
 
16800
       return NULL;
 
16801
     }
 
16802
 
 
16803
+  extended = gfc_find_dt_in_generic (extended);
 
16804
+
 
16805
+  /* F08:C428.  */
 
16806
   if (!extended)
 
16807
     {
 
16808
-      gfc_error ("No such symbol in TYPE definition at %C");
 
16809
+      gfc_error ("Symbol '%s' at %C has not been previously defined", name);
 
16810
       return NULL;
 
16811
     }
 
16812
 
 
16813
-  extended = gfc_find_dt_in_generic (extended);
 
16814
-
 
16815
   if (extended->attr.flavor != FL_DERIVED)
 
16816
     {
 
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 @@
 
16823
       break;
 
16824
 
 
16825
     case BT_CHARACTER:
 
16826
-      show_expr (ts->u.cl->length);
 
16827
+      if (ts->u.cl)
 
16828
+       show_expr (ts->u.cl->length);
 
16829
       fprintf(dumpfile, " %d", ts->kind);
 
16830
       break;
 
16831
 
 
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)
 
16836
@@ -1,3 +1,89 @@
 
16837
+2014-01-11  Janus Weil  <janus@gcc.gnu.org>
 
16838
+
 
16839
+       Backport from mainline
 
16840
+       2013-12-29  Janus Weil  <janus@gcc.gnu.org>
 
16841
+
 
16842
+       PR fortran/59612
 
16843
+       PR fortran/57042
 
16844
+       * dump-parse-tree.c (show_typespec): Check for charlen.
 
16845
+       * invoke.texi: Fix documentation of -fdump-fortran-optimized and
 
16846
+       -fdump-parse-tree.
 
16847
+
 
16848
+2014-01-04  Janus Weil  <janus@gcc.gnu.org>
 
16849
+
 
16850
+       Backport from mainline
 
16851
+       2014-01-02  Janus Weil  <janus@gcc.gnu.org>
 
16852
+
 
16853
+       PR fortran/59654
 
16854
+       * resolve.c (resolve_typebound_procedures): No need to create the vtab
 
16855
+       here.
 
16856
+
 
16857
+2013-12-31  Janus Weil  <janus@gcc.gnu.org>
 
16858
+
 
16859
+       Backport from mainline
 
16860
+       2013-12-30  Janus Weil  <janus@gcc.gnu.org>
 
16861
+
 
16862
+       PR fortran/58998
 
16863
+       * resolve.c (resolve_symbol): Check that symbol is not only flavorless
 
16864
+       but also untyped.
 
16865
+
 
16866
+2013-12-18  Janus Weil  <janus@gcc.gnu.org>
 
16867
+
 
16868
+       Backport from mainline
 
16869
+       2013-12-15  Janus Weil  <janus@gcc.gnu.org>
 
16870
+
 
16871
+       PR fortran/59493
 
16872
+       * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS.
 
16873
+
 
16874
+2013-11-30  Paul Thomas  <pault@gcc.gnu.org>
 
16875
+
 
16876
+       Backport from mainline
 
16877
+       2013-11-04  Paul Thomas  <pault@gcc.gnu.org>
 
16878
+
 
16879
+       PR fortran/57445
 
16880
+       * trans-expr.c (gfc_conv_class_to_class): Remove spurious
 
16881
+       assert.
 
16882
+
 
16883
+2013-11-17  Janus Weil  <janus@gcc.gnu.org>
 
16884
+
 
16885
+       Backport from mainline
 
16886
+       2013-11-07  Janus Weil  <janus@gcc.gnu.org>
 
16887
+
 
16888
+       PR fortran/58471
 
16889
+       * primary.c (gfc_expr_attr): Check for result symbol.
 
16890
+
 
16891
+2013-11-16  Janus Weil  <janus@gcc.gnu.org>
 
16892
+
 
16893
+       Backport from mainline
 
16894
+       2013-09-20  Janus Weil  <janus@gcc.gnu.org>
 
16895
+
 
16896
+       PR fortran/58099
 
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.
 
16901
+
 
16902
+2013-11-16  Paul Thomas  <pault@gcc.gnu.org>
 
16903
+
 
16904
+       PR fortran/58771
 
16905
+       * trans-io.c (transfer_expr): If the backend_decl for a derived
 
16906
+       type is missing, build it with gfc_typenode_for_spec.
 
16907
+
 
16908
+2013-11-05  Steven G. Kargl <kargl@gcc.gnu.org>
 
16909
+
 
16910
+       PR fortran/58989
 
16911
+       * check.c (gfc_check_reshape): ensure that shape is a constant
 
16912
+       expression.
 
16913
+
 
16914
+2013-11-02  Janus Weil  <janus@gcc.gnu.org>
 
16915
+
 
16916
+       Backport from mainline
 
16917
+       2013-09-23  Janus Weil  <janus@gcc.gnu.org>
 
16918
+
 
16919
+       PR fortran/58355
 
16920
+       * decl.c (check_extended_derived_type): Prevent segfault, modify error
 
16921
+       message.
 
16922
+
 
16923
 2013-10-16  Release Manager
 
16924
 
 
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 @@
 
16931
          return FAILURE;
 
16932
        }
 
16933
 
 
16934
-      if (!gfc_compare_interfaces (s2, s1, name, 0, 1,
 
16935
-                                  err, sizeof(err), NULL, NULL))
 
16936
-       {
 
16937
-         gfc_error ("Interface mismatch in procedure pointer assignment "
 
16938
-                    "at %L: %s", &rvalue->where, err);
 
16939
-         return FAILURE;
 
16940
-       }
 
16941
-
 
16942
       return SUCCESS;
 
16943
     }
 
16944
 
 
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;
 
16952
 
 
16953
-  /* Make sure the vtab has been generated.  */
 
16954
-  gfc_find_derived_vtab (derived);
 
16955
-
 
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))
 
16966
     {
 
16967
 
 
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 @@
 
16974
 
 
16975
   /* The code to generate the error.  */
 
16976
   gfc_start_block (&block);
 
16977
-  
 
16978
+
 
16979
   arg1 = gfc_build_addr_expr (NULL_TREE, var);
 
16980
-  
 
16981
+
 
16982
   arg2 = build_int_cst (integer_type_node, error_code),
 
16983
-  
 
16984
+
 
16985
   asprintf (&message, "%s", _(msgid));
 
16986
   arg3 = gfc_build_addr_expr (pchar_type_node,
 
16987
                              gfc_build_localized_cstring_const (message));
 
16988
   free (message);
 
16989
-  
 
16990
+
 
16991
   tmp = build_call_expr_loc (input_location,
 
16992
                         gfor_fndecl_generate_error, 3, arg1, arg2, arg3);
 
16993
 
 
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",
 
16997
                               &se.pre);
 
16998
-    
 
16999
+
 
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 @@
 
17004
   if (p->convert)
 
17005
     mask |= set_string (&block, &post_block, var, IOPARM_open_convert,
 
17006
                        p->convert);
 
17007
-                       
 
17008
+
 
17009
   if (p->newunit)
 
17010
     mask |= set_parameter_ref (&block, &post_block, var, IOPARM_open_newunit,
 
17011
                               p->newunit);
 
17012
@@ -1234,7 +1234,7 @@
 
17013
     {
 
17014
       mask |= set_parameter_ref (&block, &post_block, var, IOPARM_inquire_exist,
 
17015
                                 p->exist);
 
17016
-    
 
17017
+
 
17018
       if (p->unit && !p->iostat)
 
17019
        {
 
17020
          p->iostat = create_dummy_iostat ();
 
17021
@@ -1322,7 +1322,7 @@
 
17022
   if (p->pad)
 
17023
     mask |= set_string (&block, &post_block, var, IOPARM_inquire_pad,
 
17024
                        p->pad);
 
17025
-  
 
17026
+
 
17027
   if (p->convert)
 
17028
     mask |= set_string (&block, &post_block, var, IOPARM_inquire_convert,
 
17029
                        p->convert);
 
17030
@@ -1547,7 +1547,7 @@
 
17031
   tree dtype;
 
17032
   tree dt_parm_addr;
 
17033
   tree decl = NULL_TREE;
 
17034
-  int n_dim; 
 
17035
+  int n_dim;
 
17036
   int itype;
 
17037
   int rank = 0;
 
17038
 
 
17039
@@ -2032,7 +2032,7 @@
 
17040
       if (gfc_notification_std (GFC_STD_GNU) != SILENT)
 
17041
        {
 
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);
 
17046
          return;
 
17047
        }
 
17048
@@ -2041,7 +2041,7 @@
 
17049
       ts->kind = ts->u.derived->ts.kind;
 
17050
       ts->f90_type = ts->u.derived->ts.f90_type;
 
17051
     }
 
17052
-  
 
17053
+
 
17054
   kind = ts->kind;
 
17055
   function = NULL;
 
17056
   arg2 = NULL;
 
17057
@@ -2123,7 +2123,7 @@
 
17058
            function = iocall[IOCALL_X_CHARACTER_WIDE];
 
17059
          else
 
17060
            function = iocall[IOCALL_X_CHARACTER_WIDE_WRITE];
 
17061
-           
 
17062
+
 
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,
 
17068
                                      expr);
 
17069
 
 
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);
 
17075
+
 
17076
       for (c = ts->u.derived->components; c; c = c->next)
 
17077
        {
 
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);
 
17085
       return FAILURE;
 
17086
     }
 
17087
-  else if (shape->expr_type == EXPR_ARRAY)
 
17088
+  else if (shape->expr_type == EXPR_ARRAY && gfc_is_constant_expr (shape))
 
17089
     {
 
17090
       gfc_expr *e;
 
17091
       int i, extent;
 
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);
 
17099
 
 
17100
-      if (e->value.function.esym != NULL)
 
17101
+      if (e->value.function.esym && e->value.function.esym->result)
 
17102
        {
 
17103
          gfc_symbol *sym = e->value.function.esym->result;
 
17104
          attr = sym->attr;
 
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};;
 
17112
        esac
 
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}"
 
17121
 
 
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
 
17126
 then
 
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)'
 
17130
 fi
 
17131
 
 
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.])])
 
17136
+
 
17137
+    gcc_GAS_CHECK_FEATURE([LEON instructions],
 
17138
+      gcc_cv_as_sparc_leon,,
 
17139
+      [-Aleon],
 
17140
+      [.text
 
17141
+       .register %g2, #scratch
 
17142
+       .register %g3, #scratch
 
17143
+       .align 4
 
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.])])
 
17149
     ;;
 
17150
 
 
17151
 changequote(,)dnl
 
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])
 
17162
     else
 
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"
 
17171
       else
 
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 @@
 
17177
 
 
17178
       if (MEM_EXPR (in_rtx))
 
17179
        print_mem_expr (outfile, MEM_EXPR (in_rtx));
 
17180
+      else
 
17181
+       fputc (' ', outfile);
 
17182
 
 
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.  */
 
17191
 
 
17192
 static bool
 
17193
-test_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
 
17194
+test_nonssa_use (gimple, tree t, tree, void *data)
 
17195
 {
 
17196
   t = get_base_address (t);
 
17197
 
 
17198
@@ -229,7 +229,7 @@
 
17199
            }
 
17200
          if (gimple_code (stmt) == GIMPLE_LABEL
 
17201
              && test_nonssa_use (stmt, gimple_label_label (stmt),
 
17202
-                                 non_ssa_vars))
 
17203
+                                 NULL_TREE, non_ssa_vars))
 
17204
          {
 
17205
            ok = false;
 
17206
            goto done;
 
17207
@@ -258,7 +258,7 @@
 
17208
              if (virtual_operand_p (gimple_phi_result (stmt)))
 
17209
                continue;
 
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))
 
17213
                {
 
17214
                  ok = false;
 
17215
                  goto done;
 
17216
@@ -670,7 +670,7 @@
 
17217
    Return true when access to T prevents splitting the function.  */
 
17218
 
 
17219
 static bool
 
17220
-mark_nonssa_use (gimple stmt ATTRIBUTE_UNUSED, tree t, void *data)
 
17221
+mark_nonssa_use (gimple, tree t, tree, void *data)
 
17222
 {
 
17223
   t = get_base_address (t);
 
17224
 
 
17225
@@ -830,7 +830,7 @@
 
17226
            if (TREE_CODE (op) == SSA_NAME)
 
17227
              bitmap_set_bit (used_ssa_names, SSA_NAME_VERSION (op));
 
17228
            else
 
17229
-             can_split &= !mark_nonssa_use (stmt, op, non_ssa_vars);
 
17230
+             can_split &= !mark_nonssa_use (stmt, op, op, non_ssa_vars);
 
17231
          }
 
17232
       }
 
17233
   return can_split;
 
17234
Index: gcc/alias.c
 
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);
 
17241
 
 
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])
 
17249
+         {
 
17250
+           new_reg_base_value[i] = static_reg_base_value[i];
 
17251
+           bitmap_set_bit (reg_seen, i);
 
17252
+         }
 
17253
 
 
17254
-        The address expression is VOIDmode for an argument and
 
17255
-        Pmode for other registers.  */
 
17256
-
 
17257
-      memcpy (new_reg_base_value, static_reg_base_value,
 
17258
-             FIRST_PSEUDO_REGISTER * sizeof (rtx));
 
17259
-
 
17260
       /* Walk the insns adding values to the new_reg_base_value array.  */
 
17261
       for (i = 0; i < rpo_cnt; i++)
 
17262
        {
 
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 @@
 
17268
 
 
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))
 
17273
     {
 
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;
 
17281
   tree vectype;
 
17282
   int nunits;
 
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;
 
17287
-  tree access_fn;
 
17288
   tree new_var;
 
17289
   tree new_name;
 
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);
 
17294
   int i;
 
17295
-  bool ok;
 
17296
   int ncopies;
 
17297
   tree expr;
 
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);
 
17302
 
 
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);
 
17308
-  gcc_assert (ok);
 
17309
+  step_expr = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (phi_info);
 
17310
+  gcc_assert (step_expr != NULL_TREE);
 
17311
+
 
17312
   pe = loop_preheader_edge (iv_loop);
 
17313
+  init_expr = PHI_ARG_DEF_FROM_EDGE (iv_phi,
 
17314
+                                    loop_preheader_edge (iv_loop));
 
17315
 
 
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);
 
17325
 
 
17326
+  /* Convert the step to the desired type.  */
 
17327
+  step_expr = force_gimple_operand (fold_convert (TREE_TYPE (vectype),
 
17328
+                                                 step_expr),
 
17329
+                                   &stmts, true, NULL_TREE);
 
17330
+  if (stmts)
 
17331
+    {
 
17332
+      new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
 
17333
+      gcc_assert (!new_bb);
 
17334
+    }
 
17335
+
 
17336
   /* Find the first insertion point in the BB.  */
 
17337
   si = gsi_after_labels (bb);
 
17338
 
 
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)))
 
17349
        {
 
17350
@@ -3211,8 +3214,11 @@
 
17351
 
 
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),
 
17359
+                                                    init_expr),
 
17360
+                                      &stmts, false, new_var);
 
17361
       if (stmts)
 
17362
        {
 
17363
          new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
 
17364
@@ -3224,9 +3230,7 @@
 
17365
       for (i = 1; i < nunits; i++)
 
17366
        {
 
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 @@
 
17380
   basic_block bb;
 
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;
 
17389
 
 
17390
   timevar_push (TV_LRA_COALESCE);
 
17391
 
 
17392
@@ -318,6 +321,34 @@
 
17393
              }
 
17394
          }
 
17395
     }
 
17396
+  /* If we have situation after inheritance pass:
 
17397
+
 
17398
+     r1 <- ...  insn originally setting p1
 
17399
+     i1 <- r1   setting inheritance i1 from reload r1
 
17400
+       ...
 
17401
+     ... <- ... p2 ... dead p2
 
17402
+     ..
 
17403
+     p1 <- i1
 
17404
+     r2 <- i1
 
17405
+     ...<- ... r2 ...
 
17406
+
 
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, &reg_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))
 
17417
+      {
 
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);
 
17422
+      }
 
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;
 
17434
 
 
17435
+/* The VAR_DECLs created for nonlocal VLAs for debug info purposes.  */
 
17436
+static tree nonlocal_vla_vars;
 
17437
+
 
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.  */
 
17440
 
 
17441
@@ -2106,14 +2109,13 @@
 
17442
            ctx = ctx->outer_context;
 
17443
          if (!ctx && !pointer_set_insert (nonlocal_vlas, decl))
 
17444
            {
 
17445
-             tree copy = copy_node (decl), block;
 
17446
+             tree copy = copy_node (decl);
 
17447
 
 
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;
 
17458
            }
 
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);
 
17467
        }
 
17468
@@ -6131,7 +6133,7 @@
 
17469
    region's REDUCTION clause.  */
 
17470
 
 
17471
 static bool
 
17472
-omp_check_private (struct gimplify_omp_ctx *ctx, tree decl)
 
17473
+omp_check_private (struct gimplify_omp_ctx *ctx, tree decl, bool copyprivate)
 
17474
 {
 
17475
   splay_tree_node n;
 
17476
 
 
17477
@@ -6140,8 +6142,11 @@
 
17478
       ctx = ctx->outer_context;
 
17479
       if (ctx == NULL)
 
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.  */
 
17486
+                || (!copyprivate
 
17487
+                    && lang_hooks.decls.omp_privatize_by_reference (decl)));
 
17488
 
 
17489
       n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
 
17490
       if (n != NULL)
 
17491
@@ -6267,12 +6272,36 @@
 
17492
              remove = true;
 
17493
              break;
 
17494
            }
 
17495
+         if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_COPYPRIVATE
 
17496
+             && !remove
 
17497
+             && !omp_check_private (ctx, decl, true))
 
17498
+           {
 
17499
+             remove = true;
 
17500
+             if (is_global_var (decl))
 
17501
+               {
 
17502
+                 if (DECL_THREAD_LOCAL_P (decl))
 
17503
+                   remove = false;
 
17504
+                 else if (DECL_HAS_VALUE_EXPR_P (decl))
 
17505
+                   {
 
17506
+                     tree value = get_base_address (DECL_VALUE_EXPR (decl));
 
17507
+
 
17508
+                     if (value
 
17509
+                         && DECL_P (value)
 
17510
+                         && DECL_THREAD_LOCAL_P (value))
 
17511
+                       remove = false;
 
17512
+                   }
 
17513
+               }
 
17514
+             if (remove)
 
17515
+               error_at (OMP_CLAUSE_LOCATION (c),
 
17516
+                         "copyprivate variable %qE is not threadprivate"
 
17517
+                         " or private in outer context", DECL_NAME (decl));
 
17518
+           }
 
17519
        do_notice:
 
17520
          if (outer_ctx)
 
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))
 
17526
            {
 
17527
              error ("%s variable %qE is private in outer context",
 
17528
                     check_non_private, DECL_NAME (decl));
 
17529
@@ -8261,6 +8290,21 @@
 
17530
 
 
17531
   if (nonlocal_vlas)
 
17532
     {
 
17533
+      if (nonlocal_vla_vars)
 
17534
+       {
 
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
 
17538
+            assumption.  */
 
17539
+         if (gimple_bind_block (outer_bind)
 
17540
+             == DECL_INITIAL (current_function_decl))
 
17541
+           declare_vars (nonlocal_vla_vars, outer_bind, true);
 
17542
+         else
 
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;
 
17547
+       }
 
17548
       pointer_set_destroy (nonlocal_vlas);
 
17549
       nonlocal_vlas = NULL;
 
17550
     }
 
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;
 
17559
-  tree base_type;
 
17560
 
 
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.  */
 
17565
   while (1)
 
17566
     {
 
17567
-      base_type = TREE_TYPE (exp);
 
17568
-
 
17569
       switch (TREE_CODE (exp))
 
17570
        {
 
17571
        case BIT_FIELD_REF:
 
17572
@@ -543,7 +540,38 @@
 
17573
        case VIEW_CONVERT_EXPR:
 
17574
          break;
 
17575
 
 
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)))
 
17581
+           {
 
17582
+             exp = TREE_OPERAND (TMR_BASE (exp), 0);
 
17583
+             bit_offset = double_int_zero;
 
17584
+             maxsize = -1;
 
17585
+             goto done;
 
17586
+           }
 
17587
+         /* Fallthru.  */
 
17588
        case MEM_REF:
 
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
 
17600
+             && maxsize != -1
 
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))))))
 
17606
+           maxsize = -1;
 
17607
+
 
17608
          /* Hand back the decl for MEM[&decl, off].  */
 
17609
          if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR)
 
17610
            {
 
17611
@@ -565,45 +593,24 @@
 
17612
            }
 
17613
          goto done;
 
17614
 
 
17615
-       case TARGET_MEM_REF:
 
17616
-         /* Hand back the decl for MEM[&decl, off].  */
 
17617
-         if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR)
 
17618
-           {
 
17619
-             /* Via the variable index or index2 we can reach the
 
17620
-                whole object.  */
 
17621
-             if (TMR_INDEX (exp) || TMR_INDEX2 (exp))
 
17622
-               {
 
17623
-                 exp = TREE_OPERAND (TMR_BASE (exp), 0);
 
17624
-                 bit_offset = double_int_zero;
 
17625
-                 maxsize = -1;
 
17626
-                 goto done;
 
17627
-               }
 
17628
-             if (integer_zerop (TMR_OFFSET (exp)))
 
17629
-               exp = TREE_OPERAND (TMR_BASE (exp), 0);
 
17630
-             else
 
17631
-               {
 
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 ())
 
17638
-                   {
 
17639
-                     bit_offset = off;
 
17640
-                     exp = TREE_OPERAND (TMR_BASE (exp), 0);
 
17641
-                   }
 
17642
-               }
 
17643
-           }
 
17644
-         goto done;
 
17645
-
 
17646
        default:
 
17647
          goto done;
 
17648
        }
 
17649
 
 
17650
       exp = TREE_OPERAND (exp, 0);
 
17651
     }
 
17652
+
 
17653
+  /* We need to deal with variable arrays ending structures.  */
 
17654
+  if (seen_variable_array_ref
 
17655
+      && maxsize != -1
 
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))))))
 
17661
+    maxsize = -1;
 
17662
+
 
17663
  done:
 
17664
-
 
17665
   if (!bit_offset.fits_shwi ())
 
17666
     {
 
17667
       *poffset = 0;
 
17668
@@ -615,24 +622,6 @@
 
17669
 
 
17670
   hbit_offset = bit_offset.to_shwi ();
 
17671
 
 
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.  */
 
17682
-
 
17683
-  if (seen_variable_array_ref
 
17684
-      && maxsize != -1
 
17685
-      && (!host_integerp (TYPE_SIZE (base_type), 1)
 
17686
-         || (hbit_offset + maxsize
 
17687
-             == (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type)))))
 
17688
-    maxsize = -1;
 
17689
-
 
17690
   /* In case of a decl or constant base object we can do better.  */
 
17691
 
 
17692
   if (DECL_P (exp))
 
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);
 
17703
        }
 
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.  */
 
17712
 
 
17713
 static bool
 
17714
-visit_op (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
17715
+visit_op (gimple, tree op, tree, void *data)
 
17716
 {
 
17717
   bitmap active = (bitmap)data;
 
17718
   op = get_base_address (op);
 
17719
@@ -351,7 +351,7 @@
 
17720
    from bitmap DATA.  */
 
17721
 
 
17722
 static bool
 
17723
-visit_conflict (gimple stmt ATTRIBUTE_UNUSED, tree op, void *data)
 
17724
+visit_conflict (gimple, tree op, tree, void *data)
 
17725
 {
 
17726
   bitmap active = (bitmap)data;
 
17727
   op = get_base_address (op);
 
17728
@@ -385,7 +385,7 @@
 
17729
   edge e;
 
17730
   edge_iterator ei;
 
17731
   gimple_stmt_iterator gsi;
 
17732
-  bool (*visit)(gimple, tree, void *);
 
17733
+  walk_stmt_load_store_addr_fn visit;
 
17734
 
 
17735
   bitmap_clear (work);
 
17736
   FOR_EACH_EDGE (e, ei, bb->preds)
 
17737
@@ -4707,14 +4707,18 @@
 
17738
          if (e->insns.r)
 
17739
            {
 
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))
 
17748
                {
 
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);
 
17755
+                 else
 
17756
+                   emit_insn_after_noloc (insns, parm_birth_insn, e->dest);
 
17757
                }
 
17758
              else
 
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);
 
17768
+
 
17769
+      /* Clear the NEW sets before the next iteration.  We have already
 
17770
+         fully propagated its contents.  */
 
17771
+      if (new_stuff)
 
17772
+       FOR_ALL_BB (bb)
 
17773
+         bitmap_set_free (NEW_SETS (bb));
 
17774
     }
 
17775
   statistics_histogram_event (cfun, "insert iterations", num_iterations);
 
17776
 }
 
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 @@
 
17782
 {
 
17783
   rtx i1, i2, last1, last2, afterlast1, afterlast2;
 
17784
   int ninsns = 0;
 
17785
-  rtx p1;
 
17786
   enum replace_direction dir, last_dir, afterlast_dir;
 
17787
   bool follow_fallthru, did_fallthru;
 
17788
 
 
17789
@@ -1321,8 +1320,9 @@
 
17790
       || (returnjump_p (i2) && !side_effects_p (PATTERN (i2))))
 
17791
     {
 
17792
       last2 = 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)
 
17798
        ninsns++;
 
17799
       i2 = PREV_INSN (i2);
 
17800
     }
 
17801
@@ -1373,8 +1373,8 @@
 
17802
          last1 = i1, last2 = i2;
 
17803
          afterlast_dir = last_dir;
 
17804
          last_dir = 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)
 
17809
            ninsns++;
 
17810
        }
 
17811
 
 
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
 
17816
-   instructions.  */
 
17817
+   instructions.  If STOP_AFTER is zero, count all INSN_P insns, if it is
 
17818
+   non-zero, only count active insns.  */
 
17819
 
 
17820
 int
 
17821
 flow_find_head_matching_sequence (basic_block bb1, basic_block bb2, rtx *f1,
 
17822
@@ -1492,7 +1493,10 @@
 
17823
 
 
17824
          beforelast1 = last1, beforelast2 = last2;
 
17825
          last1 = i1, last2 = i2;
 
17826
-         ninsns++;
 
17827
+         if (!stop_after
 
17828
+             || (GET_CODE (PATTERN (i1)) != USE
 
17829
+                 && GET_CODE (PATTERN (i1)) != CLOBBER))
 
17830
+           ninsns++;
 
17831
        }
 
17832
 
 
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);
 
17840
     }
 
17841
 
 
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))).  */
 
17850
+  if (1
 
17851
+#ifdef WORD_REGISTER_OPERATIONS
 
17852
+      && precision >= BITS_PER_WORD
 
17853
+#endif
 
17854
+      && (GET_CODE (op) == PLUS
 
17855
+         || GET_CODE (op) == MINUS
 
17856
+         || GET_CODE (op) == MULT))
 
17857
     {
 
17858
       rtx op0 = simplify_gen_unary (TRUNCATE, mode, XEXP (op, 0), op_mode);
 
17859
       if (op0)
 
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.  */
 
17866
 
 
17867
 static bool
 
17868
-asm_visit_addr (gimple stmt ATTRIBUTE_UNUSED, tree op,
 
17869
-               void *data ATTRIBUTE_UNUSED)
 
17870
+asm_visit_addr (gimple, tree op, tree, void *)
 
17871
 {
 
17872
   op = get_base_address (op);
 
17873
   if (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);
 
17880
 }
 
17881
 
 
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.  */
 
17889
 
 
17890
-static tree
 
17891
-ref_at_iteration (struct loop *loop, tree ref, int iter)
 
17892
+static tree 
 
17893
+ref_at_iteration (data_reference_p dr, int iter, gimple_seq *stmts)
 
17894
 {
 
17895
-  tree idx, *idx_p, type, val, op0 = NULL_TREE, ret;
 
17896
-  affine_iv iv;
 
17897
-  bool ok;
 
17898
-
 
17899
-  if (handled_component_p (ref))
 
17900
+  tree off = DR_OFFSET (dr);
 
17901
+  tree coff = DR_INIT (dr);
 
17902
+  if (iter == 0)
 
17903
+    ;
 
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)));
 
17907
+  else
 
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,
 
17912
+                                NULL_TREE);
 
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)))
 
17922
     {
 
17923
-      op0 = ref_at_iteration (loop, TREE_OPERAND (ref, 0), iter);
 
17924
-      if (!op0)
 
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);
 
17931
     }
 
17932
-  else if (!INDIRECT_REF_P (ref)
 
17933
-          && TREE_CODE (ref) != MEM_REF)
 
17934
-    return unshare_expr (ref);
 
17935
-
 
17936
-  if (TREE_CODE (ref) == MEM_REF)
 
17937
-    {
 
17938
-      ret = unshare_expr (ref);
 
17939
-      idx = TREE_OPERAND (ref, 0);
 
17940
-      idx_p = &TREE_OPERAND (ret, 0);
 
17941
-    }
 
17942
-  else if (TREE_CODE (ref) == COMPONENT_REF)
 
17943
-    {
 
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;
 
17948
-
 
17949
-      return build3 (COMPONENT_REF, TREE_TYPE (ref), op0,
 
17950
-                    unshare_expr (TREE_OPERAND (ref, 1)),
 
17951
-                    unshare_expr (TREE_OPERAND (ref, 2)));
 
17952
-    }
 
17953
-  else if (TREE_CODE (ref) == ARRAY_REF)
 
17954
-    {
 
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;
 
17962
-
 
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);
 
17968
-    }
 
17969
   else
 
17970
-    return NULL_TREE;
 
17971
-
 
17972
-  ok = simple_iv (loop, loop, idx, &iv, true);
 
17973
-  if (!ok)
 
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);
 
17978
-  else
 
17979
-    {
 
17980
-      type = TREE_TYPE (iv.base);
 
17981
-      if (POINTER_TYPE_P (type))
 
17982
-       {
 
17983
-         val = fold_build2 (MULT_EXPR, sizetype, iv.step,
 
17984
-                            size_int (iter));
 
17985
-         val = fold_build_pointer_plus (iv.base, val);
 
17986
-       }
 
17987
-      else
 
17988
-       {
 
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);
 
17992
-       }
 
17993
-      *idx_p = unshare_expr (val);
 
17994
-    }
 
17995
-
 
17996
-  return ret;
 
17997
+    return fold_build2 (MEM_REF, TREE_TYPE (DR_REF (dr)), addr, alias_ptr);
 
17998
 }
 
17999
 
 
18000
 /* Get the initialization expression for the INDEX-th temporary variable
 
18001
@@ -2068,7 +2021,11 @@
 
18002
 
 
18003
   stmt = find_common_use_stmt (&name1, &name2);
 
18004
 
 
18005
-  if (!stmt)
 
18006
+  if (!stmt
 
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)))
 
18011
     return false;
 
18012
 
 
18013
   acode = gimple_assign_rhs_code (stmt);
 
18014
@@ -2365,14 +2322,10 @@
 
18015
       if (chain->inits[i] != NULL_TREE)
 
18016
        continue;
 
18017
 
 
18018
-      init = ref_at_iteration (loop, DR_REF (dr), (int) i - n);
 
18019
-      if (!init)
 
18020
-       return false;
 
18021
-
 
18022
+      init = ref_at_iteration (dr, (int) i - n, &stmts);
 
18023
       if (!chain->all_always_accessed && tree_could_trap_p (init))
 
18024
        return false;
 
18025
 
 
18026
-      init = force_gimple_operand (init, &stmts, false, NULL_TREE);
 
18027
       if (stmts)
 
18028
        gsi_insert_seq_on_edge_immediate (entry, stmts);
 
18029
 
 
18030
@@ -2449,6 +2402,7 @@
 
18031
   if (!components)
 
18032
     {
 
18033
       free_data_refs (datarefs);
 
18034
+      free_affine_expand_cache (&name_expansions);
 
18035
       return false;
 
18036
     }
 
18037
 
 
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)
 
18044
     {
 
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);
 
18050
 
 
18051
       iv->base = val;
 
18052
       iv->extend = IV_UNKNOWN_EXTEND;
 
18053
@@ -465,8 +467,14 @@
 
18054
       && !iv->first_special)
 
18055
     {
 
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);
 
18063
+                               val,
 
18064
+                               iv->extend == extend
 
18065
+                               ? iv->extend_mode : iv->mode);
 
18066
       iv->base = val;
 
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)
 
18075
     return false;
 
18076
 
 
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;
 
18083
+  if (optimize)
 
18084
+    {
 
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;
 
18091
+      else
 
18092
+       visited_stmts = &parm_ainfo->parm_visited_statements;
 
18093
+      walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
 
18094
+                         visited_stmts);
 
18095
+    }
 
18096
   else
 
18097
-    visited_stmts = &parm_ainfo->parm_visited_statements;
 
18098
-  walk_aliased_vdefs (&refd, gimple_vuse (stmt), mark_modified, &modified,
 
18099
-                     visited_stmts);
 
18100
+    modified = true;
 
18101
+
 
18102
   if (parm_ainfo && modified)
 
18103
     parm_ainfo->parm_modified = true;
 
18104
   return !modified;
 
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,
 
18109
-                         bool *by_ref_p)
 
18110
+                         HOST_WIDE_INT *size_p, bool *by_ref_p)
 
18111
 {
 
18112
   int index;
 
18113
   HOST_WIDE_INT size, max_size;
 
18114
@@ -758,6 +764,8 @@
 
18115
        {
 
18116
          *index_p = index;
 
18117
          *by_ref_p = false;
 
18118
+         if (size_p)
 
18119
+           *size_p = size;
 
18120
          return true;
 
18121
        }
 
18122
       return false;
 
18123
@@ -800,6 +808,8 @@
 
18124
     {
 
18125
       *index_p = index;
 
18126
       *by_ref_p = true;
 
18127
+      if (size_p)
 
18128
+       *size_p = size;
 
18129
       return true;
 
18130
     }
 
18131
   return false;
 
18132
@@ -814,7 +824,7 @@
 
18133
                        bool *by_ref_p)
 
18134
 {
 
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);
 
18138
 }
 
18139
 
 
18140
 /* Given that an actual argument is an SSA_NAME (given in NAME) and is a result
 
18141
@@ -1462,6 +1472,9 @@
 
18142
 {
 
18143
   struct cgraph_edge *cs;
 
18144
 
 
18145
+  if (!optimize)
 
18146
+    return;
 
18147
+
 
18148
   for (cs = node->callees; cs; cs = cs->next_callee)
 
18149
     {
 
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,
 
18155
-                                  &by_ref))
 
18156
+                                  NULL, &by_ref))
 
18157
     {
 
18158
       struct cgraph_edge *cs = ipa_note_param_call (node, index, call);
 
18159
       cs->indirect_info->offset = offset;
 
18160
@@ -1847,8 +1860,7 @@
 
18161
    passed in DATA.  */
 
18162
 
 
18163
 static bool
 
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)
 
18167
 {
 
18168
   struct ipa_node_params *info = (struct ipa_node_params *) data;
 
18169
 
 
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)
 
18173
     {
 
18174
-      struct cgraph_node *first_clone = callee;
 
18175
 
 
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);
 
18180
          return NULL;
 
18181
        }
 
18182
-
 
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);
 
18186
-
 
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.  */
 
18192
-      if (first_clone)
 
18193
-       {
 
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);
 
18198
-         if (dump_file)
 
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);
 
18202
-       }
 
18203
-      else if (dump_file)
 
18204
-       fprintf (dump_file, "ipa-prop: Introduced new external node "
 
18205
-                "(%s/%i).\n",
 
18206
-                xstrdup (cgraph_node_name (callee)), callee->uid);
 
18207
+      callee = cgraph_get_create_real_symbol_node (target);
 
18208
     }
 
18209
   ipa_check_create_node_params ();
 
18210
 
 
18211
@@ -3902,7 +3889,7 @@
 
18212
        struct ipa_agg_replacement_value *v;
 
18213
        gimple stmt = gsi_stmt (gsi);
 
18214
        tree rhs, val, t;
 
18215
-       HOST_WIDE_INT offset;
 
18216
+       HOST_WIDE_INT offset, size;
 
18217
        int index;
 
18218
        bool by_ref, vce;
 
18219
 
 
18220
@@ -3929,13 +3916,15 @@
 
18221
          continue;
 
18222
 
 
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))
 
18226
          continue;
 
18227
        for (v = aggval; v; v = v->next)
 
18228
          if (v->index == index
 
18229
              && v->offset == offset)
 
18230
            break;
 
18231
-       if (!v || v->by_ref != by_ref)
 
18232
+       if (!v
 
18233
+           || v->by_ref != by_ref
 
18234
+           || tree_low_cst (TYPE_SIZE (TREE_TYPE (v->value)), 0) != size)
 
18235
          continue;
 
18236
 
 
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 @@
 
18243
          stats.total++;
 
18244
 
 
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))
 
18253
            {
 
18254
              tree ptr = gimple_call_arg (stmt, 0);
 
18255
-             tree callee2;
 
18256
-             gimple def_stmt;
 
18257
-             if (TREE_CODE (ptr) != SSA_NAME)
 
18258
-               continue;
 
18259
-             def_stmt = SSA_NAME_DEF_STMT (ptr);
 
18260
-             if (!is_gimple_call (def_stmt)
 
18261
-                 || gimple_plf (def_stmt, STMT_NECESSARY))
 
18262
-               continue;
 
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))
 
18268
-               continue;
 
18269
-             gimple_set_plf (stmt, STMT_NECESSARY, false);
 
18270
+             if (TREE_CODE (ptr) == SSA_NAME)
 
18271
+               {
 
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);
 
18276
+               }
 
18277
            }
 
18278
 
 
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 @@
 
18285
 }
 
18286
 
 
18287
 
 
18288
+/* Helper function for find_ssaname_in_stores.  Called via walk_tree to
 
18289
+   find a SSA_NAME DATA somewhere in *TP.  */
 
18290
+
 
18291
+static tree
 
18292
+find_ssaname (tree *tp, int *walk_subtrees, void *data)
 
18293
+{
 
18294
+  tree var = (tree) data;
 
18295
+  if (*tp == var)
 
18296
+    return var;
 
18297
+  else if (IS_TYPE_OR_DECL_P (*tp))
 
18298
+    *walk_subtrees = 0;
 
18299
+  return NULL_TREE;
 
18300
+}
 
18301
+
 
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.  */
 
18305
+
 
18306
+static bool
 
18307
+find_ssaname_in_store (gimple, tree, tree t, void *data)
 
18308
+{
 
18309
+  return walk_tree (&t, find_ssaname, data, NULL) != NULL_TREE;
 
18310
+}
 
18311
+
 
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.  */
 
18314
 
 
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))
 
18322
                {
 
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)))
 
18334
+                   {
 
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
 
18341
+                        case.
 
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)
 
18347
+                       {
 
18348
+                         if (walk_stmt_load_store_ops (stmt, use, NULL,
 
18349
+                                                       find_ssaname_in_store))
 
18350
+                           same_root_var = true;
 
18351
+                       }
 
18352
+                     else
 
18353
+                       same_root_var = true;
 
18354
+                   }
 
18355
                }
 
18356
 
 
18357
              /* Mark expression as replaceable unless stmt is volatile, or the
 
18358
Index: gcc/ira.c
 
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)
 
18364
     run_fast_dce ();
 
18365
 
 
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)
 
18371
+    {
 
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);
 
18376
+    }
 
18377
+
 
18378
   timevar_pop (TV_IRA);
 
18379
 }
 
18380
 
 
18381
Index: gcc/rtl.h
 
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__)
 
18388
 
 
18389
+/* reginfo.c */
 
18390
+extern tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
 
18391
 
 
18392
 
 
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);
 
18406
 
 
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)
 
18412
@@ -64,7 +64,7 @@
 
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];
 
18418
 
 
18419
 /* Bitmaps what object sizes have been computed already.  */
 
18420
 static bitmap computed[4];
 
18421
@@ -493,7 +493,7 @@
 
18422
 
 
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)
 
18427
     {
 
18428
       if (!bitmap_bit_p (computed[object_size_type], SSA_NAME_VERSION (ptr)))
 
18429
        {
 
18430
@@ -501,6 +501,8 @@
 
18431
          bitmap_iterator bi;
 
18432
          unsigned int i;
 
18433
 
 
18434
+         if (num_ssa_names > object_sizes[object_size_type].length ())
 
18435
+           object_sizes[object_size_type].safe_grow (num_ssa_names);
 
18436
          if (dump_file)
 
18437
            {
 
18438
              fprintf (dump_file, "Computing %s %sobject size for ",
 
18439
@@ -1162,12 +1164,12 @@
 
18440
 {
 
18441
   int object_size_type;
 
18442
 
 
18443
-  if (object_sizes[0])
 
18444
+  if (computed[0])
 
18445
     return;
 
18446
 
 
18447
   for (object_size_type = 0; object_size_type <= 3; object_size_type++)
 
18448
     {
 
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);
 
18452
     }
 
18453
 
 
18454
@@ -1184,9 +1186,8 @@
 
18455
 
 
18456
   for (object_size_type = 0; object_size_type <= 3; object_size_type++)
 
18457
     {
 
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;
 
18462
     }
 
18463
 }
 
18464
 
 
18465
@@ -1202,18 +1203,11 @@
 
18466
       gimple_stmt_iterator i;
 
18467
       for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i))
 
18468
        {
 
18469
-         tree callee, result;
 
18470
+         tree result;
 
18471
          gimple call = gsi_stmt (i);
 
18472
-
 
18473
-          if (gimple_code (call) != GIMPLE_CALL)
 
18474
+         if (!gimple_call_builtin_p (call, BUILT_IN_OBJECT_SIZE))
 
18475
            continue;
 
18476
 
 
18477
-         callee = gimple_call_fndecl (call);
 
18478
-         if (!callee
 
18479
-             || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL
 
18480
-             || DECL_FUNCTION_CODE (callee) != BUILT_IN_OBJECT_SIZE)
 
18481
-           continue;
 
18482
-
 
18483
          init_object_sizes ();
 
18484
          result = fold_call_stmt (call, false);
 
18485
          if (!result)
 
18486
@@ -1240,20 +1234,32 @@
 
18487
                continue;
 
18488
            }
 
18489
 
 
18490
+         gcc_assert (TREE_CODE (result) == INTEGER_CST);
 
18491
+
 
18492
          if (dump_file && (dump_flags & TDF_DETAILS))
 
18493
            {
 
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");
 
18499
            }
 
18500
 
 
18501
-         if (!update_call_from_tree (&i, result))
 
18502
-           gcc_unreachable ();
 
18503
+         tree lhs = gimple_call_lhs (call);
 
18504
+         if (!lhs)
 
18505
+           continue;
 
18506
 
 
18507
-         if (dump_file && (dump_flags & TDF_DETAILS))
 
18508
+         /* Propagate into all uses and fold those stmts.  */
 
18509
+         gimple use_stmt;
 
18510
+         imm_use_iterator iter;
 
18511
+         FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
 
18512
            {
 
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));
 
18522
            }
 
18523
        }
 
18524
     }
 
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 @@
 
18530
                return x;
 
18531
            }
 
18532
 
 
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);
 
18545
 
 
18546
          /* Otherwise, keep this operation, but maybe change its operands.
 
18547
@@ -7991,7 +7998,7 @@
 
18548
   if (code == CALL || code == ASM_OPERANDS || code == CLOBBER)
 
18549
     return x;
 
18550
 
 
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
 
18554
      in MODE.  */
 
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),
 
18558
                                            XEXP (x, 1));
 
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),
 
18566
+                                    XEXP (x, 1));
 
18567
        }
 
18568
       break;
 
18569
 
 
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.  */
 
18573
 
 
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),
 
18591
+                                 op0, op1);
 
18592
       break;
 
18593
 
 
18594
     default:
 
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);
 
18604
 
 
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"
 
18613
        ;;
 
18614
 microblaze*-*-rtems*)
 
18615
+       case $target in
 
18616
+               microblazeel-*)
 
18617
+                       tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
 
18618
+                       ;;
 
18619
+               microblaze-*)
 
18620
+                       tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
 
18621
+                       ;;
 
18622
+       esac
 
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 @@
 
18627
          with_cpu=8540
 
18628
       fi       
 
18629
       ;;
 
18630
-    sparc-leon*-*)
 
18631
-      with_cpu=v8;
 
18632
-      ;;
 
18633
     sparc*-*-*)
 
18634
-      with_cpu="`echo ${target} | sed 's/-.*$//'`"
 
18635
+      case ${target} in
 
18636
+       *-leon-*)
 
18637
+         with_cpu=leon
 
18638
+         ;;
 
18639
+       *-leon[3-9]*)
 
18640
+         with_cpu=leon3
 
18641
+         ;;
 
18642
+       *)
 
18643
+         with_cpu="`echo ${target} | sed 's/-.*$//'`"
 
18644
+         ;;
 
18645
+      esac
 
18646
       ;;
 
18647
   esac
 
18648
 
 
18649
@@ -3587,7 +3602,7 @@
 
18650
                        case ${val} in
 
18651
                        "" | sparc | sparcv9 | sparc64 \
 
18652
                        | v7 | cypress \
 
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"
 
18660
                ;;
 
18661
 
 
18662
-       sparc-leon*-*)
 
18663
-               if test x$with_tune = x ; then
 
18664
-                 with_tune=leon;
 
18665
-               fi
 
18666
-
 
18667
-               # The SPARC port checks this value at compile-time.
 
18668
-               target_cpu_default2="TARGET_CPU_$with_cpu"
 
18669
-               ;;
 
18670
-
 
18671
        sparc*-*-*)
 
18672
                # Some standard aliases.
 
18673
                case x$with_cpu in
 
18674
@@ -3765,6 +3771,17 @@
 
18675
                        ;;
 
18676
                esac
 
18677
 
 
18678
+               if test x$with_tune = x ; then
 
18679
+                     case ${target} in
 
18680
+                     *-leon-*)
 
18681
+                         with_tune=leon
 
18682
+                         ;;
 
18683
+                     *-leon[3-9]*)
 
18684
+                         with_tune=leon3
 
18685
+                         ;;
 
18686
+                     esac
 
18687
+               fi
 
18688
+
 
18689
                # The SPARC port checks this value at compile-time.
 
18690
                target_cpu_default2="TARGET_CPU_$with_cpu"
 
18691
                ;;
 
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)
 
18696
@@ -85,7 +85,7 @@
 
18697
 char global_regs[FIRST_PSEUDO_REGISTER];
 
18698
 
 
18699
 /* Declaration for the global register. */
 
18700
-static tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER];
 
18701
+tree global_regs_decl[FIRST_PSEUDO_REGISTER];
 
18702
 
 
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))
 
18712
       found_mode = mode;
 
18713
 
 
18714
-  if (found_mode != VOIDmode)
 
18715
-    return found_mode;
 
18716
-
 
18717
   for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT);
 
18718
        mode != VOIDmode;
 
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))
 
18725
       found_mode = mode;
 
18726
 
 
18727
-  if (found_mode != VOIDmode)
 
18728
-    return found_mode;
 
18729
-
 
18730
   for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_FLOAT);
 
18731
        mode != VOIDmode;
 
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))
 
18738
       found_mode = mode;
 
18739
 
 
18740
-  if (found_mode != VOIDmode)
 
18741
-    return found_mode;
 
18742
-
 
18743
   for (mode = GET_CLASS_NARROWEST_MODE (MODE_VECTOR_INT);
 
18744
        mode != VOIDmode;
 
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))
 
18751
       found_mode = mode;
 
18752
 
 
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 @@
 
18787
 
 
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
 
18796
+   expression.
 
18797
    Returns the results of these callbacks or'ed.  */
 
18798
 
 
18799
 bool
 
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)
 
18807
 {
 
18808
   bool ret = false;
 
18809
   unsigned i;
 
18810
   if (gimple_assign_single_p (stmt))
 
18811
     {
 
18812
-      tree lhs, rhs;
 
18813
+      tree lhs, rhs, arg;
 
18814
       if (visit_store)
 
18815
        {
 
18816
-         lhs = get_base_loadstore (gimple_assign_lhs (stmt));
 
18817
+         arg = gimple_assign_lhs (stmt);
 
18818
+         lhs = get_base_loadstore (arg);
 
18819
          if (lhs)
 
18820
-           ret |= visit_store (stmt, lhs, data);
 
18821
+           ret |= visit_store (stmt, lhs, arg, data);
 
18822
        }
 
18823
-      rhs = gimple_assign_rhs1 (stmt);
 
18824
+      arg = gimple_assign_rhs1 (stmt);
 
18825
+      rhs = arg;
 
18826
       while (handled_component_p (rhs))
 
18827
        rhs = TREE_OPERAND (rhs, 0);
 
18828
       if (visit_addr)
 
18829
        {
 
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,
 
18837
+                              data);
 
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),
 
18841
-                                                  0), data);
 
18842
+                                                  0), arg, data);
 
18843
          else if (TREE_CODE (rhs) == CONSTRUCTOR)
 
18844
            {
 
18845
              unsigned int ix;
 
18846
@@ -3884,23 +3888,23 @@
 
18847
 
 
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),
 
18856
-                                                  0), data);
 
18857
+                                                  0), arg, data);
 
18858
            }
 
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);
 
18864
        }
 
18865
       if (visit_load)
 
18866
        {
 
18867
          rhs = get_base_loadstore (rhs);
 
18868
          if (rhs)
 
18869
-           ret |= visit_load (stmt, rhs, data);
 
18870
+           ret |= visit_load (stmt, rhs, arg, data);
 
18871
        }
 
18872
     }
 
18873
   else if (visit_addr
 
18874
@@ -3913,17 +3917,17 @@
 
18875
          if (op == NULL_TREE)
 
18876
            ;
 
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))
 
18883
            {
 
18884
              if (TREE_CODE (TREE_OPERAND (op, 0)) == ADDR_EXPR)
 
18885
                ret |= visit_addr (stmt, TREE_OPERAND (TREE_OPERAND (op, 0),
 
18886
-                                                      0), data);
 
18887
+                                                      0), op, data);
 
18888
              if (TREE_CODE (TREE_OPERAND (op, 1)) == ADDR_EXPR)
 
18889
                ret |= visit_addr (stmt, TREE_OPERAND (TREE_OPERAND (op, 1),
 
18890
-                                                      0), data);
 
18891
+                                                      0), op, data);
 
18892
            }
 
18893
        }
 
18894
     }
 
18895
@@ -3931,38 +3935,39 @@
 
18896
     {
 
18897
       if (visit_store)
 
18898
        {
 
18899
-         tree lhs = gimple_call_lhs (stmt);
 
18900
-         if (lhs)
 
18901
+         tree arg = gimple_call_lhs (stmt);
 
18902
+         if (arg)
 
18903
            {
 
18904
-             lhs = get_base_loadstore (lhs);
 
18905
+             tree lhs = get_base_loadstore (arg);
 
18906
              if (lhs)
 
18907
-               ret |= visit_store (stmt, lhs, data);
 
18908
+               ret |= visit_store (stmt, lhs, arg, data);
 
18909
            }
 
18910
        }
 
18911
       if (visit_load || visit_addr)
 
18912
        for (i = 0; i < gimple_call_num_args (stmt); ++i)
 
18913
          {
 
18914
-           tree rhs = gimple_call_arg (stmt, i);
 
18915
+           tree arg = gimple_call_arg (stmt, i);
 
18916
            if (visit_addr
 
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)
 
18922
              {
 
18923
-               rhs = get_base_loadstore (rhs);
 
18924
+               tree rhs = get_base_loadstore (arg);
 
18925
                if (rhs)
 
18926
-                 ret |= visit_load (stmt, rhs, data);
 
18927
+                 ret |= visit_load (stmt, rhs, arg, data);
 
18928
              }
 
18929
          }
 
18930
       if (visit_addr
 
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),
 
18934
-                          data);
 
18935
+                          gimple_call_chain (stmt), data);
 
18936
       if (visit_addr
 
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);
 
18943
     }
 
18944
   else if (gimple_code (stmt) == GIMPLE_ASM)
 
18945
     {
 
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);
 
18952
            if (visit_addr)
 
18953
              {
 
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);
 
18961
              }
 
18962
          }
 
18963
       if (visit_load || visit_addr)
 
18964
@@ -3997,14 +4002,14 @@
 
18965
            tree op = TREE_VALUE (link);
 
18966
            if (visit_addr
 
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)
 
18971
              {
 
18972
                op = get_base_loadstore (op);
 
18973
                if (op)
 
18974
                  {
 
18975
                    if (visit_load)
 
18976
-                     ret |= visit_load (stmt, op, data);
 
18977
+                     ret |= visit_load (stmt, op, TREE_VALUE (link), data);
 
18978
                    if (visit_addr)
 
18979
                      {
 
18980
                        constraint = TREE_STRING_POINTER
 
18981
@@ -4013,7 +4018,8 @@
 
18982
                                                0, oconstraints,
 
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),
 
18987
+                                            data);
 
18988
                      }
 
18989
                  }
 
18990
              }
 
18991
@@ -4026,12 +4032,12 @@
 
18992
        {
 
18993
          if (visit_addr
 
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)
 
18998
            {
 
18999
-             op = get_base_loadstore (op);
 
19000
-             if (op)
 
19001
-               ret |= visit_load (stmt, op, data);
 
19002
+             tree base = get_base_loadstore (op);
 
19003
+             if (base)
 
19004
+               ret |= visit_load (stmt, base, op, data);
 
19005
            }
 
19006
        }
 
19007
     }
 
19008
@@ -4042,7 +4048,7 @@
 
19009
        {
 
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);
 
19014
        }
 
19015
     }
 
19016
   else if (visit_addr
 
19017
@@ -4050,7 +4056,7 @@
 
19018
     {
 
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);
 
19023
     }
 
19024
 
 
19025
   return ret;
 
19026
@@ -4061,8 +4067,8 @@
 
19027
 
 
19028
 bool
 
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)
 
19034
 {
 
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.  */
 
19039
 
 
19040
 static bool
 
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)
 
19044
 {
 
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 *,
 
19054
                                   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);
 
19080
 
 
19081
 /* Various helpers.  */
 
19082
 static inline bool stmt_starts_bb_p (gimple, gimple);
 
19083
@@ -3513,11 +3512,10 @@
 
19084
     case PLUS_EXPR:
 
19085
     case MINUS_EXPR:
 
19086
       {
 
19087
-       /* We use regular PLUS_EXPR and MINUS_EXPR for vectors.
 
19088
-          ???  This just makes the checker happy and may not be what is
 
19089
-          intended.  */
 
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)
 
19096
          {
 
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");
 
19101
                return true;
 
19102
              }
 
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))
 
19109
-             {
 
19110
-               tree tem = rhs1_type;
 
19111
-               rhs1_type = rhs2_type;
 
19112
-               rhs2_type = tem;
 
19113
-             }
 
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);
 
19118
          }
 
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))
 
19125
          {
 
19126
            error ("invalid (pointer) operands to plus/minus");
 
19127
            return true;
 
19128
@@ -3552,7 +3541,6 @@
 
19129
 
 
19130
     case POINTER_PLUS_EXPR:
 
19131
       {
 
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 @@
 
19137
 
 
19138
 /* Split all critical edges.  */
 
19139
 
 
19140
-static unsigned int
 
19141
+unsigned int
 
19142
 split_critical_edges (void)
 
19143
 {
 
19144
   basic_block bb;
 
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 @@
 
19170
 
 
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,
 
19174
-                                 GSI_SAME_STMT);
 
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
 
19177
+     it.  */
 
19178
+  if (op == range->exp)
 
19179
+    tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, false,
 
19180
+                                   GSI_SAME_STMT);
 
19181
+  else
 
19182
+    tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, true,
 
19183
+                                   GSI_SAME_STMT);
 
19184
 
 
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)
 
19194
 
 
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;
 
19198
+
 
19199
+/* Return the argument of the given hotpatch attribute or the default value if
 
19200
+   no argument is present.  */
 
19201
+
 
19202
+static inline int
 
19203
+get_hotpatch_attribute (tree hotpatch_attr)
 
19204
+{
 
19205
+  const_tree args;
 
19206
+
 
19207
+  args = TREE_VALUE (hotpatch_attr);
 
19208
+
 
19209
+  return (args) ?
 
19210
+    TREE_INT_CST_LOW (TREE_VALUE (args)):
 
19211
+    s390_hotpatch_trampoline_halfwords_default;
 
19212
+}
 
19213
+
 
19214
+/* Check whether the hotpatch attribute is applied to a function and, if it has
 
19215
+   an argument, the argument is valid.  */
 
19216
+
 
19217
+static tree
 
19218
+s390_handle_hotpatch_attribute (tree *node, tree name, tree args,
 
19219
+                               int flags ATTRIBUTE_UNUSED, bool *no_add_attrs)
 
19220
+{
 
19221
+  if (TREE_CODE (*node) != FUNCTION_DECL)
 
19222
+    {
 
19223
+      warning (OPT_Wattributes, "%qE attribute only applies to functions",
 
19224
+              name);
 
19225
+      *no_add_attrs = true;
 
19226
+    }
 
19227
+  else if (args)
 
19228
+    {
 
19229
+      tree expr = TREE_VALUE (args);
 
19230
+
 
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)
 
19236
+       {
 
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;
 
19241
+       }
 
19242
+    }
 
19243
+
 
19244
+  return NULL_TREE;
 
19245
+}
 
19246
+
 
19247
+static const struct attribute_spec s390_attribute_table[] = {
 
19248
+  { "hotpatch", 0, 1, true, false, false, s390_handle_hotpatch_attribute, false
 
19249
+  },
 
19250
+  /* End element.  */
 
19251
+  { NULL,        0, 0, false, false, false, NULL, false }
 
19252
+};
 
19253
+
 
19254
 /* Return the alignment for LABEL.  We default to the -falign-labels
 
19255
    value except for the literal pool base label.  */
 
19256
 int
 
19257
@@ -883,7 +942,8 @@
 
19258
        {
 
19259
          /* For CCRAWmode put the required cc mask into the second
 
19260
             operand.  */
 
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);
 
19266
          *code = new_code;
 
19267
@@ -1594,6 +1654,46 @@
 
19268
 static void
 
19269
 s390_option_override (void)
 
19270
 {
 
19271
+  unsigned int i;
 
19272
+  cl_deferred_option *opt;
 
19273
+  vec<cl_deferred_option> *v =
 
19274
+    (vec<cl_deferred_option> *) s390_deferred_options;
 
19275
+
 
19276
+  if (v)
 
19277
+    FOR_EACH_VEC_ELT (*v, i, opt)
 
19278
+      {
 
19279
+       switch (opt->opt_index)
 
19280
+         {
 
19281
+         case OPT_mhotpatch:
 
19282
+           s390_hotpatch_trampoline_halfwords = (opt->value) ?
 
19283
+             s390_hotpatch_trampoline_halfwords_default : -1;
 
19284
+           break;
 
19285
+         case OPT_mhotpatch_:
 
19286
+           {
 
19287
+             int val;
 
19288
+
 
19289
+             val = integral_argument (opt->arg);
 
19290
+             if (val == -1)
 
19291
+               {
 
19292
+                 /* argument is not a plain number */
 
19293
+                 error ("argument to %qs should be a non-negative integer",
 
19294
+                        "-mhotpatch=");
 
19295
+                 break;
 
19296
+               }
 
19297
+             else if (val > s390_hotpatch_trampoline_halfwords_max)
 
19298
+               {
 
19299
+                 error ("argument to %qs is too large (max. %d)",
 
19300
+                        "-mhotpatch=", s390_hotpatch_trampoline_halfwords_max);
 
19301
+                 break;
 
19302
+               }
 
19303
+             s390_hotpatch_trampoline_halfwords = val;
 
19304
+             break;
 
19305
+           }
 
19306
+         default:
 
19307
+           gcc_unreachable ();
 
19308
+         }
 
19309
+      }
 
19310
+
 
19311
   /* Set up function hooks.  */
 
19312
   init_machine_status = s390_init_machine_status;
 
19313
 
 
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.  */
 
19317
       case CONST:
 
19318
-       /* A larl operand with odd addend will get fixed via secondary
 
19319
-          reload.  So don't request it to be pushed into literal
 
19320
-          pool.  */
 
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).  
 
19324
+
 
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)
 
19335
          {
 
19336
-           if (reg_class_subset_p (ADDR_REGS, rclass))
 
19337
+           if (flag_pic && reg_class_subset_p (ADDR_REGS, rclass))
 
19338
              return ADDR_REGS;
 
19339
            else
 
19340
              return NO_REGS;
 
19341
@@ -5311,6 +5418,102 @@
 
19342
   gcc_unreachable ();
 
19343
 }
 
19344
 
 
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
 
19347
+   in halfwords. */
 
19348
+
 
19349
+static int s390_function_num_hotpatch_trampoline_halfwords (tree decl,
 
19350
+                                                           bool do_warn)
 
19351
+{
 
19352
+  tree attr;
 
19353
+
 
19354
+  if (DECL_DECLARED_INLINE_P (decl)
 
19355
+      || DECL_ARTIFICIAL (decl)
 
19356
+      || MAIN_NAME_P (DECL_NAME (decl)))
 
19357
+    {
 
19358
+      /* - Explicitly inlined functions cannot be hotpatched.
 
19359
+        - Artificial functions need not be hotpatched.
 
19360
+        - Making the main function hotpatchable is useless. */
 
19361
+      return -1;
 
19362
+    }
 
19363
+  attr = lookup_attribute ("hotpatch", DECL_ATTRIBUTES (decl));
 
19364
+  if (attr || s390_hotpatch_trampoline_halfwords >= 0)
 
19365
+    {
 
19366
+      if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (decl)))
 
19367
+       {
 
19368
+         if (do_warn)
 
19369
+           warning (OPT_Wattributes, "function %qE with the %qs attribute"
 
19370
+                    " is not hotpatchable", DECL_NAME (decl), "always_inline");
 
19371
+         return -1;
 
19372
+       }
 
19373
+      else
 
19374
+       {
 
19375
+         return (attr) ?
 
19376
+           get_hotpatch_attribute (attr) : s390_hotpatch_trampoline_halfwords;
 
19377
+       }
 
19378
+    }
 
19379
+
 
19380
+  return -1;
 
19381
+}
 
19382
+
 
19383
+/* Hook to determine if one function can safely inline another.  */
 
19384
+
 
19385
+static bool
 
19386
+s390_can_inline_p (tree caller, tree callee)
 
19387
+{
 
19388
+  if (s390_function_num_hotpatch_trampoline_halfwords (callee, false) >= 0)
 
19389
+    return false;
 
19390
+
 
19391
+  return default_target_can_inline_p (caller, callee);
 
19392
+}
 
19393
+
 
19394
+/* Write the extra assembler code needed to declare a function properly.  */
 
19395
+
 
19396
+void
 
19397
+s390_asm_output_function_label (FILE *asm_out_file, const char *fname,
 
19398
+                               tree decl)
 
19399
+{
 
19400
+  int hotpatch_trampoline_halfwords = -1;
 
19401
+
 
19402
+  if (decl)
 
19403
+    {
 
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)
 
19408
+       {
 
19409
+         warning_at (0, DECL_SOURCE_LOCATION (decl),
 
19410
+                     "hotpatch_prologue is not compatible with nested"
 
19411
+                     " function");
 
19412
+         hotpatch_trampoline_halfwords = -1;
 
19413
+       }
 
19414
+    }
 
19415
+
 
19416
+  if (hotpatch_trampoline_halfwords > 0)
 
19417
+    {
 
19418
+      int i;
 
19419
+
 
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.  */
 
19431
+    }
 
19432
+
 
19433
+  ASM_OUTPUT_LABEL (asm_out_file, fname);
 
19434
+
 
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");
 
19439
+}
 
19440
+
 
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 @@
 
19445
     {
 
19446
       bb = BASIC_BLOCK (bb_index);
 
19447
 
 
19448
+      if (!bb)
 
19449
+       continue;
 
19450
+
 
19451
       FOR_BB_INSNS (bb, insn)
 
19452
        {
 
19453
          rtx ite, cc, pat, target;
 
19454
@@ -7959,7 +8165,10 @@
 
19455
   if (!result)
 
19456
     return;
 
19457
 
 
19458
-  PATTERN (tbegin_insn) = XVECEXP (PATTERN (tbegin_insn), 0, 0);
 
19459
+  PATTERN (tbegin_insn) = gen_rtx_PARALLEL (VOIDmode,
 
19460
+                           gen_rtvec (2,
 
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);
 
19465
 
 
19466
@@ -9568,61 +9777,47 @@
 
19467
 void
 
19468
 s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
 
19469
 {
 
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;
 
19478
-  rtx jump;
 
19479
-  rtx very_unlikely = GEN_INT (REG_BR_PROB_BASE / 100 - 1);
 
19480
 
 
19481
   if (retry != NULL_RTX)
 
19482
     {
 
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);
 
19488
     }
 
19489
 
 
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));
 
19494
   else
 
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),
 
19498
+                                    tdb));
 
19499
 
 
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)));
 
19504
-
 
19505
-  JUMP_LABEL (jump) = abort_label;
 
19506
-  LABEL_NUSES (abort_label) = 1;
 
19507
-  add_reg_note (jump, REG_BR_PROB, very_unlikely);
 
19508
-
 
19509
-  /* Initialize CC return value.  */
 
19510
-  emit_move_insn (dest, const0_rtx);
 
19511
-
 
19512
-  s390_emit_jump (leave_label, NULL_RTX);
 
19513
-  LABEL_NUSES (leave_label) = 1;
 
19514
-  emit_barrier ();
 
19515
-
 
19516
-  /* Abort handler code.  */
 
19517
-
 
19518
-  emit_label (abort_label);
 
19519
+  emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
 
19520
+                                       gen_rtvec (1, gen_rtx_REG (CCRAWmode,
 
19521
+                                                                  CC_REGNUM)),
 
19522
+                                       UNSPEC_CC_TO_INT));
 
19523
   if (retry != NULL_RTX)
 
19524
     {
 
19525
+      const int CC0 = 1 << 3;
 
19526
+      const int CC1 = 1 << 2;
 
19527
+      const int CC3 = 1 << 0;
 
19528
+      rtx jump;
 
19529
       rtx count = gen_reg_rtx (SImode);
 
19530
+      rtx leave_label = gen_label_rtx ();
 
19531
+
 
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;
 
19541
 
 
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 @@
 
19549
                                              retry_reg));
 
19550
       JUMP_LABEL (jump) = retry_label;
 
19551
       LABEL_NUSES (retry_label) = 1;
 
19552
+      emit_label (leave_label);
 
19553
     }
 
19554
-
 
19555
-  emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
 
19556
-                                       gen_rtvec (1, gen_rtx_REG (CCRAWmode,
 
19557
-                                                                  CC_REGNUM)),
 
19558
-                                       UNSPEC_CC_TO_INT));
 
19559
-  emit_label (leave_label);
 
19560
 }
 
19561
 
 
19562
 /* Builtins.  */
 
19563
@@ -9674,6 +9864,9 @@
 
19564
 s390_init_builtins (void)
 
19565
 {
 
19566
   tree ftype, uint64_type;
 
19567
+  tree returns_twice_attr = tree_cons (get_identifier ("returns_twice"),
 
19568
+                                      NULL, NULL);
 
19569
+  tree noreturn_attr = tree_cons (get_identifier ("noreturn"), NULL, NULL);
 
19570
 
 
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,
 
19575
                                    NULL_TREE);
 
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);
 
19581
 
 
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);
 
19591
 
 
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,
 
19597
                        BUILT_IN_MD,
 
19598
-                       NULL, NULL_TREE);
 
19599
+                       NULL, returns_twice_attr);
 
19600
   add_builtin_function ("__builtin_tbegin_retry_nofloat", ftype,
 
19601
                        S390_BUILTIN_TBEGIN_RETRY_NOFLOAT,
 
19602
                        BUILT_IN_MD,
 
19603
-                       NULL, NULL_TREE);
 
19604
+                       NULL, returns_twice_attr);
 
19605
 
 
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
 
19611
 
 
19612
+#undef TARGET_ATTRIBUTE_TABLE
 
19613
+#define TARGET_ATTRIBUTE_TABLE s390_attribute_table
 
19614
+
 
19615
+#undef TARGET_CAN_INLINE_P
 
19616
+#define TARGET_CAN_INLINE_P s390_can_inline_p
 
19617
+
 
19618
 struct gcc_target targetm = TARGET_INITIALIZER;
 
19619
 
 
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
 
19627
 
 
19628
 /* Allocation boundary (in *bits*) for the code of a function.  */
 
19629
-#define FUNCTION_BOUNDARY 32
 
19630
+#define FUNCTION_BOUNDARY 64
 
19631
 
 
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));                                                        \
 
19636
 } while (0)
 
19637
 
 
19638
+#undef ASM_OUTPUT_FUNCTION_LABEL
 
19639
+#define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL) \
 
19640
+  s390_asm_output_function_label (FILE, NAME, DECL)
 
19641
 
 
19642
 /* Miscellaneous parameters.  */
 
19643
 
 
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 @@
 
19649
 
 
19650
    ; Transactional Execution support
 
19651
    UNSPECV_TBEGIN
 
19652
+   UNSPECV_TBEGIN_TDB
 
19653
    UNSPECV_TBEGINC
 
19654
    UNSPECV_TEND
 
19655
    UNSPECV_TABORT
 
19656
@@ -9896,9 +9897,10 @@
 
19657
 
 
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")]
 
19663
                               UNSPECV_TBEGIN))
 
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"
 
19674
-  "tbegin\t%0,%x1"
 
19675
+  "TARGET_HTM && INTVAL (operands[0]) >= 0 && INTVAL (operands[0]) <= 0xffff"
 
19676
+  "tbegin\t%1,%x0"
 
19677
   [(set_attr "op_type" "SIL")])
 
19678
 
 
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"
 
19686
-  "tbegin\t%0,%x1"
 
19687
+       (unspec_volatile:CCRAW [(match_operand 0 "const_int_operand" "D")]
 
19688
+                              UNSPECV_TBEGIN))
 
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"
 
19692
+  "tbegin\t%1,%x0"
 
19693
   [(set_attr "op_type" "SIL")])
 
19694
 
 
19695
 
 
19696
@@ -10012,15 +10015,12 @@
 
19697
 ; Transaction perform processor assist
 
19698
 
 
19699
 (define_expand "tx_assist"
 
19700
-  [(set (match_dup 1) (const_int 0))
 
19701
-   (unspec_volatile [(match_operand:SI 0 "register_operand" "")
 
19702
-                    (match_dup 1)
 
19703
+  [(unspec_volatile [(match_operand:SI 0 "register_operand" "")
 
19704
+                    (reg:SI GPR0_REGNUM)
 
19705
                     (const_int 1)]
 
19706
                    UNSPECV_PPA)]
 
19707
   "TARGET_HTM"
 
19708
-{
 
19709
-  operands[1] = gen_reg_rtx (SImode);
 
19710
-})
 
19711
+  "")
 
19712
 
 
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")]
 
19717
                    UNSPECV_PPA)]
 
19718
   "TARGET_HTM && INTVAL (operands[2]) < 16"
 
19719
-  "ppa\t%0,%1,1"
 
19720
+  "ppa\t%0,%1,%2"
 
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)
 
19726
@@ -96,6 +96,14 @@
 
19727
 Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT)
 
19728
 Enable hardware floating point
 
19729
 
 
19730
+mhotpatch
 
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.
 
19733
+
 
19734
+mhotpatch=
 
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.
 
19737
+
 
19738
 mlong-double-128
 
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.  */
 
19748
 
 
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
 
19755
+   setjmp.  */
 
19756
+
 
19757
+long
 
19758
 __TM_simple_begin ()
 
19759
 {
 
19760
   return __builtin_tbegin_nofloat (0);
 
19761
 }
 
19762
 
 
19763
-extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 
19764
+long
 
19765
 __TM_begin (void* const tdb)
 
19766
 {
 
19767
   return __builtin_tbegin_nofloat (tdb);
 
19768
@@ -78,7 +85,7 @@
 
19769
   if (depth != 0)
 
19770
     return depth;
 
19771
 
 
19772
-  if (tdb->format == 0)
 
19773
+  if (tdb->format != 1)
 
19774
     return 0;
 
19775
   return tdb->nesting_depth;
 
19776
 }
 
19777
@@ -90,7 +97,7 @@
 
19778
 {
 
19779
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19780
 
 
19781
-  if (tdb->format == 0)
 
19782
+  if (tdb->format != 1)
 
19783
     return 0;
 
19784
 
 
19785
   return !!(tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE);
 
19786
@@ -101,7 +108,7 @@
 
19787
 {
 
19788
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19789
 
 
19790
-  if (tdb->format == 0)
 
19791
+  if (tdb->format != 1)
 
19792
     return 0;
 
19793
 
 
19794
   if (tdb->abort_code >= _HTM_FIRST_USER_ABORT_CODE)
 
19795
@@ -117,7 +124,7 @@
 
19796
 {
 
19797
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19798
 
 
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 */));
 
19803
 }
 
19804
@@ -127,7 +134,7 @@
 
19805
 {
 
19806
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19807
 
 
19808
-  return (tdb->format == 0
 
19809
+  return (tdb->format == 1
 
19810
          && (tdb->abort_code == 7 /* fetch overflow */
 
19811
              || tdb->abort_code == 8 /* store overflow */));
 
19812
 }
 
19813
@@ -137,7 +144,7 @@
 
19814
 {
 
19815
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19816
 
 
19817
-  return tdb->format == 0 && tdb->abort_code == 13; /* depth exceeded */
 
19818
+  return tdb->format == 1 && tdb->abort_code == 13; /* depth exceeded */
 
19819
 }
 
19820
 
 
19821
 extern __inline long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 
19822
@@ -145,7 +152,7 @@
 
19823
 {
 
19824
   struct __htm_tdb *tdb = (struct __htm_tdb*)tdb_ptr;
 
19825
 
 
19826
-  return (tdb->format == 0
 
19827
+  return (tdb->format == 1
 
19828
          && (tdb->abort_code == 9 /* fetch conflict */
 
19829
              || tdb->abort_code == 10 /* store conflict */));
 
19830
 }
 
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);
 
19840
 
 
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)
 
19846
@@ -17,6 +17,6 @@
 
19847
 # <http://www.gnu.org/licenses/>.
 
19848
 #
 
19849
 
 
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.
 
19861
 
 
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.
 
19865
 (define_attr "cpu"
 
19866
   "v7,
 
19867
    cypress,
 
19868
@@ -214,6 +214,7 @@
 
19869
    supersparc,
 
19870
    hypersparc,
 
19871
    leon,
 
19872
+   leon3,
 
19873
    sparclite,
 
19874
    f930,
 
19875
    f934,
 
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")])
 
19888
 
 
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")))]
 
19894
   "TARGET_FPU"
 
19895
+  "")
 
19896
+
 
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")])
 
19905
 
 
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")])
 
19915
+
 
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")))]
 
19920
-  "TARGET_FPU"
 
19921
+  "TARGET_FPU && !sparc_fix_ut699"
 
19922
   "fdivs\t%1, %2, %0"
 
19923
   [(set_attr "type" "fpdivs")])
 
19924
 
 
19925
@@ -5791,18 +5809,33 @@
 
19926
   "fsqrtq\t%1, %0"
 
19927
   [(set_attr "type" "fpsqrtd")])
 
19928
 
 
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")))]
 
19933
   "TARGET_FPU"
 
19934
+  "")
 
19935
+
 
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"
 
19940
   "fsqrtd\t%1, %0"
 
19941
   [(set_attr "type" "fpsqrtd")
 
19942
    (set_attr "fptype" "double")])
 
19943
 
 
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")])
 
19952
+
 
19953
 (define_insn "sqrtsf2"
 
19954
   [(set (match_operand:SF 0 "register_operand" "=f")
 
19955
        (sqrt:SF (match_operand:SF 1 "register_operand" "f")))]
 
19956
-  "TARGET_FPU"
 
19957
+  "TARGET_FPU && !sparc_fix_ut699"
 
19958
   "fsqrts\t%1, %0"
 
19959
   [(set_attr "type" "fpsqrts")])
 
19960
 
 
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)
 
19965
@@ -23,7 +23,7 @@
 
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) \
 
19972
   gt-sparc.h
 
19973
 
 
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)
 
19980
 
 
19981
 EnumValue
 
19982
+Enum(sparc_processor_type) String(leon3) Value(PROCESSOR_LEON3)
 
19983
+
 
19984
+EnumValue
 
19985
 Enum(sparc_processor_type) String(sparclite) Value(PROCESSOR_SPARCLITE)
 
19986
 
 
19987
 EnumValue
 
19988
@@ -201,9 +204,19 @@
 
19989
 Enable workaround for single erratum of AT697F processor
 
19990
 (corresponding to erratum #13 of AT697E processor)
 
19991
 
 
19992
+mfix-ut699
 
19993
+Target Report RejectNegative Var(sparc_fix_ut699)
 
19994
+Enable workarounds for the errata of the UT699 processor
 
19995
+
 
19996
 Mask(LONG_DOUBLE_128)
 
19997
 ;; Use 128-bit long double
 
19998
 
 
19999
+Mask(LEON)
 
20000
+;; Generate code for LEON
 
20001
+
 
20002
+Mask(LEON3)
 
20003
+;; Generate code for LEON3
 
20004
+
 
20005
 Mask(SPARCLITE)
 
20006
 ;; Generate code for SPARClite
 
20007
 
 
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)"
 
20019
 {
 
20020
   sparc_expand_compare_and_swap (operands);
 
20021
   DONE;
 
20022
@@ -176,7 +177,7 @@
 
20023
             [(match_operand:I48MODE 2 "register_operand" "")
 
20024
              (match_operand:I48MODE 3 "register_operand" "")]
 
20025
             UNSPECV_CAS))])]
 
20026
-  "TARGET_V9"
 
20027
+  "TARGET_V9 || TARGET_LEON3"
 
20028
   "")
 
20029
 
 
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")]
 
20034
          UNSPECV_CAS))]
 
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")])
 
20039
 
 
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"
 
20046
 {
 
20047
   enum memmodel model = (enum memmodel) INTVAL (operands[3]);
 
20048
 
 
20049
@@ -236,7 +237,7 @@
 
20050
                            UNSPECV_SWAP))
 
20051
    (set (match_dup 1)
 
20052
        (match_operand:SI 2 "register_operand" "0"))]
 
20053
-  "TARGET_V8 || TARGET_V9"
 
20054
+  "(TARGET_V8 || TARGET_V9) && !sparc_fix_ut699"
 
20055
   "swap\t%1, %0"
 
20056
   [(set_attr "type" "multi")])
 
20057
 
 
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" "")]
 
20062
-  ""
 
20063
+  "!sparc_fix_ut699"
 
20064
 {
 
20065
   enum memmodel model = (enum memmodel) INTVAL (operands[2]);
 
20066
   rtx ret;
 
20067
@@ -268,6 +269,6 @@
 
20068
        (unspec_volatile:QI [(match_operand:QI 1 "memory_operand" "+m")]
 
20069
                            UNSPECV_LDSTUB))
 
20070
    (set (match_dup 1) (const_int -1))]
 
20071
-  ""
 
20072
+  "!sparc_fix_ut699"
 
20073
   "ldstub\t%1, %0"
 
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)
 
20079
@@ -30,6 +30,7 @@
 
20080
   PROCESSOR_SUPERSPARC,
 
20081
   PROCESSOR_HYPERSPARC,
 
20082
   PROCESSOR_LEON,
 
20083
+  PROCESSOR_LEON3,
 
20084
   PROCESSOR_SPARCLITE,
 
20085
   PROCESSOR_F930,
 
20086
   PROCESSOR_F934,
 
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)
 
20091
@@ -52,6 +52,7 @@
 
20092
 #include "params.h"
 
20093
 #include "df.h"
 
20094
 #include "opts.h"
 
20095
+#include "tree-pass.h"
 
20096
 
 
20097
 /* Processor costs */
 
20098
 
 
20099
@@ -226,6 +227,30 @@
 
20100
 };
 
20101
 
 
20102
 static const
 
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 */
 
20124
+};
 
20125
+
 
20126
+static const
 
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
 
20141
 
 
20142
-#undef TARGET_MACHINE_DEPENDENT_REORG
 
20143
-#define TARGET_MACHINE_DEPENDENT_REORG sparc_reorg
 
20144
-
 
20145
 #undef TARGET_RTX_COSTS
 
20146
 #define TARGET_RTX_COSTS sparc_rtx_costs
 
20147
 #undef TARGET_ADDRESS_COST
 
20148
@@ -804,6 +825,206 @@
 
20149
 
 
20150
 struct gcc_target targetm = TARGET_INITIALIZER;
 
20151
 
 
20152
+/* Return the memory reference contained in X if any, zero otherwise.  */
 
20153
+
 
20154
+static rtx
 
20155
+mem_ref (rtx x)
 
20156
+{
 
20157
+  if (GET_CODE (x) == SIGN_EXTEND || GET_CODE (x) == ZERO_EXTEND)
 
20158
+    x = XEXP (x, 0);
 
20159
+
 
20160
+  if (MEM_P (x))
 
20161
+    return x;
 
20162
+
 
20163
+  return NULL_RTX;
 
20164
+}
 
20165
+
 
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.  */
 
20171
+
 
20172
+static bool
 
20173
+sparc_gate_work_around_errata (void)
 
20174
+{
 
20175
+  /* The only errata we handle are those of the AT697F and UT699.  */
 
20176
+  return sparc_fix_at697f != 0 || sparc_fix_ut699 != 0;
 
20177
+}
 
20178
+
 
20179
+static unsigned int
 
20180
+sparc_do_work_around_errata (void)
 
20181
+{
 
20182
+  rtx insn, next;
 
20183
+
 
20184
+  /* Force all instructions to be split into their final form.  */
 
20185
+  split_all_insns_noflow ();
 
20186
+
 
20187
+  /* Now look for specific patterns in the insn stream.  */
 
20188
+  for (insn = get_insns (); insn; insn = next)
 
20189
+    {
 
20190
+      bool insert_nop = false;
 
20191
+      rtx set;
 
20192
+
 
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);
 
20196
+
 
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)
 
20206
+       {
 
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;
 
20210
+         int code;
 
20211
+
 
20212
+         /* If the insn has a delay slot, then it cannot be problematic.  */
 
20213
+         next = next_active_insn (insn);
 
20214
+         if (!next)
 
20215
+           break;
 
20216
+         if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
 
20217
+           continue;
 
20218
+
 
20219
+         extract_insn (next);
 
20220
+         code = INSN_CODE (next);
 
20221
+
 
20222
+         switch (code)
 
20223
+           {
 
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)
 
20232
+               {
 
20233
+                 /* Case [1-4]:
 
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;
 
20239
+               }
 
20240
+             else
 
20241
+               {
 
20242
+                 /* Case 5:
 
20243
+                            ld [address], %fx+1
 
20244
+                            FPOPd %fx, %fx, %fx  */
 
20245
+                 if (src1 == x
 
20246
+                     && dest == src1
 
20247
+                     && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
 
20248
+                   insert_nop = true;
 
20249
+               }
 
20250
+             break;
 
20251
+
 
20252
+           case CODE_FOR_sqrtdf2:
 
20253
+             dest = REGNO (recog_data.operand[0]);
 
20254
+             src1 = REGNO (recog_data.operand[1]);
 
20255
+             /* Case 6:
 
20256
+                        ld [address], %fx+1
 
20257
+                        fsqrtd %fx, %fx  */
 
20258
+             if (src1 == x && dest == src1)
 
20259
+               insert_nop = true;
 
20260
+             break;
 
20261
+
 
20262
+           default:
 
20263
+             break;
 
20264
+           }
 
20265
+       }
 
20266
+
 
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)
 
20275
+       {
 
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);
 
20279
+
 
20280
+         /* If the insn has a delay slot, then it cannot be problematic.  */
 
20281
+         next = next_active_insn (insn);
 
20282
+         if (!next)
 
20283
+           break;
 
20284
+         if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
 
20285
+           continue;
 
20286
+
 
20287
+         /* Look for a second memory access to/from an integer register.  */
 
20288
+         if ((set = single_set (next)) != NULL_RTX)
 
20289
+           {
 
20290
+             rtx src = SET_SRC (set);
 
20291
+             rtx dest = SET_DEST (set);
 
20292
+             rtx mem;
 
20293
+
 
20294
+             /* LDD is affected.  */
 
20295
+             if ((mem = mem_ref (src)) != NULL_RTX
 
20296
+                 && REG_P (dest)
 
20297
+                 && REGNO (dest) < 32
 
20298
+                 && !reg_mentioned_p (x, XEXP (mem, 0)))
 
20299
+               insert_nop = true;
 
20300
+
 
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
 
20305
+                          || (REG_P (src)
 
20306
+                              && REGNO (src) < 32
 
20307
+                              && REGNO (src) != REGNO (x)))
 
20308
+                      && !reg_mentioned_p (x, XEXP (mem, 0)))
 
20309
+               insert_nop = true;
 
20310
+           }
 
20311
+       }
 
20312
+
 
20313
+      else
 
20314
+       next = NEXT_INSN (insn);
 
20315
+
 
20316
+      if (insert_nop)
 
20317
+       emit_insn_before (gen_nop (), next);
 
20318
+    }
 
20319
+
 
20320
+  return 0;
 
20321
+}
 
20322
+
 
20323
+struct rtl_opt_pass pass_work_around_errata =
 
20324
+{
 
20325
+ {
 
20326
+  RTL_PASS,
 
20327
+  "errata",                            /* name */
 
20328
+  OPTGROUP_NONE,                       /* optinfo_flags */
 
20329
+  sparc_gate_work_around_errata,       /* gate */
 
20330
+  sparc_do_work_around_errata,         /* execute */
 
20331
+  NULL,                                        /* sub */
 
20332
+  NULL,                                        /* next */
 
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 */
 
20340
+ }
 
20341
+};
 
20342
+
 
20343
+struct register_pass_info insert_pass_work_around_errata =
 
20344
+{
 
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 */
 
20349
+};
 
20350
+
 
20351
+/* Helpers for TARGET_DEBUG_OPTIONS.  */
 
20352
 static void
 
20353
 dump_target_flag_bits (const int flags)
 
20354
 {
 
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 @@
 
20364
   };
 
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;
 
20371
     const int disable;
 
20372
@@ -914,8 +1136,8 @@
 
20373
     /* TI TMS390Z55 supersparc */
 
20374
     { "supersparc",    MASK_ISA, MASK_V8 },
 
20375
     { "hypersparc",    MASK_ISA, MASK_V8|MASK_FPU },
 
20376
-    /* LEON */
 
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
 
20385
                   & ~MASK_CBCOND
 
20386
 #endif
 
20387
+#ifndef HAVE_AS_LEON
 
20388
+                  & ~(MASK_LEON | MASK_LEON3)
 
20389
+#endif
 
20390
                   );
 
20391
 
 
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;
 
20396
       break;
 
20397
+    case PROCESSOR_LEON3:
 
20398
+      sparc_costs = &leon3_costs;
 
20399
+      break;
 
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;
 
20413
       else
 
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;
 
20418
+
 
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
 
20423
+     do it here.  */
 
20424
+  register_pass (&insert_pass_work_around_errata);
 
20425
 }
 
20426
 
 
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);
 
20432
-
 
20433
+             else
 
20434
+               neg2_ovf = false;
 
20435
              result = result.add_with_sign (tmp, false, &add2_ovf);
 
20436
              overflow |= neg1_ovf | neg2_ovf | add1_ovf | add2_ovf;
 
20437
            }
 
20438
@@ -10897,107 +11137,6 @@
 
20439
   return (vcall_offset >= -32768 || ! fixed_regs[5]);
 
20440
 }
 
20441
 
 
20442
-/* We use the machine specific reorg pass to enable workarounds for errata.  */
 
20443
-
 
20444
-static void
 
20445
-sparc_reorg (void)
 
20446
-{
 
20447
-  rtx insn, next;
 
20448
-
 
20449
-  /* The only erratum we handle for now is that of the AT697F processor.  */
 
20450
-  if (!sparc_fix_at697f)
 
20451
-    return;
 
20452
-
 
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)
 
20456
-    {
 
20457
-      cleanup_barriers ();
 
20458
-      dbr_schedule (get_insns ());
 
20459
-    }
 
20460
-
 
20461
-  /* Now look for specific patterns in the insn stream.  */
 
20462
-  for (insn = get_insns (); insn; insn = next)
 
20463
-    {
 
20464
-      bool insert_nop = false;
 
20465
-      rtx set;
 
20466
-
 
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)
 
20475
-       {
 
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;
 
20479
-         int code;
 
20480
-
 
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)
 
20484
-           code = -1;
 
20485
-         else
 
20486
-           {
 
20487
-             extract_insn (next);
 
20488
-             code = INSN_CODE (next);
 
20489
-           }
 
20490
-
 
20491
-         switch (code)
 
20492
-           {
 
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)
 
20501
-               {
 
20502
-                 /* Case [1-4]:
 
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;
 
20508
-               }
 
20509
-             else
 
20510
-               {
 
20511
-                 /* Case 5:
 
20512
-                            ld [address], %fx+1
 
20513
-                            FPOPd %fx, %fx, %fx  */
 
20514
-                 if (src1 == x
 
20515
-                     && dest == src1
 
20516
-                     && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
 
20517
-                   insert_nop = true;
 
20518
-               }
 
20519
-             break;
 
20520
-
 
20521
-           case CODE_FOR_sqrtdf2:
 
20522
-             dest = REGNO (recog_data.operand[0]);
 
20523
-             src1 = REGNO (recog_data.operand[1]);
 
20524
-             /* Case 6:
 
20525
-                        ld [address], %fx+1
 
20526
-                        fsqrtd %fx, %fx  */
 
20527
-             if (src1 == x && dest == src1)
 
20528
-               insert_nop = true;
 
20529
-             break;
 
20530
-
 
20531
-           default:
 
20532
-             break;
 
20533
-           }
 
20534
-       }
 
20535
-      else
 
20536
-       next = NEXT_INSN (insn);
 
20537
-
 
20538
-      if (insert_nop)
 
20539
-       emit_insn_after (gen_nop (), insn);
 
20540
-    }
 
20541
-}
 
20542
-
 
20543
 /* How to allocate a 'struct machine_function'.  */
 
20544
 
 
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/>.
 
20553
 
 
20554
+;; Leon is a single-issue processor.
 
20555
 
 
20556
 (define_automaton "leon")
 
20557
 
 
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")
 
20562
 
 
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"))
 
20567
   "leon_memory")
 
20568
 
 
20569
-(define_insn_reservation "leon_store" 1
 
20570
-  (and (eq_attr "cpu" "leon")
 
20571
-    (eq_attr "type" "store,fpstore"))
 
20572
-  "leon_memory+write_buf")
 
20573
-  
 
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"))
 
20581
+  "leon_memory*2")
 
20582
 
 
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"))
 
20589
+  "leon_memory*2")
 
20590
 
 
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
 
20596
 
 
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")
 
20602
 
 
20603
+(define_cpu_unit "grfpu_alu" "grfpu")
 
20604
+(define_cpu_unit "grfpu_ds" "grfpu")
 
20605
+
 
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")
 
20609
+
 
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")
 
20613
+
 
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")
 
20617
+
 
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")
 
20621
+
 
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
 
20664
 
 
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 ""
 
20669
 #endif
 
20670
 
 
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
 
20677
 #endif
 
20678
 
 
20679
 #endif
 
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 @@
 
20689
 %{mcpu=v8:-Av8} \
 
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} \
 
20696
 %{mcpu=v9:-Av9} \
 
20697
 %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
 
20698
@@ -1754,6 +1758,12 @@
 
20699
 #define AS_NIAGARA4_FLAG "-Av9" AS_NIAGARA3_FLAG
 
20700
 #endif
 
20701
 
 
20702
+#ifdef HAVE_AS_LEON
 
20703
+#define AS_LEON_FLAG "-Aleon"
 
20704
+#else
 
20705
+#define AS_LEON_FLAG "-Av8"
 
20706
+#endif
 
20707
+
 
20708
 /* We use gcc _mcount for profiling.  */
 
20709
 #define NO_PROFILE_COUNTERS 0
 
20710
 
 
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 @@
 
20716
 
 
20717
 /* Macros used in the machine description to test the flags.  */
 
20718
 
 
20719
-/* configure can arrange to make this 2, to force a 486.  */
 
20720
+/* configure can arrange to change it.  */
 
20721
 
 
20722
 #ifndef TARGET_CPU_DEFAULT
 
20723
-#define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_generic
 
20724
+#define TARGET_CPU_DEFAULT PROCESSOR_GENERIC32
 
20725
 #endif
 
20726
 
 
20727
 #ifndef TARGET_FPMATH_DEFAULT
 
20728
@@ -591,43 +591,6 @@
 
20729
 /* Target Pragmas.  */
 
20730
 #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas ()
 
20731
 
 
20732
-enum target_cpu_default
 
20733
-{
 
20734
-  TARGET_CPU_DEFAULT_generic = 0,
 
20735
-
 
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,
 
20751
-
 
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,
 
20765
-
 
20766
-  TARGET_CPU_DEFAULT_max
 
20767
-};
 
20768
-
 
20769
 #ifndef CC1_SPEC
 
20770
 #define CC1_SPEC "%(cc1_cpu) "
 
20771
 #endif
 
20772
@@ -2089,32 +2052,33 @@
 
20773
    with x86-64 medium memory model */
 
20774
 #define DEFAULT_LARGE_SECTION_THRESHOLD 65536
 
20775
 
 
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.  */ 
 
20779
 
 
20780
 enum processor_type
 
20781
 {
 
20782
-  PROCESSOR_I386 = 0,                  /* 80386 */
 
20783
+  PROCESSOR_GENERIC32 = 0,
 
20784
+  PROCESSOR_GENERIC64,
 
20785
+  PROCESSOR_I386,                      /* 80386 */
 
20786
   PROCESSOR_I486,                      /* 80486DX, 80486SX, 80486DX[24] */
 
20787
   PROCESSOR_PENTIUM,
 
20788
   PROCESSOR_PENTIUMPRO,
 
20789
-  PROCESSOR_GEODE,
 
20790
-  PROCESSOR_K6,
 
20791
-  PROCESSOR_ATHLON,
 
20792
   PROCESSOR_PENTIUM4,
 
20793
-  PROCESSOR_K8,
 
20794
   PROCESSOR_NOCONA,
 
20795
   PROCESSOR_CORE2,
 
20796
   PROCESSOR_COREI7,
 
20797
   PROCESSOR_HASWELL,
 
20798
-  PROCESSOR_GENERIC32,
 
20799
-  PROCESSOR_GENERIC64,
 
20800
+  PROCESSOR_ATOM,
 
20801
+  PROCESSOR_GEODE,
 
20802
+  PROCESSOR_K6,
 
20803
+  PROCESSOR_ATHLON,
 
20804
+  PROCESSOR_K8,
 
20805
   PROCESSOR_AMDFAM10,
 
20806
   PROCESSOR_BDVER1,
 
20807
   PROCESSOR_BDVER2,
 
20808
   PROCESSOR_BDVER3,
 
20809
   PROCESSOR_BTVER1,
 
20810
   PROCESSOR_BTVER2,
 
20811
-  PROCESSOR_ATOM,
 
20812
   PROCESSOR_max
 
20813
 };
 
20814
 
 
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")))
 
20822
 
 
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))
 
20829
+
 
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]);
 
20835
 
 
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,
 
20839
                                                   GEN_INT (4)));
 
20840
 })
 
20841
 
 
20842
@@ -1587,7 +1594,7 @@
 
20843
   split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]);
 
20844
 
 
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,
 
20848
                                                   GEN_INT (4)));
 
20849
 })
 
20850
 
 
20851
@@ -6589,7 +6596,7 @@
 
20852
    (set_attr "use_carry" "1")
 
20853
    (set_attr "mode" "<MODE>")])
 
20854
 
 
20855
-;; Overflow setting add and subtract instructions
 
20856
+;; Overflow setting add instructions
 
20857
 
 
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>")])
 
20863
 
 
20864
-(define_insn "*sub<mode>3_cconly_overflow"
 
20865
+(define_insn "*add<mode>3_cc_overflow"
 
20866
   [(set (reg:CCC FLAGS_REG)
 
20867
        (compare:CCC
 
20868
-         (minus:SWI
 
20869
-           (match_operand:SWI 0 "nonimmediate_operand" "<r>m,<r>")
 
20870
-           (match_operand:SWI 1 "<general_operand>" "<r><i>,<r>m"))
 
20871
-         (match_dup 0)))]
 
20872
-  ""
 
20873
-  "cmp{<imodesuffix>}\t{%1, %0|%0, %1}"
 
20874
-  [(set_attr "type" "icmp")
 
20875
-   (set_attr "mode" "<MODE>")])
 
20876
-
 
20877
-(define_insn "*<plusminus_insn><mode>3_cc_overflow"
 
20878
-  [(set (reg:CCC FLAGS_REG)
 
20879
-       (compare:CCC
 
20880
-           (plusminus:SWI
 
20881
-               (match_operand:SWI 1 "nonimmediate_operand" "<comm>0,0")
 
20882
+           (plus:SWI
 
20883
+               (match_operand:SWI 1 "nonimmediate_operand" "%0,0")
 
20884
                (match_operand:SWI 2 "<general_operand>" "<r><i>,<r>m"))
 
20885
            (match_dup 1)))
 
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>")])
 
20895
 
 
20896
-(define_insn "*<plusminus_insn>si3_zext_cc_overflow"
 
20897
+(define_insn "*addsi3_zext_cc_overflow"
 
20898
   [(set (reg:CCC FLAGS_REG)
 
20899
        (compare:CCC
 
20900
-         (plusminus:SI
 
20901
-           (match_operand:SI 1 "nonimmediate_operand" "<comm>0")
 
20902
+         (plus:SI
 
20903
+           (match_operand:SI 1 "nonimmediate_operand" "%0")
 
20904
            (match_operand:SI 2 "x86_64_general_operand" "rme"))
 
20905
          (match_dup 1)))
 
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")])
 
20915
 
 
20916
@@ -8012,7 +8007,18 @@
 
20917
         (const_int 0)))
 
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)
 
20921
+  "TARGET_64BIT
 
20922
+   && ix86_match_ccmode
 
20923
+       (insn,
 
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)"
 
20934
   "@
 
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/>.
 
20942
 #
 
20943
 
 
20944
-MULTILIB_OPTIONS = mtune=i486/mtune=pentium/mtune=pentiumpro \
 
20945
-msoft-float
 
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"));
 
20970
     }
 
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 @@
 
20976
 }
 
20977
   [(set_attr "type" "ssemov")
 
20978
    (set_attr "movu" "1")
 
20979
+   (set_attr "ssememalign" "8")
 
20980
    (set_attr "prefix" "maybe_vex")
 
20981
    (set (attr "mode")
 
20982
        (cond [(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
 
20983
@@ -634,6 +635,7 @@
 
20984
 }
 
20985
   [(set_attr "type" "ssemov")
 
20986
    (set_attr "movu" "1")
 
20987
+   (set_attr "ssememalign" "8")
 
20988
    (set_attr "prefix" "maybe_vex")
 
20989
    (set (attr "mode")
 
20990
        (cond [(ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL")
 
20991
@@ -663,6 +665,7 @@
 
20992
 }
 
20993
   [(set_attr "type" "ssemov")
 
20994
    (set_attr "movu" "1")
 
20995
+   (set_attr "ssememalign" "8")
 
20996
    (set (attr "prefix_data16")
 
20997
      (if_then_else
 
20998
        (match_test "TARGET_AVX")
 
20999
@@ -696,6 +699,7 @@
 
21000
 }
 
21001
   [(set_attr "type" "ssemov")
 
21002
    (set_attr "movu" "1")
 
21003
+   (set_attr "ssememalign" "8")
 
21004
    (set (attr "prefix_data16")
 
21005
      (if_then_else
 
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")
 
21013
      (if_then_else
 
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")])
 
21030
 
 
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")])
 
21037
 
 
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")])
 
21046
 
 
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")])
 
21054
 
 
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")])
 
21062
 
 
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")])
 
21070
 
 
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")])
 
21103
 
 
21104
 ;; Avoid combining registers from different units in a single alternative,
 
21105
@@ -5077,6 +5093,7 @@
 
21106
    #"
 
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")
 
21115
           ]
 
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 @@
 
21122
        (const_string "1")
 
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")])
 
21128
 
 
21129
@@ -8736,6 +8755,7 @@
 
21130
   "TARGET_SSE4_1"
 
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 @@
 
21138
   "TARGET_SSE4_1"
 
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 @@
 
21146
   "TARGET_SSE4_1"
 
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 @@
 
21154
   "TARGET_SSE4_1"
 
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 @@
 
21162
   "TARGET_SSE4_1"
 
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 @@
 
21170
   "TARGET_SSE4_1"
 
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>")])
 
21260
 
 
21261
-;; scalar insns
 
21262
 (define_expand "xop_vmfrcz<mode>2"
 
21263
   [(set (match_operand:VF_128 0 "register_operand")
 
21264
        (vec_merge:VF_128
 
21265
@@ -10223,11 +10257,9 @@
 
21266
          (match_dup 3)
 
21267
          (const_int 1)))]
 
21268
   "TARGET_XOP"
 
21269
-{
 
21270
-  operands[3] = CONST0_RTX (<MODE>mode);
 
21271
-})
 
21272
+  "operands[3] = CONST0_RTX (<MODE>mode);")
 
21273
 
 
21274
-(define_insn "*xop_vmfrcz_<mode>"
 
21275
+(define_insn "*xop_vmfrcz<mode>2"
 
21276
   [(set (match_operand:VF_128 0 "register_operand" "=x")
 
21277
        (vec_merge:VF_128
 
21278
          (unspec:VF_128
 
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)
 
21286
 {
 
21287
-  return (__m128) __builtin_ia32_vfrczss ((__v4sf)__A, (__v4sf)__B);
 
21288
+  return (__m128) __builtin_ia32_movss ((__v4sf)__A,
 
21289
+                                       (__v4sf)
 
21290
+                                       __builtin_ia32_vfrczss ((__v4sf)__B));
 
21291
 }
 
21292
 
 
21293
 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 
21294
 _mm_frcz_sd (__m128d __A, __m128d __B)
 
21295
 {
 
21296
-  return (__m128d) __builtin_ia32_vfrczsd ((__v2df)__A, (__v2df)__B);
 
21297
+  return (__m128d) __builtin_ia32_movsd ((__v2df)__A,
 
21298
+                                        (__v2df)
 
21299
+                                        __builtin_ia32_vfrczsd ((__v2df)__B));
 
21300
 }
 
21301
 
 
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 @@
 
21308
       case 0x0c:
 
21309
        level1->sizekb = 16; level1->assoc = 4; level1->line = 32;
 
21310
        break;
 
21311
+      case 0x0d:
 
21312
+       level1->sizekb = 16; level1->assoc = 4; level1->line = 64;
 
21313
+       break;
 
21314
+      case 0x0e:
 
21315
+       level1->sizekb = 24; level1->assoc = 6; level1->line = 64;
 
21316
+       break;
 
21317
+      case 0x21:
 
21318
+       level2->sizekb = 256; level2->assoc = 8; level2->line = 64;
 
21319
+       break;
 
21320
+      case 0x24:
 
21321
+       level2->sizekb = 1024; level2->assoc = 16; level2->line = 64;
 
21322
+       break;
 
21323
       case 0x2c:
 
21324
        level1->sizekb = 32; level1->assoc = 8; level1->line = 64;
 
21325
        break;
 
21326
@@ -162,6 +174,9 @@
 
21327
       case 0x45:
 
21328
        level2->sizekb = 2048; level2->assoc = 4; level2->line = 32;
 
21329
        break;
 
21330
+      case 0x48:
 
21331
+       level2->sizekb = 3072; level2->assoc = 12; level2->line = 64;
 
21332
+       break;
 
21333
       case 0x49:
 
21334
        if (xeon_mp)
 
21335
          break;
 
21336
@@ -203,6 +218,9 @@
 
21337
       case 0x7f:
 
21338
        level2->sizekb = 512; level2->assoc = 2; level2->line = 64;
 
21339
        break;
 
21340
+      case 0x80:
 
21341
+       level2->sizekb = 512; level2->assoc = 8; level2->line = 64;
 
21342
+       break;
 
21343
       case 0x82:
 
21344
        level2->sizekb = 256; level2->assoc = 8; level2->line = 32;
 
21345
        break;
 
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,
 
21361
 
 
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,
 
21365
 
 
21366
   /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL */
 
21367
-  m_COREI7 | m_BDVER,
 
21368
+  m_COREI7 | m_HASWELL| m_BDVER,
 
21369
 
 
21370
   /* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL */
 
21371
   m_BDVER ,
 
21372
@@ -2409,6 +2409,7 @@
 
21373
 /* Processor target table, indexed by processor number */
 
21374
 struct ptt
 
21375
 {
 
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;
 
21382
 };
 
21383
 
 
21384
+/* This table must be in sync with enum processor_type in i386.h.  */ 
 
21385
 static const struct ptt processor_target_table[PROCESSOR_max] =
 
21386
 {
 
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},
 
21397
-  /* Core 2  */
 
21398
-  {&core_cost, 16, 10, 16, 10, 16},
 
21399
-  /* Core i7  */
 
21400
-  {&core_cost, 16, 10, 16, 10, 16},
 
21401
-  /* Core avx2  */
 
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}
 
21434
 };
 
21435
-
 
21436
-static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
 
21437
-{
 
21438
-  "generic",
 
21439
-  "i386",
 
21440
-  "i486",
 
21441
-  "pentium",
 
21442
-  "pentium-mmx",
 
21443
-  "pentiumpro",
 
21444
-  "pentium2",
 
21445
-  "pentium3",
 
21446
-  "pentium4",
 
21447
-  "pentium-m",
 
21448
-  "prescott",
 
21449
-  "nocona",
 
21450
-  "core2",
 
21451
-  "corei7",
 
21452
-  "core-avx2",
 
21453
-  "atom",
 
21454
-  "geode",
 
21455
-  "k6",
 
21456
-  "k6-2",
 
21457
-  "k6-3",
 
21458
-  "athlon",
 
21459
-  "athlon-4",
 
21460
-  "k8",
 
21461
-  "amdfam10",
 
21462
-  "bdver1",
 
21463
-  "bdver2",
 
21464
-  "bdver3",
 
21465
-  "btver1",
 
21466
-  "btver2"
 
21467
-};
 
21468
 
 
21469
 static bool
 
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 
 
21479
        | PTA_XSAVEOPT},
 
21480
@@ -3125,7 +3091,8 @@
 
21481
        ix86_tune_string = ix86_arch_string;
 
21482
       if (!ix86_tune_string)
 
21483
        {
 
21484
-         ix86_tune_string = cpu_names[TARGET_CPU_DEFAULT];
 
21485
+         ix86_tune_string
 
21486
+           = processor_target_table[TARGET_CPU_DEFAULT].name;
 
21487
          ix86_tune_defaulted = 1;
 
21488
        }
 
21489
 
 
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);
 
21493
 
 
21494
+  gcc_assert (ptr->arch < PROCESSOR_max);
 
21495
   fprintf (file, "%*sarch = %d (%s)\n",
 
21496
           indent, "",
 
21497
-          ptr->arch,
 
21498
-          ((ptr->arch < TARGET_CPU_DEFAULT_max)
 
21499
-           ? cpu_names[ptr->arch]
 
21500
-           : "<unknown>"));
 
21501
+          ptr->arch, processor_target_table[ptr->arch].name);
 
21502
 
 
21503
+  gcc_assert (ptr->tune < PROCESSOR_max);
 
21504
   fprintf (file, "%*stune = %d (%s)\n",
 
21505
           indent, "",
 
21506
-          ptr->tune,
 
21507
-          ((ptr->tune < TARGET_CPU_DEFAULT_max)
 
21508
-           ? cpu_names[ptr->tune]
 
21509
-           : "<unknown>"));
 
21510
+          ptr->tune, processor_target_table[ptr->tune].name);
 
21511
 
 
21512
   fprintf (file, "%*sbranch_cost = %d\n", indent, "", ptr->branch_cost);
 
21513
 
 
21514
@@ -5409,6 +5372,17 @@
 
21515
          bool win;
 
21516
          int j;
 
21517
 
 
21518
+         /* For pre-AVX disallow unaligned loads/stores where the
 
21519
+            instructions don't support it.  */
 
21520
+         if (!TARGET_AVX
 
21521
+             && VECTOR_MODE_P (GET_MODE (op))
 
21522
+             && misaligned_operand (op, GET_MODE (op)))
 
21523
+           {
 
21524
+             int min_align = get_attr_ssememalign (insn);
 
21525
+             if (min_align == 0)
 
21526
+               return false;
 
21527
+           }
 
21528
+
 
21529
          /* A unary operator may be accepted by the predicate, but it
 
21530
             is irrelevant for matching constraints.  */
 
21531
          if (UNARY_P (op))
 
21532
@@ -5830,7 +5804,8 @@
 
21533
                      }
 
21534
                    return TYPE_MODE (type);
 
21535
                  }
 
21536
-               else if ((size == 8 || size == 16) && !TARGET_SSE)
 
21537
+               else if (((size == 8 && TARGET_64BIT) || size == 16)
 
21538
+                        && !TARGET_SSE)
 
21539
                  {
 
21540
                    static bool warnedsse;
 
21541
 
 
21542
@@ -5842,10 +5817,21 @@
 
21543
                        warning (0, "SSE vector argument without SSE "
 
21544
                                 "enabled changes the ABI");
 
21545
                      }
 
21546
-                   return mode;
 
21547
                  }
 
21548
-               else
 
21549
-                 return mode;
 
21550
+               else if ((size == 8 && !TARGET_64BIT) && !TARGET_MMX)
 
21551
+                 {
 
21552
+                   static bool warnedmmx;
 
21553
+
 
21554
+                   if (cum
 
21555
+                       && !warnedmmx
 
21556
+                       && cum->warn_mmx)
 
21557
+                     {
 
21558
+                       warnedmmx = true;
 
21559
+                       warning (0, "MMX vector argument without MMX "
 
21560
+                                "enabled changes the ABI");
 
21561
+                     }
 
21562
+                 }
 
21563
+               return mode;
 
21564
              }
 
21565
 
 
21566
          gcc_unreachable ();
 
21567
@@ -7235,9 +7221,15 @@
 
21568
   switch (regno)
 
21569
     {
 
21570
     case AX_REG:
 
21571
+    case DX_REG:
 
21572
       return true;
 
21573
+    case DI_REG:
 
21574
+    case SI_REG:
 
21575
+      return TARGET_64BIT && ix86_abi != MS_ABI;
 
21576
 
 
21577
-    case FIRST_FLOAT_REG:
 
21578
+      /* Complex values are returned in %st(0)/%st(1) pair.  */
 
21579
+    case ST0_REG:
 
21580
+    case ST1_REG:
 
21581
       /* TODO: The function should depend on current function ABI but
 
21582
        builtins.c would need updating then. Therefore we use the
 
21583
        default ABI.  */
 
21584
@@ -7245,10 +7237,12 @@
 
21585
        return false;
 
21586
       return TARGET_FLOAT_RETURNS_IN_80387;
 
21587
 
 
21588
-    case FIRST_SSE_REG:
 
21589
+      /* Complex values are returned in %xmm0/%xmm1 pair.  */
 
21590
+    case XMM0_REG:
 
21591
+    case XMM1_REG:
 
21592
       return TARGET_SSE;
 
21593
 
 
21594
-    case FIRST_MMX_REG:
 
21595
+    case MM0_REG:
 
21596
       if (TARGET_MACHO || TARGET_64BIT)
 
21597
        return false;
 
21598
       return TARGET_MMX;
 
21599
@@ -10560,18 +10554,21 @@
 
21600
        }
 
21601
       m->fs.sp_offset += allocate;
 
21602
 
 
21603
+      /* Use stack_pointer_rtx for relative addressing so that code
 
21604
+        works for realigned stack, too.  */
 
21605
       if (r10_live && eax_live)
 
21606
         {
 
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));
 
21616
        }
 
21617
       else if (eax_live || r10_live)
 
21618
        {
 
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 @@
 
21625
     }
 
21626
 }
 
21627
 
 
21628
-/* Determine if op is suitable SUBREG RTX for address.  */
 
21629
-
 
21630
-static bool
 
21631
-ix86_address_subreg_operand (rtx op)
 
21632
-{
 
21633
-  enum machine_mode mode;
 
21634
-
 
21635
-  if (!REG_P (op))
 
21636
-    return false;
 
21637
-
 
21638
-  mode = GET_MODE (op);
 
21639
-
 
21640
-  if (GET_MODE_CLASS (mode) != MODE_INT)
 
21641
-    return false;
 
21642
-
 
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)
 
21646
-    return false;
 
21647
-
 
21648
-  /* Allow only SUBREGs of non-eliminable hard registers.  */
 
21649
-  return register_no_elim_operand (op, mode);
 
21650
-}
 
21651
-
 
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 @@
 
21656
     base = addr;
 
21657
   else if (GET_CODE (addr) == SUBREG)
 
21658
     {
 
21659
-      if (ix86_address_subreg_operand (SUBREG_REG (addr)))
 
21660
+      if (REG_P (SUBREG_REG (addr)))
 
21661
        base = addr;
 
21662
       else
 
21663
        return 0;
 
21664
@@ -11705,7 +11678,7 @@
 
21665
              break;
 
21666
 
 
21667
            case SUBREG:
 
21668
-             if (!ix86_address_subreg_operand (SUBREG_REG (op)))
 
21669
+             if (!REG_P (SUBREG_REG (op)))
 
21670
                return 0;
 
21671
              /* FALLTHRU */
 
21672
 
 
21673
@@ -11750,19 +11723,6 @@
 
21674
       scale = 1 << scale;
 
21675
       retval = -1;
 
21676
     }
 
21677
-  else if (CONST_INT_P (addr))
 
21678
-    {
 
21679
-      if (!x86_64_immediate_operand (addr, VOIDmode))
 
21680
-       return 0;
 
21681
-
 
21682
-      /* Constant addresses are sign extended to 64bit, we have to
 
21683
-        prevent addresses from 0x80000000 to 0xffffffff in x32 mode.  */
 
21684
-      if (TARGET_X32
 
21685
-         && val_signbit_known_set_p (SImode, INTVAL (addr)))
 
21686
-       return 0;
 
21687
-
 
21688
-      disp = addr;
 
21689
-    }
 
21690
   else
 
21691
     disp = addr;                       /* displacement */
 
21692
 
 
21693
@@ -11771,18 +11731,12 @@
 
21694
       if (REG_P (index))
 
21695
        ;
 
21696
       else if (GET_CODE (index) == SUBREG
 
21697
-              && ix86_address_subreg_operand (SUBREG_REG (index)))
 
21698
+              && REG_P (SUBREG_REG (index)))
 
21699
        ;
 
21700
       else
 
21701
        return 0;
 
21702
     }
 
21703
 
 
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)))
 
21708
-    return 0;
 
21709
-
 
21710
   /* Extract the integral value of scale.  */
 
21711
   if (scale_rtx)
 
21712
     {
 
21713
@@ -12258,6 +12212,45 @@
 
21714
   return false;
 
21715
 }
 
21716
 
 
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.  */
 
21720
+
 
21721
+static rtx
 
21722
+ix86_validate_address_register (rtx op)
 
21723
+{
 
21724
+  enum machine_mode mode = GET_MODE (op);
 
21725
+
 
21726
+  /* Only SImode or DImode registers can form the address.  */
 
21727
+  if (mode != SImode && mode != DImode)
 
21728
+    return NULL_RTX;
 
21729
+
 
21730
+  if (REG_P (op))
 
21731
+    return op;
 
21732
+  else if (GET_CODE (op) == SUBREG)
 
21733
+    {
 
21734
+      rtx reg = SUBREG_REG (op);
 
21735
+
 
21736
+      if (!REG_P (reg))
 
21737
+       return NULL_RTX;
 
21738
+
 
21739
+      mode = GET_MODE (reg);
 
21740
+
 
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)
 
21745
+       return NULL_RTX;
 
21746
+
 
21747
+      /* Allow only SUBREGs of non-eliminable hard registers.  */
 
21748
+      if (register_no_elim_operand (reg, mode))
 
21749
+       return reg;
 
21750
+    }
 
21751
+
 
21752
+  /* Op is not a register.  */
 
21753
+  return NULL_RTX;
 
21754
+}
 
21755
+
 
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;
 
21764
 
 
21765
   if (ix86_decompose_address (addr, &parts) <= 0)
 
21766
     /* Decomposition failed.  */
 
21767
@@ -12282,23 +12276,16 @@
 
21768
   index = parts.index;
 
21769
   disp = parts.disp;
 
21770
   scale = parts.scale;
 
21771
+  seg = parts.seg;
 
21772
 
 
21773
   /* Validate base register.  */
 
21774
   if (base)
 
21775
     {
 
21776
-      rtx reg;
 
21777
+      rtx reg = ix86_validate_address_register (base);
 
21778
 
 
21779
-      if (REG_P (base))
 
21780
-       reg = base;
 
21781
-      else if (GET_CODE (base) == SUBREG && REG_P (SUBREG_REG (base)))
 
21782
-       reg = SUBREG_REG (base);
 
21783
-      else
 
21784
-       /* Base is not a register.  */
 
21785
+      if (reg == NULL_RTX)
 
21786
        return false;
 
21787
 
 
21788
-      if (GET_MODE (base) != SImode && GET_MODE (base) != DImode)
 
21789
-       return false;
 
21790
-
 
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.  */
 
21796
   if (index)
 
21797
     {
 
21798
-      rtx reg;
 
21799
+      rtx reg = ix86_validate_address_register (index);
 
21800
 
 
21801
-      if (REG_P (index))
 
21802
-       reg = index;
 
21803
-      else if (GET_CODE (index) == SUBREG && REG_P (SUBREG_REG (index)))
 
21804
-       reg = SUBREG_REG (index);
 
21805
-      else
 
21806
-       /* Index is not a register.  */
 
21807
+      if (reg == NULL_RTX)
 
21808
        return false;
 
21809
 
 
21810
-      if (GET_MODE (index) != SImode && GET_MODE (index) != DImode)
 
21811
-       return false;
 
21812
-
 
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))
 
21818
     return false;
 
21819
 
 
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)))
 
21824
+    return false;
 
21825
+
 
21826
   /* Validate scale factor.  */
 
21827
   if (scale != 1)
 
21828
     {
 
21829
@@ -12453,6 +12438,12 @@
 
21830
               && !x86_64_immediate_operand (disp, VOIDmode))
 
21831
        /* Displacement is out of range.  */
 
21832
        return false;
 
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)))
 
21838
+       return false;
 
21839
     }
 
21840
 
 
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)
 
21847
-       suffix = "b";
 
21848
       else
 
21849
        gcc_unreachable ();
 
21850
       break;
 
21851
@@ -13840,8 +13829,12 @@
 
21852
        }
 
21853
       break;
 
21854
     case LTU:
 
21855
-      gcc_assert (mode == CCmode || mode == CCCmode);
 
21856
-      suffix = "b";
 
21857
+      if (mode == CCmode)
 
21858
+       suffix = "b";
 
21859
+      else if (mode == CCCmode)
 
21860
+       suffix = "c";
 
21861
+      else
 
21862
+       gcc_unreachable ();
 
21863
       break;
 
21864
     case GE:
 
21865
       switch (mode)
 
21866
@@ -13861,20 +13854,20 @@
 
21867
        }
 
21868
       break;
 
21869
     case GEU:
 
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)
 
21876
+       suffix = "nc";
 
21877
+      else
 
21878
+       gcc_unreachable ();
 
21879
       break;
 
21880
     case LE:
 
21881
       gcc_assert (mode == CCmode || mode == CCGCmode || mode == CCNOmode);
 
21882
       suffix = "le";
 
21883
       break;
 
21884
     case LEU:
 
21885
-      /* ??? As above.  */
 
21886
       if (mode == CCmode)
 
21887
        suffix = "be";
 
21888
-      else if (mode == CCCmode)
 
21889
-       suffix = fp ? "nb" : "ae";
 
21890
       else
 
21891
        gcc_unreachable ();
 
21892
       break;
 
21893
@@ -15340,7 +15333,7 @@
 
21894
              rtx arg = XEXP (XEXP (link, 0), 0);
 
21895
 
 
21896
              if (ix86_check_avx256_register (&arg, NULL))
 
21897
-               return AVX_U128_ANY;
 
21898
+               return AVX_U128_DIRTY;
 
21899
            }
 
21900
        }
 
21901
 
 
21902
@@ -15460,8 +15453,8 @@
 
21903
     {
 
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;
 
21908
+
 
21909
+      return avx_reg256_found ? AVX_U128_DIRTY : AVX_U128_CLEAN;
 
21910
     }
 
21911
 
 
21912
   /* Otherwise, return current mode.  Remember that if insn
 
21913
@@ -18486,12 +18479,7 @@
 
21914
        return CCmode;
 
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)))
 
21920
-       return CCCmode;
 
21921
-      else
 
21922
-       return CCmode;
 
21923
+      return CCmode;
 
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 @@
 
21928
   return SImode;
 
21929
 }
 
21930
 
 
21931
+/* Copy the address to a Pmode register.  This is used for x32 to
 
21932
+   truncate DImode TLS address to a SImode register. */
 
21933
+
 
21934
+static rtx
 
21935
+ix86_copy_addr_to_reg (rtx addr)
 
21936
+{
 
21937
+  if (GET_MODE (addr) == Pmode)
 
21938
+    return copy_addr_to_reg (addr);
 
21939
+  else
 
21940
+    {
 
21941
+      gcc_assert (GET_MODE (addr) == DImode && Pmode == SImode);
 
21942
+      return gen_rtx_SUBREG (SImode, copy_to_mode_reg (DImode, addr), 0);
 
21943
+    }
 
21944
+}
 
21945
+
 
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);
 
21951
   if (!count)
 
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));
 
21957
   switch (alg)
 
21958
     {
 
21959
     case libcall:
 
21960
@@ -23119,7 +23122,7 @@
 
21961
   gcc_assert (alg != no_stringop);
 
21962
   if (!count)
 
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));
 
21966
   switch (alg)
 
21967
     {
 
21968
     case libcall:
 
21969
@@ -24988,7 +24991,8 @@
 
21970
 int
 
21971
 ix86_data_alignment (tree type, int align)
 
21972
 {
 
21973
-  int max_align = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT);
 
21974
+  int max_align
 
21975
+    = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT);
 
21976
 
 
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 },
 
21982
 
 
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 @@
 
21991
 
 
21992
 static rtx
 
21993
 ix86_expand_special_args_builtin (const struct builtin_description *d,
 
21994
-                                   tree exp, rtx target)
 
21995
+                                 tree exp, rtx target)
 
21996
 {
 
21997
   tree arg;
 
21998
   rtx pat, op;
 
21999
   unsigned int i, nargs, arg_adjust, memory;
 
22000
+  bool aligned_mem = false;
 
22001
   struct
 
22002
     {
 
22003
       rtx op;
 
22004
@@ -31295,6 +31300,15 @@
 
22005
       nargs = 1;
 
22006
       klass = load;
 
22007
       memory = 0;
 
22008
+      switch (icode)
 
22009
+       {
 
22010
+       case CODE_FOR_sse4_1_movntdqa:
 
22011
+       case CODE_FOR_avx2_movntdqa:
 
22012
+         aligned_mem = true;
 
22013
+         break;
 
22014
+       default:
 
22015
+         break;
 
22016
+       }
 
22017
       break;
 
22018
     case VOID_FTYPE_PV2SF_V4SF:
 
22019
     case VOID_FTYPE_PV4DI_V4DI:
 
22020
@@ -31312,6 +31326,26 @@
 
22021
       klass = store;
 
22022
       /* Reserve memory operand for target.  */
 
22023
       memory = ARRAY_SIZE (args);
 
22024
+      switch (icode)
 
22025
+       {
 
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;
 
22040
+         break;
 
22041
+       default:
 
22042
+         break;
 
22043
+       }
 
22044
       break;
 
22045
     case V4SF_FTYPE_V4SF_PCV2SF:
 
22046
     case V2DF_FTYPE_V2DF_PCDOUBLE:
 
22047
@@ -31368,6 +31402,17 @@
 
22048
        {
 
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);
 
22062
        }
 
22063
       else
 
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);
 
22082
            }
 
22083
          else
 
22084
            {
 
22085
@@ -32208,7 +32262,9 @@
 
22086
       mode4 = insn_data[icode].operand[5].mode;
 
22087
 
 
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);
 
22094
       else
 
22095
        subtarget = target;
 
22096
@@ -33879,10 +33935,10 @@
 
22097
     {
 
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
 
22101
-        enabled.  */
 
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).
 
22115
-     */
 
22116
+
 
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))
 
22121
     {
 
22122
       int min_size;
 
22123
@@ -35260,6 +35319,7 @@
 
22124
                {
 
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)
 
22130
                      || CALL_P (start))
 
22131
@@ -35278,6 +35338,7 @@
 
22132
        fprintf (dump_file, "Insn %i estimated to %i bytes\n",
 
22133
                 INSN_UID (insn), min_size);
 
22134
       if ((JUMP_P (insn)
 
22135
+          && asm_noperands (PATTERN (insn)) < 0
 
22136
           && GET_CODE (PATTERN (insn)) != ADDR_VEC
 
22137
           && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC)
 
22138
          || CALL_P (insn))
 
22139
@@ -35289,6 +35350,7 @@
 
22140
        {
 
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)
 
22146
              || CALL_P (start))
 
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)")))
 
22154
 
 
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)"))
 
22160
+
 
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))
 
22166
     return 0;
 
22167
 
 
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)
 
22171
+    return false;
 
22172
+
 
22173
   if (MEM_P (op))
 
22174
     {
 
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);
 
22186
 
 
22187
 /* Result value of sh_find_set_of_reg.  */
 
22188
 struct 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 @@
 
22204
 
 
22205
 /* Determine the maximum possible displacement for a move insn for the
 
22206
    specified mode.  */
 
22207
-static int
 
22208
-max_mov_insn_displacement (enum machine_mode mode, bool consider_sh2a)
 
22209
+int
 
22210
+sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a)
 
22211
 {
 
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 @@
 
22215
 }
 
22216
 
 
22217
 /* Return the displacement value of a displacement address.  */
 
22218
-static inline HOST_WIDE_INT
 
22219
-disp_addr_displacement (rtx x)
 
22220
+HOST_WIDE_INT
 
22221
+sh_disp_addr_displacement (rtx x)
 
22222
 {
 
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;
 
22232
 
 
22233
       /* The displacement would fit into a 4 byte move insn (SH2A).  */
 
22234
       if (TARGET_SH2A
 
22235
-         && offset > 0 && offset <= max_mov_insn_displacement (mode, true))
 
22236
+         && offset > 0 && offset <= sh_max_mov_insn_displacement (mode, true))
 
22237
        return 2;
 
22238
 
 
22239
       /* The displacement is probably out of range and will require extra
 
22240
@@ -10218,7 +10216,7 @@
 
22241
   else
 
22242
     {
 
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);
 
22247
 
 
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))
 
22265
     return R0_REGS;
 
22266
 
 
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))")))
 
22278
 
 
22279
 (define_constraint "Bsc"
 
22280
@@ -295,13 +296,15 @@
 
22281
 
 
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))")))
 
22289
 
 
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)")))
 
22295
 
 
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);
 
22304
 })
 
22305
 
 
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.
 
22315
-;;
 
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.
 
22319
-;;
 
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)"
 
22328
-  "@
 
22329
-    mov                %1,%0
 
22330
-    mov.<bw>   %1,%0
 
22331
-    mov.<bw>   %1,%0"
 
22332
-  [(set_attr "type" "move,store,load")])
 
22333
-
 
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")])
 
22343
 
 
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"))]
 
22367
   "TARGET_SH1
 
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))"
 
22372
   "@
 
22373
+       mov.<bw>        %1,%0
 
22374
        mov     %1,%0
 
22375
-       mov.b   %1,%0
 
22376
-       mov.b   %1,%0
 
22377
-       sts     %1,%0
 
22378
-       lds     %1,%0"
 
22379
- [(set_attr "type" "movi8,load,store,prget,prset")])
 
22380
-
 
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"))]
 
22384
-  "TARGET_SH1
 
22385
-   && (arith_reg_operand (operands[0], HImode)
 
22386
-       || arith_reg_operand (operands[1], HImode))"
 
22387
-  "@
 
22388
-       mov.w   %1,%0
 
22389
        mov     %1,%0
 
22390
-       mov.w   %1,%0
 
22391
-       mov.w   %1,%0
 
22392
+       mov.<bw>        %1,%0
 
22393
+       mov.<bw>        %1,%0
 
22394
+       mov.<bw>        %1,%0
 
22395
+       mov.<bw>        %1,%0
 
22396
        sts     %1,%0
 
22397
        lds     %1,%0"
 
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")))
 
22403
+              (const_int 4)
 
22404
+              (and (match_operand 1 "displacement_mem_operand")
 
22405
+                   (not (match_operand 1 "short_displacement_mem_operand")))
 
22406
+              (const_int 4)]
 
22407
+             (const_int 2)))])
 
22408
 
 
22409
 (define_insn "*movqi_media"
 
22410
   [(set (match_operand:QI 0 "general_movdst_operand" "=r,r,r,m")
 
22411
@@ -8427,11 +8408,9 @@
 
22412
 
 
22413
   while (true)
 
22414
     {
 
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,
 
22417
-                                         reload_completed
 
22418
-                                         ? prev_nonnote_insn_bb
 
22419
-                                         : prev_nonnote_insn);
 
22420
+                                         prev_nonnote_insn);
 
22421
+
 
22422
       if (s1.set_src == NULL_RTX)
 
22423
        break;
 
22424
 
 
22425
@@ -8449,15 +8428,25 @@
 
22426
          continue;
 
22427
        }
 
22428
 
 
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
 
22432
-          the T bit.  */
 
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
 
22439
+        the T bit.  */
 
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;
 
22444
+      else
 
22445
+       {
 
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
 
22448
+            of the T bit.  */
 
22449
+         rtx n = find_regno_note (s1.insn, REG_DEAD, T_REG);
 
22450
+         if (n != NULL_RTX)
 
22451
+           remove_note (s1.insn, n);
 
22452
+       }
 
22453
 
 
22454
-       break;
 
22455
+      break;
 
22456
     }
 
22457
 
 
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)
 
22463
@@ -21,7 +21,7 @@
 
22464
 ;; Used for various architecture options.
 
22465
 Mask(SH_E)
 
22466
 
 
22467
-;; Set if the default precision of th FPU is single.
 
22468
+;; Set if the default precision of the FPU is single.
 
22469
 Mask(FPU_SINGLE)
 
22470
 
 
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)
 
22483
                            (match_dup 1))
 
22484
                   (match_dup 2)))])]
 
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 @@
 
22495
 ;; up.
 
22496
 
 
22497
 (define_split
 
22498
-  [(set (match_operand 0 "register_operand" "")
 
22499
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22500
        (match_operator
 
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
 
22505
 
 
22506
 (define_split
 
22507
-  [(set (match_operand 0 "register_operand" "")
 
22508
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22509
        (match_operator
 
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
 
22514
 
 
22515
 (define_split
 
22516
-  [(set (match_operand 0 "register_operand" "")
 
22517
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22518
        (match_operator
 
22519
         4 "cris_plus_or_bound_operator"
 
22520
         [(match_operator
 
22521
@@ -4044,7 +4044,7 @@
 
22522
 ;; bound.  Call this op-extend-split-swapped-rx=rz.
 
22523
 
 
22524
 (define_split
 
22525
-  [(set (match_operand 0 "register_operand" "")
 
22526
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22527
        (match_operator
 
22528
         4 "cris_plus_or_bound_operator"
 
22529
         [(match_operator
 
22530
@@ -4075,7 +4075,7 @@
 
22531
 ;; Call this op-extend.
 
22532
 
 
22533
 (define_split
 
22534
-  [(set (match_operand 0 "register_operand" "")
 
22535
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22536
        (match_operator
 
22537
         3 "cris_orthogonal_operator"
 
22538
         [(match_operand 1 "register_operand" "")
 
22539
@@ -4099,7 +4099,7 @@
 
22540
 ;; Call this op-split-rx=rz
 
22541
 
 
22542
 (define_split
 
22543
-  [(set (match_operand 0 "register_operand" "")
 
22544
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22545
        (match_operator
 
22546
         3 "cris_commutative_orth_op"
 
22547
         [(match_operand 2 "memory_operand" "")
 
22548
@@ -4123,7 +4123,7 @@
 
22549
 ;; Call this op-split-swapped.
 
22550
 
 
22551
 (define_split
 
22552
-  [(set (match_operand 0 "register_operand" "")
 
22553
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22554
        (match_operator
 
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.
 
22559
 
 
22560
 (define_split
 
22561
-  [(set (match_operand 0 "register_operand" "")
 
22562
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22563
        (match_operator
 
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.
 
22573
 
 
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" ""))]
 
22578
   "reload_completed
 
22579
    && REG_P (operands[0])
 
22580
@@ -4574,7 +4575,7 @@
 
22581
 ;; As the above, but MOVS and MOVU.
 
22582
 
 
22583
 (define_split
 
22584
-  [(set (match_operand 0 "register_operand" "")
 
22585
+  [(set (match_operand 0 "cris_nonsp_register_operand" "")
 
22586
        (match_operator
 
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)
 
22593
@@ -76,6 +76,10 @@
 
22594
            (match_test "cris_simple_address_operand (XEXP (op, 0),
 
22595
                                                      Pmode)"))))
 
22596
 
 
22597
+(define_predicate "cris_nonsp_register_operand"
 
22598
+  (and (match_operand 0 "register_operand")
 
22599
+       (match_test "op != stack_pointer_rtx")))
 
22600
+
 
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);
 
22610
     }
 
22611
 
 
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
 
22618
+     REG.  */
 
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];
 
22624
 
 
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)
 
22630
@@ -21,7 +21,7 @@
 
22631
 
 
22632
 ; Main data types used by the insntructions
 
22633
 
 
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"))
 
22637
 
 
22638
 
 
22639
@@ -1548,12 +1548,12 @@
 
22640
 
 
22641
     case LTU:
 
22642
     case GEU:
 
22643
-      emit_insn (gen_aarch64_cmhs<mode> (mask, operands[4], operands[5]));
 
22644
+      emit_insn (gen_aarch64_cmgeu<mode> (mask, operands[4], operands[5]));
 
22645
       break;
 
22646
 
 
22647
     case LEU:
 
22648
     case GTU:
 
22649
-      emit_insn (gen_aarch64_cmhi<mode> (mask, operands[4], operands[5]));
 
22650
+      emit_insn (gen_aarch64_cmgtu<mode> (mask, operands[4], operands[5]));
 
22651
       break;
 
22652
 
 
22653
     case NE:
 
22654
@@ -3034,48 +3034,181 @@
 
22655
 )
 
22656
 
 
22657
 
 
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.
 
22662
 
 
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")]
 
22669
-          VCMP_S))]
 
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")
 
22674
+         )))]
 
22675
   "TARGET_SIMD"
 
22676
   "@
 
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>")]
 
22683
 )
 
22684
 
 
22685
-;; cm(hs|hi|tst)
 
22686
+(define_insn_and_split "aarch64_cm<optab>di"
 
22687
+  [(set (match_operand:DI 0 "register_operand" "=w,w,r")
 
22688
+       (neg:DI
 
22689
+         (COMPARISONS:DI
 
22690
+           (match_operand:DI 1 "register_operand" "w,w,r")
 
22691
+           (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz,r")
 
22692
+         )))]
 
22693
+  "TARGET_SIMD"
 
22694
+  "@
 
22695
+  cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2>
 
22696
+  cm<optab>\t%d0, %d1, #0
 
22697
+  #"
 
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)
 
22704
+    (compare:CC
 
22705
+      (match_dup 1)
 
22706
+      (match_dup 2)))
 
22707
+  (set (match_dup 0)
 
22708
+    (neg:DI
 
22709
+      (COMPARISONS:DI
 
22710
+       (match_operand 3 "cc_register" "")
 
22711
+       (const_int 0))))]
 
22712
+  {
 
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));
 
22717
+    DONE;
 
22718
+  }
 
22719
+  [(set_attr "simd_type" "simd_cmp")
 
22720
+   (set_attr "simd_mode" "DI")]
 
22721
+)
 
22722
 
 
22723
-(define_insn "aarch64_cm<cmp><mode>"
 
22724
+;; cm(hs|hi)
 
22725
+
 
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")]
 
22731
-          VCMP_U))]
 
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")
 
22736
+         )))]
 
22737
   "TARGET_SIMD"
 
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>")]
 
22742
 )
 
22743
 
 
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")
 
22747
+       (neg:DI
 
22748
+         (UCOMPARISONS:DI
 
22749
+           (match_operand:DI 1 "register_operand" "w,r")
 
22750
+           (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,r")
 
22751
+         )))]
 
22752
+  "TARGET_SIMD"
 
22753
+  "@
 
22754
+  cm<n_optab>\t%d0, %d<cmp_1>, %d<cmp_2>
 
22755
+  #"
 
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)
 
22762
+    (compare:CC
 
22763
+      (match_dup 1)
 
22764
+      (match_dup 2)))
 
22765
+  (set (match_dup 0)
 
22766
+    (neg:DI
 
22767
+      (UCOMPARISONS:DI
 
22768
+       (match_operand 3 "cc_register" "")
 
22769
+       (const_int 0))))]
 
22770
+  {
 
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));
 
22775
+    DONE;
 
22776
+  }
 
22777
+  [(set_attr "simd_type" "simd_cmp")
 
22778
+   (set_attr "simd_mode" "DI")]
 
22779
+)
 
22780
 
 
22781
-(define_insn "aarch64_cm<cmp><mode>"
 
22782
+;; cmtst
 
22783
+
 
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>
 
22788
+           (and:VDQ
 
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)))))]
 
22792
+  "TARGET_SIMD"
 
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>")]
 
22796
+)
 
22797
+
 
22798
+(define_insn_and_split "aarch64_cmtstdi"
 
22799
+  [(set (match_operand:DI 0 "register_operand" "=w,r")
 
22800
+       (neg:DI
 
22801
+         (ne:DI
 
22802
+           (and:DI
 
22803
+             (match_operand:DI 1 "register_operand" "w,r")
 
22804
+             (match_operand:DI 2 "register_operand" "w,r"))
 
22805
+           (const_int 0))))]
 
22806
+  "TARGET_SIMD"
 
22807
+  "@
 
22808
+  cmtst\t%d0, %d1, %d2
 
22809
+  #"
 
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)
 
22816
+       (compare:CC_NZ
 
22817
+        (and:DI (match_dup 1)
 
22818
+                 (match_dup 2))
 
22819
+        (const_int 0)))
 
22820
+  (set (match_dup 0)
 
22821
+    (neg:DI
 
22822
+      (ne:DI
 
22823
+       (match_operand 3 "cc_register" "")
 
22824
+       (const_int 0))))]
 
22825
+  {
 
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));
 
22831
+    DONE;
 
22832
+  }
 
22833
+  [(set_attr "simd_type" "simd_cmp")
 
22834
+   (set_attr "simd_mode" "DI")]
 
22835
+)
 
22836
+
 
22837
+;; fcm(eq|ge|gt|le|lt)
 
22838
+
 
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")]
 
22844
-          VCMP_S))]
 
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")
 
22849
+         )))]
 
22850
   "TARGET_SIMD"
 
22851
   "@
 
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>")]
 
22858
 )
 
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)
 
22863
@@ -31,6 +31,11 @@
 
22864
        (ior (match_operand 0 "register_operand")
 
22865
            (match_test "op == const0_rtx"))))
 
22866
 
 
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)"))))
 
22871
+
 
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)
 
22882
 {
 
22883
-  return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __a,
 
22884
+  return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a,
 
22885
                                                 (int8x8_t) __b);
 
22886
 }
 
22887
 
 
22888
 __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
 
22889
 vcge_u16 (uint16x4_t __a, uint16x4_t __b)
 
22890
 {
 
22891
-  return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __a,
 
22892
+  return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a,
 
22893
                                                  (int16x4_t) __b);
 
22894
 }
 
22895
 
 
22896
 __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
 
22897
 vcge_u32 (uint32x2_t __a, uint32x2_t __b)
 
22898
 {
 
22899
-  return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __a,
 
22900
+  return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a,
 
22901
                                                  (int32x2_t) __b);
 
22902
 }
 
22903
 
 
22904
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
22905
 vcge_u64 (uint64x1_t __a, uint64x1_t __b)
 
22906
 {
 
22907
-  return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a,
 
22908
+  return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __a,
 
22909
                                                (int64x1_t) __b);
 
22910
 }
 
22911
 
 
22912
@@ -19603,28 +19603,28 @@
 
22913
 __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
 
22914
 vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
 
22915
 {
 
22916
-  return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __a,
 
22917
+  return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a,
 
22918
                                                   (int8x16_t) __b);
 
22919
 }
 
22920
 
 
22921
 __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
 
22922
 vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
 
22923
 {
 
22924
-  return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __a,
 
22925
+  return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a,
 
22926
                                                  (int16x8_t) __b);
 
22927
 }
 
22928
 
 
22929
 __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
 
22930
 vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
 
22931
 {
 
22932
-  return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __a,
 
22933
+  return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a,
 
22934
                                                  (int32x4_t) __b);
 
22935
 }
 
22936
 
 
22937
 __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
 
22938
 vcgeq_u64 (uint64x2_t __a, uint64x2_t __b)
 
22939
 {
 
22940
-  return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __a,
 
22941
+  return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a,
 
22942
                                                  (int64x2_t) __b);
 
22943
 }
 
22944
 
 
22945
@@ -19637,7 +19637,7 @@
 
22946
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
22947
 vcged_u64 (uint64x1_t __a, uint64x1_t __b)
 
22948
 {
 
22949
-  return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a,
 
22950
+  return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __a,
 
22951
                                                (int64x1_t) __b);
 
22952
 }
 
22953
 
 
22954
@@ -19676,28 +19676,28 @@
 
22955
 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
 
22956
 vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
 
22957
 {
 
22958
-  return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __a,
 
22959
+  return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a,
 
22960
                                                 (int8x8_t) __b);
 
22961
 }
 
22962
 
 
22963
 __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
 
22964
 vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
 
22965
 {
 
22966
-  return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __a,
 
22967
+  return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a,
 
22968
                                                  (int16x4_t) __b);
 
22969
 }
 
22970
 
 
22971
 __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
 
22972
 vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
 
22973
 {
 
22974
-  return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __a,
 
22975
+  return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a,
 
22976
                                                  (int32x2_t) __b);
 
22977
 }
 
22978
 
 
22979
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
22980
 vcgt_u64 (uint64x1_t __a, uint64x1_t __b)
 
22981
 {
 
22982
-  return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a,
 
22983
+  return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __a,
 
22984
                                                (int64x1_t) __b);
 
22985
 }
 
22986
 
 
22987
@@ -19728,28 +19728,28 @@
 
22988
 __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
 
22989
 vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
 
22990
 {
 
22991
-  return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __a,
 
22992
+  return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a,
 
22993
                                                   (int8x16_t) __b);
 
22994
 }
 
22995
 
 
22996
 __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
 
22997
 vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
 
22998
 {
 
22999
-  return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __a,
 
23000
+  return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a,
 
23001
                                                  (int16x8_t) __b);
 
23002
 }
 
23003
 
 
23004
 __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
 
23005
 vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
 
23006
 {
 
23007
-  return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __a,
 
23008
+  return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a,
 
23009
                                                  (int32x4_t) __b);
 
23010
 }
 
23011
 
 
23012
 __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
 
23013
 vcgtq_u64 (uint64x2_t __a, uint64x2_t __b)
 
23014
 {
 
23015
-  return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __a,
 
23016
+  return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a,
 
23017
                                                  (int64x2_t) __b);
 
23018
 }
 
23019
 
 
23020
@@ -19762,7 +19762,7 @@
 
23021
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
23022
 vcgtd_u64 (uint64x1_t __a, uint64x1_t __b)
 
23023
 {
 
23024
-  return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a,
 
23025
+  return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __a,
 
23026
                                                (int64x1_t) __b);
 
23027
 }
 
23028
 
 
23029
@@ -19801,28 +19801,28 @@
 
23030
 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
 
23031
 vcle_u8 (uint8x8_t __a, uint8x8_t __b)
 
23032
 {
 
23033
-  return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __b,
 
23034
+  return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __b,
 
23035
                                                 (int8x8_t) __a);
 
23036
 }
 
23037
 
 
23038
 __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
 
23039
 vcle_u16 (uint16x4_t __a, uint16x4_t __b)
 
23040
 {
 
23041
-  return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __b,
 
23042
+  return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __b,
 
23043
                                                  (int16x4_t) __a);
 
23044
 }
 
23045
 
 
23046
 __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
 
23047
 vcle_u32 (uint32x2_t __a, uint32x2_t __b)
 
23048
 {
 
23049
-  return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __b,
 
23050
+  return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __b,
 
23051
                                                  (int32x2_t) __a);
 
23052
 }
 
23053
 
 
23054
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
23055
 vcle_u64 (uint64x1_t __a, uint64x1_t __b)
 
23056
 {
 
23057
-  return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __b,
 
23058
+  return (uint64x1_t) __builtin_aarch64_cmgeudi ((int64x1_t) __b,
 
23059
                                                (int64x1_t) __a);
 
23060
 }
 
23061
 
 
23062
@@ -19853,28 +19853,28 @@
 
23063
 __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
 
23064
 vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
 
23065
 {
 
23066
-  return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __b,
 
23067
+  return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __b,
 
23068
                                                   (int8x16_t) __a);
 
23069
 }
 
23070
 
 
23071
 __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
 
23072
 vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
 
23073
 {
 
23074
-  return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __b,
 
23075
+  return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __b,
 
23076
                                                  (int16x8_t) __a);
 
23077
 }
 
23078
 
 
23079
 __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
 
23080
 vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
 
23081
 {
 
23082
-  return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __b,
 
23083
+  return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __b,
 
23084
                                                  (int32x4_t) __a);
 
23085
 }
 
23086
 
 
23087
 __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
 
23088
 vcleq_u64 (uint64x2_t __a, uint64x2_t __b)
 
23089
 {
 
23090
-  return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __b,
 
23091
+  return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __b,
 
23092
                                                  (int64x2_t) __a);
 
23093
 }
 
23094
 
 
23095
@@ -19919,28 +19919,28 @@
 
23096
 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
 
23097
 vclt_u8 (uint8x8_t __a, uint8x8_t __b)
 
23098
 {
 
23099
-  return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __b,
 
23100
+  return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __b,
 
23101
                                                 (int8x8_t) __a);
 
23102
 }
 
23103
 
 
23104
 __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
 
23105
 vclt_u16 (uint16x4_t __a, uint16x4_t __b)
 
23106
 {
 
23107
-  return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __b,
 
23108
+  return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __b,
 
23109
                                                  (int16x4_t) __a);
 
23110
 }
 
23111
 
 
23112
 __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
 
23113
 vclt_u32 (uint32x2_t __a, uint32x2_t __b)
 
23114
 {
 
23115
-  return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __b,
 
23116
+  return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __b,
 
23117
                                                  (int32x2_t) __a);
 
23118
 }
 
23119
 
 
23120
 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
 
23121
 vclt_u64 (uint64x1_t __a, uint64x1_t __b)
 
23122
 {
 
23123
-  return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __b,
 
23124
+  return (uint64x1_t) __builtin_aarch64_cmgtudi ((int64x1_t) __b,
 
23125
                                                (int64x1_t) __a);
 
23126
 }
 
23127
 
 
23128
@@ -19971,28 +19971,28 @@
 
23129
 __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
 
23130
 vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
 
23131
 {
 
23132
-  return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __b,
 
23133
+  return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __b,
 
23134
                                                   (int8x16_t) __a);
 
23135
 }
 
23136
 
 
23137
 __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
 
23138
 vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
 
23139
 {
 
23140
-  return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __b,
 
23141
+  return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __b,
 
23142
                                                  (int16x8_t) __a);
 
23143
 }
 
23144
 
 
23145
 __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
 
23146
 vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
 
23147
 {
 
23148
-  return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __b,
 
23149
+  return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __b,
 
23150
                                                  (int32x4_t) __a);
 
23151
 }
 
23152
 
 
23153
 __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
 
23154
 vcltq_u64 (uint64x2_t __a, uint64x2_t __b)
 
23155
 {
 
23156
-  return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __b,
 
23157
+  return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __b,
 
23158
                                                  (int64x2_t) __a);
 
23159
 }
 
23160
 
 
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")]
 
23167
 )
 
23168
 
 
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)
 
23187
 
 
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)
 
23195
        {
 
23196
          emit_move_insn (gen_rtx_REG (Pmode, regnum),
 
23197
-                         GEN_INT ((~val) & 0xffff));
 
23198
+                         GEN_INT (val | ~(HOST_WIDE_INT) 0xffff));
 
23199
          tval = 0xffff;
 
23200
        }
 
23201
       else
 
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)
 
23206
@@ -83,6 +83,9 @@
 
23207
 ;; Vector Float modes.
 
23208
 (define_mode_iterator VDQF [V2SF V4SF V2DF])
 
23209
 
 
23210
+;; All Float modes.
 
23211
+(define_mode_iterator VALLF [V2SF V4SF V2DF SF DF])
 
23212
+
 
23213
 ;; Vector Float modes with 2 elements.
 
23214
 (define_mode_iterator V2F [V2SF V2DF])
 
23215
 
 
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 @@
 
23239
 
 
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")
 
23248
                         (DI   "")    (SI   "")
 
23249
                         (HI   "")    (QI   "")
 
23250
-                        (TI   "")])
 
23251
+                        (TI   "")    (SF   "")
 
23252
+                        (DF   "")])
 
23253
 
 
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")
 
23260
-                               (V2DF "V2DI")])
 
23261
+                               (V2DF "V2DI") (DF    "DI")
 
23262
+                               (SF   "SI")])
 
23263
 
 
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")
 
23270
-                               (V2DF "v2di")])
 
23271
+                               (V2DF "v2di") (DF    "di")
 
23272
+                               (SF   "si")])
 
23273
 
 
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])
 
23279
 
 
23280
+;; Comparison operators for <F>CM.
 
23281
+(define_code_iterator COMPARISONS [lt le eq ge gt])
 
23282
+
 
23283
+;; Unsigned comparison operators.
 
23284
+(define_code_iterator UCOMPARISONS [ltu leu geu gtu])
 
23285
+
 
23286
 ;; -------------------------------------------------------------------
 
23287
 ;; Code Attributes
 
23288
 ;; -------------------------------------------------------------------
 
23289
@@ -571,8 +576,29 @@
 
23290
                         (eq "eq")
 
23291
                         (ne "ne")
 
23292
                         (lt "lt")
 
23293
-                        (ge "ge")])
 
23294
+                        (ge "ge")
 
23295
+                        (le "le")
 
23296
+                        (gt "gt")
 
23297
+                        (ltu "ltu")
 
23298
+                        (leu "leu")
 
23299
+                        (geu "geu")
 
23300
+                        (gtu "gtu")])
 
23301
 
 
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.
 
23306
+
 
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")])
 
23313
+
 
23314
+(define_code_attr CMP [(lt "LT") (le "LE") (eq "EQ") (ge "GE") (gt "GT")
 
23315
+                          (ltu "LTU") (leu "LEU") (geu "GEU") (gtu "GTU")])
 
23316
+
 
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])
 
23323
 
 
23324
-(define_int_iterator VCMP_S [UNSPEC_CMEQ UNSPEC_CMGE UNSPEC_CMGT
 
23325
-                            UNSPEC_CMLE UNSPEC_CMLT])
 
23326
-
 
23327
-(define_int_iterator VCMP_U [UNSPEC_CMHS UNSPEC_CMHI UNSPEC_CMTST])
 
23328
-
 
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")])
 
23335
 
 
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")])
 
23341
-
 
23342
 (define_int_attr offsetlr [(UNSPEC_SSLI        "1") (UNSPEC_USLI "1")
 
23343
                           (UNSPEC_SSRI "0") (UNSPEC_USRI "0")])
 
23344
 
 
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 @@
 
23350
       break;
 
23351
 
 
23352
     case TFmode:
 
23353
-    case TDmode:
 
23354
-    case TImode:
 
23355
       if (TARGET_E500_DOUBLE)
 
23356
        return (SPE_CONST_OFFSET_OK (offset)
 
23357
                && SPE_CONST_OFFSET_OK (offset + 8));
 
23358
+      /* fall through */
 
23359
 
 
23360
+    case TDmode:
 
23361
+    case TImode:
 
23362
       extra = 8;
 
23363
       if (!worst_case)
 
23364
        break;
 
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"))
 
23371
                    (const_int 0)))
 
23372
    (clobber (match_scratch:SI 3 "=r,r"))]
 
23373
-  ""
 
23374
+  "TARGET_32BIT"
 
23375
   "@
 
23376
    mullw. %3,%1,%2
 
23377
    #"
 
23378
@@ -2425,7 +2425,7 @@
 
23379
                             (match_operand:SI 2 "gpc_reg_operand" ""))
 
23380
                    (const_int 0)))
 
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)))
 
23386
    (set (match_dup 0)
 
23387
@@ -2440,7 +2440,7 @@
 
23388
                    (const_int 0)))
 
23389
    (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
 
23390
        (mult:SI (match_dup 1) (match_dup 2)))]
 
23391
-  ""
 
23392
+  "TARGET_32BIT"
 
23393
   "@
 
23394
    mullw. %0,%1,%2
 
23395
    #"
 
23396
@@ -2454,7 +2454,7 @@
 
23397
                    (const_int 0)))
 
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)))
 
23404
    (set (match_dup 3)
 
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)
 
23411
     {
 
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))
 
23416
        {
 
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;
 
23421
              start_sequence ();
 
23422
 
 
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));
 
23428
+             else
 
23429
+               arm_load_pic_register (0UL);
 
23430
 
 
23431
              seq = get_insns ();
 
23432
              end_sequence ();
 
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));
 
23436
            }
 
23437
+         else if (arm_pic_register != INVALID_REGNUM
 
23438
+                  && arm_pic_register > LAST_LO_REGNUM
 
23439
+                  && REGNO (pic_reg) <= LAST_LO_REGNUM)
 
23440
+           {
 
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));
 
23444
+           }
 
23445
          else
 
23446
            emit_insn (gen_pic_load_addr_unified (pic_reg, pic_rtx, labelno));
 
23447
        }
 
23448
@@ -21279,7 +21293,11 @@
 
23449
                                                    type_mode);
 
23450
             }
 
23451
 
 
23452
-          op[argc] = expand_normal (arg[argc]);
 
23453
+         /* Use EXPAND_MEMORY for NEON_ARG_MEMORY to ensure a MEM_P
 
23454
+            be returned.  */
 
23455
+         op[argc] = expand_expr (arg[argc], NULL_RTX, VOIDmode,
 
23456
+                                 (thisarg == NEON_ARG_MEMORY
 
23457
+                                  ? EXPAND_MEMORY : EXPAND_NORMAL));
 
23458
 
 
23459
           switch (thisarg)
 
23460
             {
 
23461
@@ -21298,6 +21316,9 @@
 
23462
               break;
 
23463
 
 
23464
             case NEON_ARG_MEMORY:
 
23465
+             /* Check if expand failed.  */
 
23466
+             if (op[argc] == const0_rtx)
 
23467
+               return 0;
 
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)
 
23474
     {
 
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 @@
 
23480
 
 
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)));
 
23487
 
 
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>")]
 
23500
 )
 
23501
 
 
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")]
 
23509
 )
 
23510
 
 
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")]
 
23519
 )
 
23520
 
 
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 @@
 
23527
 
 
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)
 
23536
                   (const_int 4))))
 
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)
 
23540
                   (const_int 8))))
 
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 @@
 
23547
 
 
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)
 
23556
                   (const_int 4))))
 
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)
 
23560
                   (const_int 8))))
 
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)
 
23576
                   (const_int 4))))
 
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)
 
23580
                   (const_int 8))))
 
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)
 
23596
                   (const_int 4))))
 
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)
 
23600
                   (const_int 8))))
 
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")])
 
23660
 
 
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")
 
23666
                   (const_int 4))))
 
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)
 
23670
                   (const_int 8))))
 
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)
 
23674
                   (const_int 12))))
 
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)
 
23687
                   (const_int 4))))
 
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)
 
23691
                   (const_int 8))))
 
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)
 
23695
                   (const_int 12))))
 
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 @@
 
23738
 
 
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")
 
23744
                   (const_int -12))))
 
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)
 
23748
                   (const_int -8))))
 
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)
 
23752
                   (const_int -4))))
 
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)
 
23765
                   (const_int -12))))
 
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)
 
23769
                   (const_int -8))))
 
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)
 
23773
                   (const_int -4))))
 
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 @@
 
23816
 
 
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")
 
23822
                   (const_int -16))))
 
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)
 
23826
                   (const_int -12))))
 
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)
 
23830
                   (const_int -8))))
 
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)
 
23843
                   (const_int -16))))
 
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)
 
23847
                   (const_int -12))))
 
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)
 
23851
                   (const_int -8))))
 
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 @@
 
23894
 
 
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)
 
23903
                   (const_int 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 @@
 
23910
 
 
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)
 
23919
                   (const_int 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)
 
23935
                   (const_int 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)
 
23951
                   (const_int 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")])
 
24002
 
 
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")
 
24008
                   (const_int 4))))
 
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)
 
24012
                   (const_int 8))))
 
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)
 
24025
                   (const_int 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)
 
24029
                   (const_int 8))))
 
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 @@
 
24066
 
 
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")
 
24072
                   (const_int -8))))
 
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)
 
24076
                   (const_int -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)
 
24089
                   (const_int -8))))
 
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)
 
24093
                   (const_int -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 @@
 
24130
 
 
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")
 
24136
                   (const_int -12))))
 
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)
 
24140
                   (const_int -8))))
 
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)
 
24153
                   (const_int -12))))
 
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)
 
24157
                   (const_int -8))))
 
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 @@
 
24194
 
 
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 @@
 
24206
 
 
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")])
 
24277
 
 
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")
 
24283
                   (const_int 4))))
 
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)
 
24296
                   (const_int 4))))
 
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 @@
 
24327
 
 
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")
 
24333
                   (const_int -4))))
 
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)
 
24346
                   (const_int -4))))
 
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 @@
 
24377
 
 
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")
 
24383
                   (const_int -8))))
 
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)
 
24396
                   (const_int -8))))
 
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));
 
24432
 })
 
24433
 
 
24434
-;; Any hard register.
 
24435
-(define_predicate "arm_hard_register_operand"
 
24436
+;; Any general register.
 
24437
+(define_predicate "arm_hard_general_register_operand"
 
24438
   (match_code "reg")
 
24439
 {
 
24440
-  return REGNO (op) < FIRST_PSEUDO_REGISTER;
 
24441
+  return REGNO (op) <= LAST_ARM_REGNUM;
 
24442
 })
 
24443
 
 
24444
 ;; A low register.
 
24445
@@ -76,6 +76,12 @@
 
24446
                  && REGNO_REG_CLASS (REGNO (op)) == VFP_REGS)));
 
24447
 })
 
24448
 
 
24449
+(define_predicate "vfp_hard_register_operand"
 
24450
+  (match_code "reg")
 
24451
+{
 
24452
+  return (IS_VFP_REGNUM (REGNO (op)));
 
24453
+})
 
24454
+
 
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)
 
24465
 
 
24466
+let reg_predicate thumb =
 
24467
+  if thumb then "low_register_operand" else "arm_hard_general_register_operand"
 
24468
+
 
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);
 
24477
@@ -84,7 +87,7 @@
 
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)
 
24483
 
 
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")])
 
24493
 
 
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")])
 
24497
+
 
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"
 
24513
   "*
 
24514
@@ -11270,7 +11270,9 @@
 
24515
             (match_operand:SI 1 "" "")
 
24516
             (match_operand:SI 2 "" ""))]
 
24517
   "TARGET_32BIT && arm_arch5e"
 
24518
-  "pld\\t%a0")
 
24519
+  "pld\\t%a0"
 
24520
+  [(set_attr "type" "load1")]
 
24521
+)
 
24522
 
 
24523
 ;; General predication pattern
 
24524
 
 
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 @@
 
24530
 
 
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
 
24541
-             && strict
 
24542
+             && (strict || !(reload_in_progress || reload_completed))
 
24543
              && mode != QImode
 
24544
              && mode != HImode)
 
24545
            return false;
 
24546
@@ -10588,8 +10588,7 @@
 
24547
            return true;
 
24548
 
 
24549
          if (!INT14_OK_STRICT
 
24550
-             && reload_in_progress
 
24551
-             && strict
 
24552
+             && (strict || !(reload_in_progress || reload_completed))
 
24553
              && mode != QImode
 
24554
              && mode != HImode)
 
24555
            return false;
 
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)
 
24562
       {
 
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)
 
24578
          cpu = "sb1";
 
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)
 
24584
@@ -73,6 +73,11 @@
 
24585
   UNSPEC_STORE_LEFT
 
24586
   UNSPEC_STORE_RIGHT
 
24587
 
 
24588
+  ;; Integer operations that are too cumbersome to describe directly.
 
24589
+  UNSPEC_WSBH
 
24590
+  UNSPEC_DSBH
 
24591
+  UNSPEC_DSHD
 
24592
+
 
24593
   ;; Floating-point moves.
 
24594
   UNSPEC_LOAD_LOW
 
24595
   UNSPEC_LOAD_HIGH
 
24596
@@ -1294,20 +1299,32 @@
 
24597
 
 
24598
 ;; Combiner patterns for unsigned byte-add.
 
24599
 
 
24600
-(define_insn "*baddu_si"
 
24601
+(define_insn "*baddu_si_eb"
 
24602
   [(set (match_operand:SI 0 "register_operand" "=d")
 
24603
         (zero_extend:SI
 
24604
-        (plus:QI (match_operand:QI 1 "register_operand" "d")
 
24605
-                 (match_operand:QI 2 "register_operand" "d"))))]
 
24606
-  "ISA_HAS_BADDU"
 
24607
+        (subreg:QI
 
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"
 
24611
   "baddu\\t%0,%1,%2"
 
24612
   [(set_attr "alu_type" "add")])
 
24613
 
 
24614
+(define_insn "*baddu_si_el"
 
24615
+  [(set (match_operand:SI 0 "register_operand" "=d")
 
24616
+        (zero_extend:SI
 
24617
+        (subreg:QI
 
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")])
 
24623
+
 
24624
 (define_insn "*baddu_di<mode>"
 
24625
   [(set (match_operand:GPR 0 "register_operand" "=d")
 
24626
         (zero_extend:GPR
 
24627
-        (plus:QI (truncate:QI (match_operand:DI 1 "register_operand" "d"))
 
24628
-                 (truncate:QI (match_operand:DI 2 "register_operand" "d")))))]
 
24629
+        (truncate:QI
 
24630
+         (plus:DI (match_operand:DI 1 "register_operand" "d")
 
24631
+                  (match_operand:DI 2 "register_operand" "d")))))]
 
24632
   "ISA_HAS_BADDU && TARGET_64BIT"
 
24633
   "baddu\\t%0,%1,%2"
 
24634
   [(set_attr "alu_type" "add")])
 
24635
@@ -5367,6 +5384,56 @@
 
24636
 }
 
24637
   [(set_attr "type" "shift")
 
24638
    (set_attr "mode" "<MODE>")])
 
24639
+
 
24640
+(define_insn "bswaphi2"
 
24641
+  [(set (match_operand:HI 0 "register_operand" "=d")
 
24642
+       (bswap:HI (match_operand:HI 1 "register_operand" "d")))]
 
24643
+  "ISA_HAS_WSBH"
 
24644
+  "wsbh\t%0,%1"
 
24645
+  [(set_attr "type" "shift")])
 
24646
+
 
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"
 
24651
+  "#"
 
24652
+  ""
 
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)))]
 
24655
+  ""
 
24656
+  [(set_attr "length" "8")])
 
24657
+
 
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"
 
24662
+  "#"
 
24663
+  ""
 
24664
+  [(set (match_dup 0) (unspec:DI [(match_dup 1)] UNSPEC_DSBH))
 
24665
+   (set (match_dup 0) (unspec:DI [(match_dup 0)] UNSPEC_DSHD))]
 
24666
+  ""
 
24667
+  [(set_attr "length" "8")])
 
24668
+
 
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))]
 
24672
+  "ISA_HAS_WSBH"
 
24673
+  "wsbh\t%0,%1"
 
24674
+  [(set_attr "type" "shift")])
 
24675
+
 
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"
 
24680
+  "dsbh\t%0,%1"
 
24681
+  [(set_attr "type" "shift")])
 
24682
+
 
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"
 
24687
+  "dshd\t%0,%1"
 
24688
+  [(set_attr "type" "shift")])
 
24689
 
 
24690
 ;;
 
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 @@
 
24697
     }
 
24698
 }
 
24699
 
 
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.  */
 
24702
-
 
24703
-static int
 
24704
-mips_truncated_op_cost (rtx x, bool speed)
 
24705
-{
 
24706
-  if (GET_CODE (x) == TRUNCATE)
 
24707
-    x = XEXP (x, 0);
 
24708
-  return set_src_cost (x, speed);
 
24709
-}
 
24710
-
 
24711
 /* Implement TARGET_RTX_COSTS.  */
 
24712
 
 
24713
 static bool
 
24714
@@ -3951,13 +3940,12 @@
 
24715
     case ZERO_EXTEND:
 
24716
       if (outer_code == SET
 
24717
          && ISA_HAS_BADDU
 
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)
 
24723
        {
 
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);
 
24729
          return true;
 
24730
        }
 
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)                  \
 
24738
                                 && !TARGET_MIPS16)
 
24739
 
 
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)
 
24744
+
 
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;
 
24755
       rtx set;
 
24756
+      rtx link;
 
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);
 
24763
 
 
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))
 
24767
+       {
 
24768
+         if (REG_NOTE_KIND (link) == REG_UNUSED)
 
24769
+           {
 
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.  */
 
24775
+             if (set
 
24776
+                 && reg_overlap_mentioned_p (XEXP (link, 0), SET_SRC (set)))
 
24777
+               set = NULL;
 
24778
+           }
 
24779
+       }
 
24780
+
 
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 @@
 
24789
 fi
 
24790
 
 
24791
 
 
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
 
24794
 do :
 
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 \
 
24815
        runtime/go-cgo.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 \
 
24822
-       syslist.go
 
24823
+       go/go/build/syslist.go
 
24824
 
 
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
 
24838
 
 
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
 
24845
+
 
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 @@
 
24850
        @$(CHECK)
 
24851
 .PHONY: go/build/check
 
24852
 
 
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
 
24860
-       $(STAMP) $@
 
24861
-
 
24862
 @go_include@ go/doc.lo.dep
 
24863
 go/doc.lo.dep: $(go_go_doc_files)
 
24864
        $(BUILDDEPS)
 
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)
 
24869
@@ -27,6 +27,7 @@
 
24870
   n->__pfn = pfn;
 
24871
   n->__arg = arg;
 
24872
   n->__retaddr = NULL;
 
24873
+  n->__makefunc_can_recover = 0;
 
24874
   g->defer = n;
 
24875
 }
 
24876
 
 
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)
 
24881
@@ -34,4 +34,10 @@
 
24882
      set by __go_set_defer_retaddr which is called by the thunks
 
24883
      created by defer statements.  */
 
24884
   const void *__retaddr;
 
24885
+
 
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
 
24889
+     useful.  */
 
24890
+  _Bool __makefunc_can_recover;
 
24891
 };
 
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)
 
24896
@@ -30,6 +30,8 @@
 
24897
 
 
24898
       if (v < 0 || v > 0x10ffff)
 
24899
        v = 0xfffd;
 
24900
+      else if (0xd800 <= v && v <= 0xdfff)
 
24901
+       v = 0xfffd;
 
24902
 
 
24903
       if (v <= 0x7f)
 
24904
        slen += 1;
 
24905
@@ -56,6 +58,8 @@
 
24906
         character.  */
 
24907
       if (v < 0 || v > 0x10ffff)
 
24908
        v = 0xfffd;
 
24909
+      else if (0xd800 <= v && v <= 0xdfff)
 
24910
+       v = 0xfffd;
 
24911
 
 
24912
       if (v <= 0x7f)
 
24913
        *s++ = v;
 
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)
 
24918
@@ -43,6 +43,17 @@
 
24919
 }
 
24920
 #endif
 
24921
 
 
24922
+#ifndef HAVE_DUP3
 
24923
+int
 
24924
+dup3 (int oldfd __attribute__ ((unused)),
 
24925
+      int newfd __attribute__ ((unused)),
 
24926
+      int flags __attribute__ ((unused)))
 
24927
+{
 
24928
+  errno = ENOSYS;
 
24929
+  return -1;
 
24930
+}
 
24931
+#endif
 
24932
+
 
24933
 #ifndef HAVE_EPOLL_CREATE1
 
24934
 int
 
24935
 epoll_create1 (int flags __attribute__ ((unused)))
 
24936
@@ -112,6 +123,18 @@
 
24937
 }
 
24938
 #endif
 
24939
 
 
24940
+#ifndef HAVE_GETXATTR
 
24941
+ssize_t
 
24942
+getxattr (const char *path __attribute__ ((unused)),
 
24943
+         const char *name __attribute__ ((unused)),
 
24944
+         void *value __attribute__ ((unused)),
 
24945
+         size_t size __attribute__ ((unused)))
 
24946
+{
 
24947
+  errno = ENOSYS;
 
24948
+  return -1;
 
24949
+}
 
24950
+#endif
 
24951
+
 
24952
 #ifndef HAVE_INOTIFY_ADD_WATCH
 
24953
 int
 
24954
 inotify_add_watch (int fd __attribute__ ((unused)),
 
24955
@@ -151,6 +174,17 @@
 
24956
 }
 
24957
 #endif
 
24958
 
 
24959
+#ifndef HAVE_LISTXATTR
 
24960
+ssize_t
 
24961
+listxattr (const char *path __attribute__ ((unused)),
 
24962
+          char *list __attribute__ ((unused)),
 
24963
+          size_t size __attribute__ ((unused)))
 
24964
+{
 
24965
+  errno = ENOSYS;
 
24966
+  return -1;
 
24967
+}
 
24968
+#endif
 
24969
+
 
24970
 #ifndef HAVE_MKDIRAT
 
24971
 int
 
24972
 mkdirat (int dirfd __attribute__ ((unused)),
 
24973
@@ -196,6 +230,16 @@
 
24974
 }
 
24975
 #endif
 
24976
 
 
24977
+#ifndef HAVE_REMOVEXATTR
 
24978
+int
 
24979
+removexattr (const char *path __attribute__ ((unused)),
 
24980
+            const char *name __attribute__ ((unused)))
 
24981
+{
 
24982
+  errno = ENOSYS;
 
24983
+  return -1;
 
24984
+}
 
24985
+#endif
 
24986
+
 
24987
 #ifndef HAVE_RENAMEAT
 
24988
 int
 
24989
 renameat (int olddirfd __attribute__ ((unused)),
 
24990
@@ -208,6 +252,19 @@
 
24991
 }
 
24992
 #endif
 
24993
 
 
24994
+#ifndef HAVE_SETXATTR
 
24995
+int
 
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)))
 
25001
+{
 
25002
+  errno = ENOSYS;
 
25003
+  return -1;
 
25004
+}
 
25005
+#endif
 
25006
+
 
25007
 #ifndef HAVE_SPLICE
 
25008
 int
 
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 @@
 
25015
 };
 
25016
 void   runtime_hashinit(void);
 
25017
 
 
25018
-void   runtime_traceback();
 
25019
+void   runtime_traceback(void);
 
25020
 void   runtime_tracebackothers(G*);
 
25021
 
 
25022
 /*
 
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;
 
25028
 
 
25029
 int32 getproccount(void);
 
25030
 
 
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)
 
25037
                return;
 
25038
 
 
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.
 
25044
+               return;
 
25045
+       }
 
25046
+
 
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;
 
25057
        x = k;
 
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)
 
25063
                return false;
 
25064
@@ -418,8 +417,7 @@
 
25065
                        // (Manually inlined copy of MHeap_LookupMaybe.)
 
25066
                        k = (uintptr)obj>>PageShift;
 
25067
                        x = k;
 
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)
 
25073
                                continue;
 
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];
 
25082
 
 
25083
                        PREFETCH(obj);
 
25084
@@ -585,8 +582,7 @@
 
25085
        if(t == nil)
 
25086
                return;
 
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 @@
 
25099
          G *g;
 
25100
 
 
25101
          g = runtime_g ();
 
25102
-         runtime_traceback (g);
 
25103
+         runtime_traceback ();
 
25104
          runtime_tracebackothers (g);
 
25105
 
 
25106
          /* The gc library calls runtime_dumpregs here, and provides
 
25107
@@ -399,6 +399,9 @@
 
25108
 {
 
25109
   G *gp;
 
25110
   M *mp;
 
25111
+#ifdef USING_SPLIT_STACK
 
25112
+  void *stack_context[10];
 
25113
+#endif
 
25114
 
 
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 @@
 
25118
   if (gp != NULL)
 
25119
     {
 
25120
 #ifdef USING_SPLIT_STACK
 
25121
-      __splitstack_getcontext (&gp->stack_context[0]);
 
25122
+      __splitstack_getcontext (&stack_context[0]);
 
25123
 #endif
 
25124
     }
 
25125
 
 
25126
@@ -432,7 +435,7 @@
 
25127
   if (gp != NULL)
 
25128
     {
 
25129
 #ifdef USING_SPLIT_STACK
 
25130
-      __splitstack_setcontext (&gp->stack_context[0]);
 
25131
+      __splitstack_setcontext (&stack_context[0]);
 
25132
 #endif
 
25133
     }
 
25134
 }
 
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)
 
25139
@@ -11,6 +11,13 @@
 
25140
 #include "runtime.h"
 
25141
 #include "array.h"
 
25142
 
 
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.  */
 
25147
+
 
25148
+uint32 runtime_in_callers;
 
25149
+
 
25150
 /* Argument passed to callback function.  */
 
25151
 
 
25152
 struct callers_data
 
25153
@@ -111,8 +118,10 @@
 
25154
   data.skip = skip + 1;
 
25155
   data.index = 0;
 
25156
   data.max = m;
 
25157
+  runtime_xadd (&runtime_in_callers, 1);
 
25158
   backtrace_full (__go_get_backtrace_state (), 0, callback, error_callback,
 
25159
                  &data);
 
25160
+  runtime_xadd (&runtime_in_callers, -1);
 
25161
   return data.index;
 
25162
 }
 
25163
 
 
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)
 
25168
@@ -0,0 +1,46 @@
 
25169
+/* go-cdiv.c -- complex division routines
 
25170
+
 
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.  */
 
25174
+
 
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.  */
 
25183
+
 
25184
+__complex float
 
25185
+__go_complex64_div (__complex float a, __complex float b)
 
25186
+{
 
25187
+  if (__builtin_expect (b == 0+0i, 0))
 
25188
+    {
 
25189
+      if (!__builtin_isinff (__real__ a)
 
25190
+         && !__builtin_isinff (__imag__ a)
 
25191
+         && (__builtin_isnanf (__real__ a) || __builtin_isnanf (__imag__ a)))
 
25192
+       {
 
25193
+         /* Pass "1" to nanf to match math/bits.go.  */
 
25194
+         return __builtin_nanf("1") + __builtin_nanf("1")*1i;
 
25195
+       }
 
25196
+    }
 
25197
+  return a / b;
 
25198
+}
 
25199
+
 
25200
+__complex double
 
25201
+__go_complex128_div (__complex double a, __complex double b)
 
25202
+{
 
25203
+  if (__builtin_expect (b == 0+0i, 0))
 
25204
+    {
 
25205
+      if (!__builtin_isinf (__real__ a)
 
25206
+         && !__builtin_isinf (__imag__ a)
 
25207
+         && (__builtin_isnan (__real__ a) || __builtin_isnan (__imag__ a)))
 
25208
+       {
 
25209
+         /* Pass "1" to nan to match math/bits.go.  */
 
25210
+         return __builtin_nan("1") + __builtin_nan("1")*1i;
 
25211
+       }
 
25212
+    }
 
25213
+  return a / b;
 
25214
+}
 
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)
 
25219
@@ -98,9 +98,12 @@
 
25220
   const struct __go_struct_field *fields;
 
25221
   int i;
 
25222
 
 
25223
+  field_count = descriptor->__fields.__count;
 
25224
+  if (field_count == 0) {
 
25225
+    return &ffi_type_void;
 
25226
+  }
 
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.  */
 
25239
 
 
25240
 _Bool
 
25241
-__go_can_recover (const void* retaddr)
 
25242
+__go_can_recover (const void *retaddr)
 
25243
 {
 
25244
   G *g;
 
25245
   struct __go_defer_stack *d;
 
25246
   const char* ret;
 
25247
   const char* dret;
 
25248
+  Location loc;
 
25249
+  const byte *name;
 
25250
 
 
25251
   g = runtime_g ();
 
25252
 
 
25253
@@ -52,9 +54,80 @@
 
25254
 #endif
 
25255
 
 
25256
   dret = (const char *) d->__retaddr;
 
25257
-  return ret <= dret && ret + 16 >= dret;
 
25258
+  if (ret <= dret && ret + 16 >= dret)
 
25259
+    return 1;
 
25260
+
 
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)
 
25265
+    return 0;
 
25266
+
 
25267
+  if (runtime_callers (2, &loc, 1) < 1)
 
25268
+    return 0;
 
25269
+
 
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)
 
25273
+    return 1;
 
25274
+
 
25275
+  if (loc.function.len < 4)
 
25276
+    return 0;
 
25277
+  name = loc.function.str;
 
25278
+  if (*name == '_')
 
25279
+    {
 
25280
+      if (loc.function.len < 5)
 
25281
+       return 0;
 
25282
+      ++name;
 
25283
+    }
 
25284
+
 
25285
+  if (name[0] == 'f' && name[1] == 'f' && name[2] == 'i' && name[3] == '_')
 
25286
+    return 1;
 
25287
+
 
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)
 
25291
+    return 1;
 
25292
+
 
25293
+  return 0;
 
25294
 }
 
25295
 
 
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.  */
 
25300
+
 
25301
+void
 
25302
+__go_makefunc_can_recover (const void *retaddr)
 
25303
+{
 
25304
+  struct __go_defer_stack *d;
 
25305
+
 
25306
+  d = runtime_g ()->defer;
 
25307
+  if (d != NULL
 
25308
+      && !d->__makefunc_can_recover
 
25309
+      && __go_can_recover (retaddr))
 
25310
+    d->__makefunc_can_recover = 1;
 
25311
+}
 
25312
+
 
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.  */
 
25321
+
 
25322
+void
 
25323
+__go_makefunc_returning (void)
 
25324
+{
 
25325
+  struct __go_defer_stack *d;
 
25326
+
 
25327
+  d = runtime_g ()->defer;
 
25328
+  if (d != NULL)
 
25329
+    d->__makefunc_can_recover = 0;
 
25330
+}
 
25331
+
 
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.  */
 
25334
 
 
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 @@
 
25340
 
 
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];
 
25347
 
 
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)
 
25353
@@ -34,7 +34,10 @@
 
25354
   std = (const struct __go_slice_type *) td;
 
25355
 
 
25356
   ilen = (intgo) len;
 
25357
-  if (ilen < 0 || (uintptr_t) ilen != len)
 
25358
+  if (ilen < 0
 
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");
 
25363
 
 
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);
 
25371
                s->npages = npage;
 
25372
                p = t->start;
 
25373
-               if(sizeof(void*) == 8)
 
25374
-                       p -= ((uintptr)h->arena_start>>PageShift);
 
25375
+               p -= ((uintptr)h->arena_start>>PageShift);
 
25376
                if(p > 0)
 
25377
                        h->map[p-1] = s;
 
25378
                h->map[p] = t;
 
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;
 
25382
        p = s->start;
 
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++)
 
25387
                h->map[p+n] = s;
 
25388
        return s;
 
25389
@@ -241,8 +239,7 @@
 
25390
        mstats.mspan_sys = h->spanalloc.sys;
 
25391
        runtime_MSpan_Init(s, (uintptr)v>>PageShift, ask>>PageShift);
 
25392
        p = s->start;
 
25393
-       if(sizeof(void*) == 8)
 
25394
-               p -= ((uintptr)h->arena_start>>PageShift);
 
25395
+       p -= ((uintptr)h->arena_start>>PageShift);
 
25396
        h->map[p] = s;
 
25397
        h->map[p + s->npages - 1] = s;
 
25398
        s->state = MSpanInUse;
 
25399
@@ -259,8 +256,7 @@
 
25400
        uintptr p;
 
25401
        
 
25402
        p = (uintptr)v;
 
25403
-       if(sizeof(void*) == 8)
 
25404
-               p -= (uintptr)h->arena_start;
 
25405
+       p -= (uintptr)h->arena_start;
 
25406
        return h->map[p >> PageShift];
 
25407
 }
 
25408
 
 
25409
@@ -281,8 +277,7 @@
 
25410
                return nil;
 
25411
        p = (uintptr)v>>PageShift;
 
25412
        q = p;
 
25413
-       if(sizeof(void*) == 8)
 
25414
-               q -= (uintptr)h->arena_start >> PageShift;
 
25415
+       q -= (uintptr)h->arena_start >> PageShift;
 
25416
        s = h->map[q];
 
25417
        if(s == nil || p < s->start || p - s->start >= s->npages)
 
25418
                return nil;
 
25419
@@ -332,8 +327,7 @@
 
25420
 
 
25421
        // Coalesce with earlier, later spans.
 
25422
        p = s->start;
 
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}
 
25436
 
 
25437
+# The PRIO constants.
 
25438
+grep '^const _PRIO_' gen-sysinfo.go | \
 
25439
+  sed -e 's/^\(const \)_\(PRIO_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
 
25440
+
 
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)
 
25448
@@ -39,6 +39,9 @@
 
25449
 /* Define to 1 if you have the `dl_iterate_phdr' function. */
 
25450
 #undef HAVE_DL_ITERATE_PHDR
 
25451
 
 
25452
+/* Define to 1 if you have the `dup3' function. */
 
25453
+#undef HAVE_DUP3
 
25454
+
 
25455
 /* Define to 1 if you have the `epoll_create1' function. */
 
25456
 #undef HAVE_EPOLL_CREATE1
 
25457
 
 
25458
@@ -66,6 +69,9 @@
 
25459
 /* Define if _Unwind_GetIPInfo is available. */
 
25460
 #undef HAVE_GETIPINFO
 
25461
 
 
25462
+/* Define to 1 if you have the `getxattr' function. */
 
25463
+#undef HAVE_GETXATTR
 
25464
+
 
25465
 /* Define to 1 if you have the `inotify_add_watch' function. */
 
25466
 #undef HAVE_INOTIFY_ADD_WATCH
 
25467
 
 
25468
@@ -111,6 +117,9 @@
 
25469
 /* Define to 1 if you have the <linux/rtnetlink.h> header file. */
 
25470
 #undef HAVE_LINUX_RTNETLINK_H
 
25471
 
 
25472
+/* Define to 1 if you have the `listxattr' function. */
 
25473
+#undef HAVE_LISTXATTR
 
25474
+
 
25475
 /* Define to 1 if the system has the type `loff_t'. */
 
25476
 #undef HAVE_LOFF_T
 
25477
 
 
25478
@@ -171,6 +180,9 @@
 
25479
 /* Define to 1 if you have the `pipe2' function. */
 
25480
 #undef HAVE_PIPE2
 
25481
 
 
25482
+/* Define to 1 if you have the `removexattr' function. */
 
25483
+#undef HAVE_REMOVEXATTR
 
25484
+
 
25485
 /* Define to 1 if you have the `renameat' function. */
 
25486
 #undef HAVE_RENAMEAT
 
25487
 
 
25488
@@ -180,6 +192,9 @@
 
25489
 /* Define to 1 if you have the `setenv' function. */
 
25490
 #undef HAVE_SETENV
 
25491
 
 
25492
+/* Define to 1 if you have the `setxattr' function. */
 
25493
+#undef HAVE_SETXATTR
 
25494
+
 
25495
 /* Define to 1 if you have the `sinl' function. */
 
25496
 #undef HAVE_SINL
 
25497
 
 
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)
 
25505
 
 
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)
 
25508
 AC_TYPE_OFF_T
 
25509
 AC_CHECK_TYPES([loff_t])
 
25510
 
 
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)
 
25515
@@ -98,6 +98,7 @@
 
25516
        flagIndir
 
25517
        flagAddr
 
25518
        flagMethod
 
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 {
 
25525
                nin++
 
25526
        }
 
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)
 
25530
        off := 0
 
25531
        if v.flag&flagMethod != 0 {
 
25532
@@ -484,33 +485,6 @@
 
25533
        return ret
 
25534
 }
 
25535
 
 
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 {
 
25541
-               return false
 
25542
-       }
 
25543
-       s := *t.string
 
25544
-       parens := 0
 
25545
-       params := 0
 
25546
-       sawRet := false
 
25547
-       for i, c := range s {
 
25548
-               if c == '(' {
 
25549
-                       if parens == 0 {
 
25550
-                               params++
 
25551
-                       }
 
25552
-                       parens++
 
25553
-               } else if c == ')' {
 
25554
-                       parens--
 
25555
-               } else if parens == 0 && c == ' ' && s[i+1] != '(' && !sawRet {
 
25556
-                       params++
 
25557
-                       sawRet = true
 
25558
-               }
 
25559
-       }
 
25560
-       return params > 2
 
25561
-}
 
25562
-
 
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)
 
25568
        }
 
25569
 
 
25570
+       if v.flag&flagMethodFn != 0 {
 
25571
+               if v.typ.Kind() != Func {
 
25572
+                       panic("reflect: MethodFn of non-Func")
 
25573
+               }
 
25574
+               ft := (*funcType)(unsafe.Pointer(v.typ))
 
25575
+               if ft.in[0].Kind() != Ptr {
 
25576
+                       v = makeValueMethod(v)
 
25577
+               }
 
25578
+       }
 
25579
+
 
25580
        k := v.kind()
 
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.
 
25588
-                       f := Zero
 
25589
+                       f := makeFuncStub
 
25590
                        return **(**uintptr)(unsafe.Pointer(&f))
 
25591
                }
 
25592
                p := v.val
 
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)
 
25597
@@ -14,8 +14,10 @@
 
25598
 // registers that might hold result values.
 
25599
 type i386Regs struct {
 
25600
        esp uint32
 
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
 
25607
 }
 
25608
 
 
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)
 
25613
 
 
25614
+       regs.sr = false
 
25615
+       regs.sf = false
 
25616
        var retPtr unsafe.Pointer
 
25617
        if retStruct {
 
25618
                retPtr = *(*unsafe.Pointer)(unsafe.Pointer(ap))
 
25619
                ap += ptrSize
 
25620
+               regs.sr = true
 
25621
        }
 
25622
 
 
25623
        for _, rt := range ftyp.in {
 
25624
@@ -77,7 +82,7 @@
 
25625
 
 
25626
        // Call the real function.
 
25627
 
 
25628
-       out := c.fn(in)
 
25629
+       out := c.call(in)
 
25630
 
 
25631
        if len(out) != len(ftyp.out) {
 
25632
                panic("reflect: wrong return count from function created by MakeFunc")
 
25633
@@ -123,13 +128,16 @@
 
25634
 
 
25635
        v := out[0]
 
25636
        w := v.iword()
 
25637
-       if v.Kind() != Ptr && v.Kind() != UnsafePointer {
 
25638
-               w = loadIword(unsafe.Pointer(w), v.typ.size)
 
25639
-       }
 
25640
        switch v.Kind() {
 
25641
-       case Float32, Float64:
 
25642
-               regs.st0 = uint64(uintptr(w))
 
25643
+       case Ptr, UnsafePointer:
 
25644
+               regs.eax = uint32(uintptr(w))
 
25645
+       case Float32:
 
25646
+               regs.st0 = float64(*(*float32)(unsafe.Pointer(w)))
 
25647
+               regs.sf = true
 
25648
+       case Float64:
 
25649
+               regs.st0 = *(*float64)(unsafe.Pointer(w))
 
25650
+               regs.sf = true
 
25651
        default:
 
25652
-               regs.eax = uint32(uintptr(w))
 
25653
+               regs.eax = uint32(uintptr(loadIword(unsafe.Pointer(w), v.typ.size)))
 
25654
        }
 
25655
 }
 
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)
 
25660
@@ -61,6 +61,14 @@
 
25661
        movdqa  %xmm6, 0xa0(%rsp)
 
25662
        movdqa  %xmm7, 0xb0(%rsp)
 
25663
 
 
25664
+       /* For MakeFunc functions that call recover.  */
 
25665
+       movq    8(%rbp), %rdi
 
25666
+#ifdef __PIC__
 
25667
+       call    __go_makefunc_can_recover@PLT
 
25668
+#else
 
25669
+       call    __go_makefunc_can_recover
 
25670
+#endif
 
25671
+
 
25672
        # Get function type.
 
25673
 #ifdef __PIC__
 
25674
        call    __go_get_closure@PLT
 
25675
@@ -77,6 +85,13 @@
 
25676
        call    reflect.MakeFuncStubGo
 
25677
 #endif
 
25678
 
 
25679
+       /* MakeFunc functions can no longer call recover.  */
 
25680
+#ifdef __PIC__
 
25681
+       call __go_makefunc_returning@PLT
 
25682
+#else
 
25683
+       call __go_makefunc_returning
 
25684
+#endif
 
25685
+
 
25686
        # The structure will be updated with any return values.  Load
 
25687
        # all possible return registers before returning to the caller.
 
25688
 
 
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}
 
25699
        m.Index = i
 
25700
        return
 
25701
 }
 
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)
 
25706
@@ -25,9 +25,13 @@
 
25707
           struct {
 
25708
             esp uint32         // 0x0
 
25709
             eax uint32         // 0x4
 
25710
-            st0 uint64         // 0x8
 
25711
+            st0 float64        // 0x8
 
25712
+            sr  bool           // 0x10
 
25713
+            sf  bool           // 0x11
 
25714
           }
 
25715
-       */
 
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.  */
 
25719
 
 
25720
        pushl   %ebp
 
25721
 .LCFI0:
 
25722
@@ -45,7 +49,16 @@
 
25723
        leal    8(%ebp), %eax   /* Set esp field in struct.  */
 
25724
        movl    %eax, -24(%ebp)
 
25725
 
 
25726
+       /* For MakeFunc functions that call recover.  */
 
25727
+       movl    4(%ebp), %eax
 
25728
+       movl    %eax, (%esp)
 
25729
 #ifdef __PIC__
 
25730
+       call    __go_makefunc_can_recover@PLT
 
25731
+#else
 
25732
+       call    __go_makefunc_can_recover
 
25733
+#endif
 
25734
+
 
25735
+#ifdef __PIC__
 
25736
        call    __go_get_closure@PLT
 
25737
 #else
 
25738
        call    __go_get_closure
 
25739
@@ -62,9 +75,20 @@
 
25740
        call    reflect.MakeFuncStubGo
 
25741
 #endif
 
25742
 
 
25743
+       /* MakeFunc functions can no longer call recover.  */
 
25744
+#ifdef __PIC__
 
25745
+       call __go_makefunc_returning@PLT
 
25746
+#else
 
25747
+       call __go_makefunc_returning
 
25748
+#endif
 
25749
+
 
25750
        /* Set return registers.  */
 
25751
 
 
25752
        movl    -20(%ebp), %eax
 
25753
+
 
25754
+       cmpb    $0, -7(%ebp)
 
25755
+       je      2f
 
25756
+
 
25757
        fldl    -16(%ebp)
 
25758
 
 
25759
 #ifdef __SSE2__
 
25760
@@ -73,12 +97,20 @@
 
25761
        movsd   -16(%ebp), %xmm0
 
25762
 #endif
 
25763
 
 
25764
+2:
 
25765
+       movb    -8(%ebp), %dl
 
25766
+
 
25767
        addl    $36, %esp
 
25768
        popl    %ebx
 
25769
 .LCFI3:
 
25770
        popl    %ebp
 
25771
 .LCFI4:
 
25772
+
 
25773
+       testb   %dl,%dl
 
25774
+       jne     1f
 
25775
        ret
 
25776
+1:
 
25777
+       ret     $4
 
25778
 .LFE1:
 
25779
 #ifdef __ELF__
 
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 @@
 
25786
        }
 
25787
 }
 
25788
 
 
25789
+type emptyStruct struct{}
 
25790
+
 
25791
+type nonEmptyStruct struct {
 
25792
+       member int
 
25793
+}
 
25794
+
 
25795
+func returnEmpty() emptyStruct {
 
25796
+       return emptyStruct{}
 
25797
+}
 
25798
+
 
25799
+func takesEmpty(e emptyStruct) {
 
25800
+}
 
25801
+
 
25802
+func returnNonEmpty(i int) nonEmptyStruct {
 
25803
+       return nonEmptyStruct{member: i}
 
25804
+}
 
25805
+
 
25806
+func takesNonEmpty(n nonEmptyStruct) int {
 
25807
+       return n.member
 
25808
+}
 
25809
+
 
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)
 
25814
+       }
 
25815
+       r = ValueOf(takesEmpty).Call([]Value{ValueOf(emptyStruct{})})
 
25816
+       if len(r) != 0 {
 
25817
+               t.Errorf("takesEmpty returned values: %s", r)
 
25818
+       }
 
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)
 
25822
+       }
 
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)
 
25826
+       }
 
25827
+}
 
25828
+
 
25829
 func TestMakeFunc(t *testing.T) {
 
25830
        switch runtime.GOARCH {
 
25831
        case "amd64", "386":
 
25832
@@ -1587,9 +1627,13 @@
 
25833
        }
 
25834
 }
 
25835
 
 
25836
-/* Not yet implemented for gccgo
 
25837
+func TestMethodValue(t *testing.T) {
 
25838
+       switch runtime.GOARCH {
 
25839
+       case "amd64", "386":
 
25840
+       default:
 
25841
+               t.Skip("reflect method values not implemented for " + runtime.GOARCH)
 
25842
+       }
 
25843
 
 
25844
-func TestMethodValue(t *testing.T) {
 
25845
        p := Point{3, 4}
 
25846
        var i int64
 
25847
 
 
25848
@@ -1658,8 +1702,6 @@
 
25849
        }
 
25850
 }
 
25851
 
 
25852
-*/
 
25853
-
 
25854
 // Reflect version of $GOROOT/test/method5.go
 
25855
 
 
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 }
 
25859
 
 
25860
 func TestMethod5(t *testing.T) {
 
25861
-       /* Not yet used for gccgo
 
25862
+       switch runtime.GOARCH {
 
25863
+       case "amd64", "386":
 
25864
+       default:
 
25865
+               t.Skip("reflect method values not implemented for " + runtime.GOARCH)
 
25866
+       }
 
25867
+
 
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)
 
25872
                }
 
25873
        }
 
25874
-       */
 
25875
 
 
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)
 
25880
                }
 
25881
 
 
25882
-               /* Not yet implemented for gccgo
 
25883
                CheckF(name+".M", i.Method(0).Interface().(func(int, byte) (byte, int)), inc)
 
25884
-               */
 
25885
        }
 
25886
 
 
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)
 
25892
@@ -17,6 +17,11 @@
 
25893
        code uintptr
 
25894
        typ  *funcType
 
25895
        fn   func([]Value) []Value
 
25896
+
 
25897
+       // For gccgo we use the same entry point for functions and for
 
25898
+       // method values.
 
25899
+       method int
 
25900
+       rcvr   Value
 
25901
 }
 
25902
 
 
25903
 // MakeFunc returns a new function of the given Type
 
25904
@@ -61,7 +66,7 @@
 
25905
        dummy := makeFuncStub
 
25906
        code := **(**uintptr)(unsafe.Pointer(&dummy))
 
25907
 
 
25908
-       impl := &makeFuncImpl{code: code, typ: ftyp, fn: fn}
 
25909
+       impl := &makeFuncImpl{code: code, typ: ftyp, fn: fn, method: -1}
 
25910
 
 
25911
        return Value{t, unsafe.Pointer(&impl), flag(Func<<flagKindShift) | flagIndir}
 
25912
 }
 
25913
@@ -85,15 +90,94 @@
 
25914
                panic("reflect: internal error: invalid use of makePartialFunc")
 
25915
        }
 
25916
 
 
25917
+       switch runtime.GOARCH {
 
25918
+       case "amd64", "386":
 
25919
+       default:
 
25920
+               panic("reflect.makeMethodValue not implemented for " + runtime.GOARCH)
 
25921
+       }
 
25922
+
 
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}
 
25927
 
 
25928
+       // v.Type returns the actual type of the method value.
 
25929
+       ft := v.Type().(*rtype)
 
25930
+
 
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))
 
25936
+
 
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)
 
25942
 
 
25943
-       panic("reflect makeMethodValue not implemented")
 
25944
+       fv := &makeFuncImpl{
 
25945
+               code:   code,
 
25946
+               typ:    (*funcType)(unsafe.Pointer(t)),
 
25947
+               method: int(v.flag) >> flagMethodShift,
 
25948
+               rcvr:   rcvr,
 
25949
+       }
 
25950
+
 
25951
+       return Value{ft, unsafe.Pointer(&fv), v.flag&flagRO | flag(Func)<<flagKindShift | flagIndir}
 
25952
 }
 
25953
+
 
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
 
25956
+// it.
 
25957
+func makeValueMethod(v Value) Value {
 
25958
+       typ := v.typ
 
25959
+       if typ.Kind() != Func {
 
25960
+               panic("reflect: call of makeValueMethod with non-Func type")
 
25961
+       }
 
25962
+       if v.flag&flagMethodFn == 0 {
 
25963
+               panic("reflect: call of makeValueMethod with non-MethodFn")
 
25964
+       }
 
25965
+
 
25966
+       switch runtime.GOARCH {
 
25967
+       case "amd64", "386":
 
25968
+       default:
 
25969
+               panic("reflect.makeValueMethod not implemented for " + runtime.GOARCH)
 
25970
+       }
 
25971
+
 
25972
+       t := typ.common()
 
25973
+       ftyp := (*funcType)(unsafe.Pointer(t))
 
25974
+
 
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))
 
25980
+
 
25981
+       impl := &makeFuncImpl{
 
25982
+               code:   code,
 
25983
+               typ:    ftyp,
 
25984
+               method: -2,
 
25985
+               rcvr:   v,
 
25986
+       }
 
25987
+
 
25988
+       return Value{t, unsafe.Pointer(&impl), flag(Func<<flagKindShift) | flagIndir}
 
25989
+}
 
25990
+
 
25991
+// Call the function represented by a makeFuncImpl.
 
25992
+func (c *makeFuncImpl) call(in []Value) []Value {
 
25993
+       if c.method == -1 {
 
25994
+               return c.fn(in)
 
25995
+       } else if c.method == -2 {
 
25996
+               if c.typ.IsVariadic() {
 
25997
+                       return c.rcvr.CallSlice(in)
 
25998
+               } else {
 
25999
+                       return c.rcvr.Call(in)
 
26000
+               }
 
26001
+       } else {
 
26002
+               m := c.rcvr.Method(c.method)
 
26003
+               if c.typ.IsVariadic() {
 
26004
+                       return m.CallSlice(in)
 
26005
+               } else {
 
26006
+                       return m.Call(in)
 
26007
+               }
 
26008
+       }
 
26009
+}
 
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.
 
26017
 
 
26018
-       out := c.fn(in)
 
26019
+       out := c.call(in)
 
26020
 
 
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)
 
26027
@@ -9,6 +9,7 @@
 
26028
 import (
 
26029
        "io"
 
26030
        "os"
 
26031
+       "runtime"
 
26032
        "sync"
 
26033
        "syscall"
 
26034
        "time"
 
26035
@@ -90,6 +91,16 @@
 
26036
                if err == nil || err == syscall.EISCONN {
 
26037
                        break
 
26038
                }
 
26039
+
 
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 {
 
26046
+                       break
 
26047
+               }
 
26048
+
 
26049
                if err != syscall.EINPROGRESS && err != syscall.EALREADY && err != syscall.EINTR {
 
26050
                        return err
 
26051
                }
 
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)
 
26056
@@ -0,0 +1,8 @@
 
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.
 
26060
+
 
26061
+package build
 
26062
+
 
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
 
26072
 
 
26073
+//sysnb        Dup3(oldfd int, newfd int, flags int) (err error)
 
26074
+//dup3(oldfd _C_int, newfd _C_int, flags _C_int) _C_int
 
26075
+
 
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
 
26078
 
 
26079
@@ -268,6 +271,9 @@
 
26080
        return origlen - len(buf), count, names
 
26081
 }
 
26082
 
 
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
 
26085
+
 
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
 
26088
 
 
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
 
26092
 
 
26093
+//sys  Listxattr(path string, dest []byte) (sz int, err error)
 
26094
+//listxattr(path *byte, list *byte, size Size_t) Ssize_t
 
26095
+
 
26096
 //sys  Mkdirat(dirfd int, path string, mode uint32) (err error)
 
26097
 //mkdirat(dirfd _C_int, path *byte, mode Mode_t) _C_int
 
26098
 
 
26099
@@ -305,6 +314,9 @@
 
26100
 //sys  PivotRoot(newroot string, putold string) (err error)
 
26101
 //pivot_root(newroot *byte, putold *byte) _C_int
 
26102
 
 
26103
+//sys  Removexattr(path string, attr string) (err error)
 
26104
+//removexattr(path *byte, name *byte) _C_int
 
26105
+
 
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
 
26108
 
 
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
 
26112
 
 
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
 
26115
+
 
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)
 
26123
@@ -25,7 +25,7 @@
 
26124
        Pad  [96]int8
 
26125
 }
 
26126
 
 
26127
-const SizeofSockaddrAny = 0x1c
 
26128
+const SizeofSockaddrAny = 0x6c
 
26129
 
 
26130
 type SockaddrInet4 struct {
 
26131
        Port int
 
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)
 
26138
 //getppid() Pid_t
 
26139
 
 
26140
+//sys Getpriority(which int, who int) (prio int, err error)
 
26141
+//getpriority(which _C_int, who _C_int) _C_int
 
26142
+
 
26143
 //sysnb        Getrlimit(resource int, rlim *Rlimit) (err error)
 
26144
 //getrlimit(resource _C_int, rlim *Rlimit) _C_int
 
26145
 
 
26146
@@ -307,6 +310,9 @@
 
26147
 //sysnb        Setpgid(pid int, pgid int) (err error)
 
26148
 //setpgid(pid Pid_t, pgid Pid_t) _C_int
 
26149
 
 
26150
+//sys Setpriority(which int, who int, prio int) (err error)
 
26151
+//setpriority(which _C_int, who _C_int, prio _C_int) _C_int
 
26152
+
 
26153
 //sysnb        Setreuid(ruid int, euid int) (err error)
 
26154
 //setreuid(ruid Uid_t, euid Uid_t) _C_int
 
26155
 
 
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 \
 
26165
        runtime/go-cgo.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 \
 
26172
-       syslist.go
 
26173
+       go/go/build/syslist.go
 
26174
 go_go_doc_files = \
 
26175
        go/go/doc/comment.go \
 
26176
        go/go/doc/doc.go \
 
26177
@@ -2712,15 +2713,6 @@
 
26178
        @$(CHECK)
 
26179
 .PHONY: go/build/check
 
26180
 
 
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
 
26188
-       $(STAMP) $@
 
26189
-
 
26190
 @go_include@ go/doc.lo.dep
 
26191
 go/doc.lo.dep: $(go_go_doc_files)
 
26192
        $(BUILDDEPS)
 
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)
 
26197
@@ -0,0 +1,908 @@
 
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.
 
26202
+#
 
26203
+msgid ""
 
26204
+msgstr ""
 
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"
 
26217
+
 
26218
+#: charset.c:673
 
26219
+#, c-format
 
26220
+msgid "conversion from %s to %s not supported by iconv"
 
26221
+msgstr "sem suporte a conversão de %s para %s por iconv"
 
26222
+
 
26223
+#: charset.c:676
 
26224
+msgid "iconv_open"
 
26225
+msgstr "iconv_open"
 
26226
+
 
26227
+#: charset.c:684
 
26228
+#, c-format
 
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"
 
26231
+
 
26232
+#: charset.c:780
 
26233
+#, c-format
 
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"
 
26236
+
 
26237
+#: charset.c:797 charset.c:1443
 
26238
+msgid "converting to execution character set"
 
26239
+msgstr "convertendo para conjunto de caracteres da execução"
 
26240
+
 
26241
+#: charset.c:803
 
26242
+#, c-format
 
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"
 
26245
+
 
26246
+#: charset.c:927
 
26247
+#, c-format
 
26248
+msgid "Character %x might not be NFKC"
 
26249
+msgstr "Caractere %x pode não ser NFKC"
 
26250
+
 
26251
+#: charset.c:993
 
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"
 
26254
+
 
26255
+#: charset.c:996
 
26256
+#, c-format
 
26257
+msgid "the meaning of '\\%c' is different in traditional C"
 
26258
+msgstr "o significado de \"\\%c\" é diferente em C tradicional"
 
26259
+
 
26260
+#: charset.c:1005
 
26261
+msgid "In _cpp_valid_ucn but not a UCN"
 
26262
+msgstr "Em _cpp_valid_ucn, mas não é um UCN"
 
26263
+
 
26264
+#: charset.c:1030
 
26265
+#, c-format
 
26266
+msgid "incomplete universal character name %.*s"
 
26267
+msgstr "nome de caractere universal incompleto %.*s"
 
26268
+
 
26269
+#: charset.c:1045
 
26270
+#, c-format
 
26271
+msgid "%.*s is not a valid universal character"
 
26272
+msgstr "%.*s não é um caractere universal válido"
 
26273
+
 
26274
+#: charset.c:1055 lex.c:1117
 
26275
+msgid "'$' in identifier or number"
 
26276
+msgstr "\"$\" em identificador ou número"
 
26277
+
 
26278
+#: charset.c:1065
 
26279
+#, c-format
 
26280
+msgid "universal character %.*s is not valid in an identifier"
 
26281
+msgstr "caractere universal %.*s não é válido em um identificador"
 
26282
+
 
26283
+#: charset.c:1069
 
26284
+#, c-format
 
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"
 
26287
+
 
26288
+#: charset.c:1101 charset.c:1673
 
26289
+msgid "converting UCN to source character set"
 
26290
+msgstr "convertendo UCN para conjunto de caracteres fonte"
 
26291
+
 
26292
+#: charset.c:1105
 
26293
+msgid "converting UCN to execution character set"
 
26294
+msgstr "convertendo UCN para conjunto de caracteres de execução"
 
26295
+
 
26296
+#: charset.c:1177
 
26297
+msgid "the meaning of '\\x' is different in traditional C"
 
26298
+msgstr "o significado de \"\\x\" é diferente em C tradicional"
 
26299
+
 
26300
+#: charset.c:1194
 
26301
+msgid "\\x used with no following hex digits"
 
26302
+msgstr "\\x usado com nenhum dígito hexa"
 
26303
+
 
26304
+#: charset.c:1201
 
26305
+msgid "hex escape sequence out of range"
 
26306
+msgstr "sequência de escape hexa fora de alcance"
 
26307
+
 
26308
+#: charset.c:1239
 
26309
+msgid "octal escape sequence out of range"
 
26310
+msgstr "sequência de escape octal fora de alcance"
 
26311
+
 
26312
+#: charset.c:1305
 
26313
+msgid "the meaning of '\\a' is different in traditional C"
 
26314
+msgstr "o significado de \"\\a\" é diferente em C tradicional"
 
26315
+
 
26316
+#: charset.c:1312
 
26317
+#, c-format
 
26318
+msgid "non-ISO-standard escape sequence, '\\%c'"
 
26319
+msgstr "sequência de escape não padrão ISO, \"\\%c\""
 
26320
+
 
26321
+#: charset.c:1320
 
26322
+#, c-format
 
26323
+msgid "unknown escape sequence: '\\%c'"
 
26324
+msgstr "sequência de escape desconhecida: \"\\%c\""
 
26325
+
 
26326
+#: charset.c:1328
 
26327
+#, c-format
 
26328
+msgid "unknown escape sequence: '\\%s'"
 
26329
+msgstr "sequência de escape desconhecida: \"\\%s\""
 
26330
+
 
26331
+#: charset.c:1335
 
26332
+msgid "converting escape sequence to execution character set"
 
26333
+msgstr "convertendo sequência de escape para conjunto de caracteres de execução"
 
26334
+
 
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"
 
26338
+
 
26339
+#: charset.c:1511
 
26340
+msgid "multi-character character constant"
 
26341
+msgstr "constante de caractere multi-caractere"
 
26342
+
 
26343
+#: charset.c:1611
 
26344
+msgid "empty character constant"
 
26345
+msgstr "constante caractere vazia"
 
26346
+
 
26347
+#: charset.c:1720
 
26348
+#, c-format
 
26349
+msgid "failure to convert %s to %s"
 
26350
+msgstr "falha ao converter %s para %s"
 
26351
+
 
26352
+#: directives.c:224 directives.c:250
 
26353
+#, c-format
 
26354
+msgid "extra tokens at end of #%s directive"
 
26355
+msgstr "tokens extras ao final da diretiva %#s"
 
26356
+
 
26357
+#: directives.c:357
 
26358
+#, c-format
 
26359
+msgid "#%s is a GCC extension"
 
26360
+msgstr "#%s é uma extensão GCC"
 
26361
+
 
26362
+#: directives.c:362
 
26363
+#, c-format
 
26364
+msgid "#%s is a deprecated GCC extension"
 
26365
+msgstr "#%s é uma extensão GCC obsoleta"
 
26366
+
 
26367
+#: directives.c:375
 
26368
+msgid "suggest not using #elif in traditional C"
 
26369
+msgstr "sugere-se não usar #elif em C tradicional"
 
26370
+
 
26371
+#: directives.c:378
 
26372
+#, c-format
 
26373
+msgid "traditional C ignores #%s with the # indented"
 
26374
+msgstr "C tradicional ignora #%s com o # com recuo"
 
26375
+
 
26376
+#: directives.c:382
 
26377
+#, c-format
 
26378
+msgid "suggest hiding #%s from traditional C with an indented #"
 
26379
+msgstr "sugere-se ocultar #%s do C tradicional com um # com recuo"
 
26380
+
 
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"
 
26384
+
 
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"
 
26388
+
 
26389
+#: directives.c:483
 
26390
+#, c-format
 
26391
+msgid "invalid preprocessing directive #%s"
 
26392
+msgstr "diretiva de preprocessamento inválida #%s"
 
26393
+
 
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"
 
26397
+
 
26398
+#: directives.c:557
 
26399
+#, c-format
 
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++"
 
26402
+
 
26403
+#: directives.c:560
 
26404
+#, c-format
 
26405
+msgid "no macro name given in #%s directive"
 
26406
+msgstr "nenhum nome de macro fornecido na diretiva #%s"
 
26407
+
 
26408
+#: directives.c:563
 
26409
+msgid "macro names must be identifiers"
 
26410
+msgstr "nomes de macro devem ser identificadores"
 
26411
+
 
26412
+#: directives.c:612
 
26413
+#, c-format
 
26414
+msgid "undefining \"%s\""
 
26415
+msgstr "removendo definição de \"%s\""
 
26416
+
 
26417
+#: directives.c:667
 
26418
+msgid "missing terminating > character"
 
26419
+msgstr "faltando caractere terminador >"
 
26420
+
 
26421
+#: directives.c:726
 
26422
+#, c-format
 
26423
+msgid "#%s expects \"FILENAME\" or <FILENAME>"
 
26424
+msgstr "#%s espera \"NOME DE ARQUIVO\" OU <NOME DE ARQUIVO>"
 
26425
+
 
26426
+#: directives.c:772
 
26427
+#, c-format
 
26428
+msgid "empty filename in #%s"
 
26429
+msgstr "nome de arquivo vazio em #%s"
 
26430
+
 
26431
+#: directives.c:782
 
26432
+msgid "#include nested too deeply"
 
26433
+msgstr "#include aninhado profundo demais"
 
26434
+
 
26435
+#: directives.c:823
 
26436
+msgid "#include_next in primary source file"
 
26437
+msgstr "#include_next no arquivo fonte primário"
 
26438
+
 
26439
+#: directives.c:849
 
26440
+#, c-format
 
26441
+msgid "invalid flag \"%s\" in line directive"
 
26442
+msgstr "opção inválida \"%s\" na diretiva line"
 
26443
+
 
26444
+#: directives.c:909
 
26445
+msgid "unexpected end of file after #line"
 
26446
+msgstr "fim de arquivo inesperado após #line"
 
26447
+
 
26448
+#: directives.c:912
 
26449
+#, c-format
 
26450
+msgid "\"%s\" after #line is not a positive integer"
 
26451
+msgstr "\"%s\" após #line não é um inteiro positivo"
 
26452
+
 
26453
+#: directives.c:918 directives.c:920
 
26454
+msgid "line number out of range"
 
26455
+msgstr "número da linha fora de alcance"
 
26456
+
 
26457
+#: directives.c:933 directives.c:1013
 
26458
+#, c-format
 
26459
+msgid "\"%s\" is not a valid filename"
 
26460
+msgstr "\"%s\" não é um nome de arquivo válido"
 
26461
+
 
26462
+#: directives.c:973
 
26463
+#, c-format
 
26464
+msgid "\"%s\" after # is not a positive integer"
 
26465
+msgstr "\"%s\" após # não é um inteiro positivo"
 
26466
+
 
26467
+#: directives.c:1068 directives.c:1070 directives.c:1072 directives.c:1658
 
26468
+#, c-format
 
26469
+msgid "%s"
 
26470
+msgstr "%s"
 
26471
+
 
26472
+#: directives.c:1096
 
26473
+#, c-format
 
26474
+msgid "invalid #%s directive"
 
26475
+msgstr "diretiva inválida #%s"
 
26476
+
 
26477
+#: directives.c:1159
 
26478
+#, c-format
 
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"
 
26481
+
 
26482
+#: directives.c:1168
 
26483
+#, c-format
 
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"
 
26486
+
 
26487
+#: directives.c:1186
 
26488
+#, c-format
 
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"
 
26491
+
 
26492
+#: directives.c:1189
 
26493
+#, c-format
 
26494
+msgid "#pragma %s %s is already registered"
 
26495
+msgstr "#pragma %s %s já está registrado"
 
26496
+
 
26497
+#: directives.c:1192
 
26498
+#, c-format
 
26499
+msgid "#pragma %s is already registered"
 
26500
+msgstr "#pragma %s já está registrado"
 
26501
+
 
26502
+#: directives.c:1222
 
26503
+msgid "registering pragma with NULL handler"
 
26504
+msgstr "registrando pragma com manipulador NULO"
 
26505
+
 
26506
+#: directives.c:1439
 
26507
+msgid "#pragma once in main file"
 
26508
+msgstr "#pragma ocorre uma vez no arquivo principal"
 
26509
+
 
26510
+#: directives.c:1462
 
26511
+msgid "invalid #pragma push_macro directive"
 
26512
+msgstr "diretiva inválida #pragma push_macro"
 
26513
+
 
26514
+#: directives.c:1517
 
26515
+msgid "invalid #pragma pop_macro directive"
 
26516
+msgstr "diretiva inválida #pragma pop_macro"
 
26517
+
 
26518
+#: directives.c:1572
 
26519
+msgid "invalid #pragma GCC poison directive"
 
26520
+msgstr "diretiva inválida #pragma GCC poison"
 
26521
+
 
26522
+#: directives.c:1581
 
26523
+#, c-format
 
26524
+msgid "poisoning existing macro \"%s\""
 
26525
+msgstr "envenenando macro existente \"%s\""
 
26526
+
 
26527
+#: directives.c:1600
 
26528
+msgid "#pragma system_header ignored outside include file"
 
26529
+msgstr "#pragma system_header ignorado fora do arquivo include"
 
26530
+
 
26531
+#: directives.c:1625
 
26532
+#, c-format
 
26533
+msgid "cannot find source file %s"
 
26534
+msgstr "não foi possível localizar o arquivo fonte %s"
 
26535
+
 
26536
+#: directives.c:1629
 
26537
+#, c-format
 
26538
+msgid "current file is older than %s"
 
26539
+msgstr "arquivo atual é mais velho do que %s"
 
26540
+
 
26541
+#: directives.c:1653
 
26542
+#, c-format
 
26543
+msgid "invalid \"#pragma GCC %s\" directive"
 
26544
+msgstr "diretiva inválida \"#pragma GCC %s\""
 
26545
+
 
26546
+#: directives.c:1847
 
26547
+msgid "_Pragma takes a parenthesized string literal"
 
26548
+msgstr "_Pragma leva uma literal de string entre parenteses"
 
26549
+
 
26550
+#: directives.c:1968
 
26551
+msgid "#else without #if"
 
26552
+msgstr "#else sem #if"
 
26553
+
 
26554
+#: directives.c:1973
 
26555
+msgid "#else after #else"
 
26556
+msgstr "#else após #else"
 
26557
+
 
26558
+#: directives.c:1975 directives.c:2008
 
26559
+msgid "the conditional began here"
 
26560
+msgstr "a condicional começou aqui"
 
26561
+
 
26562
+#: directives.c:2001
 
26563
+msgid "#elif without #if"
 
26564
+msgstr "#elif sem #if"
 
26565
+
 
26566
+#: directives.c:2006
 
26567
+msgid "#elif after #else"
 
26568
+msgstr "#elif após #else"
 
26569
+
 
26570
+#: directives.c:2044
 
26571
+msgid "#endif without #if"
 
26572
+msgstr "#endif sem #if"
 
26573
+
 
26574
+#: directives.c:2124
 
26575
+msgid "missing '(' after predicate"
 
26576
+msgstr "faltando \"(\" após predicado"
 
26577
+
 
26578
+#: directives.c:2139
 
26579
+msgid "missing ')' to complete answer"
 
26580
+msgstr "faltando \")\" para uma resposta completa"
 
26581
+
 
26582
+#: directives.c:2159
 
26583
+msgid "predicate's answer is empty"
 
26584
+msgstr "resposta do predicado está vazia"
 
26585
+
 
26586
+#: directives.c:2186
 
26587
+msgid "assertion without predicate"
 
26588
+msgstr "asserção sem predicado"
 
26589
+
 
26590
+#: directives.c:2189
 
26591
+msgid "predicate must be an identifier"
 
26592
+msgstr "predicado deve ser um identificador"
 
26593
+
 
26594
+#: directives.c:2275
 
26595
+#, c-format
 
26596
+msgid "\"%s\" re-asserted"
 
26597
+msgstr "\"%s\" re-assertado"
 
26598
+
 
26599
+#: directives.c:2567
 
26600
+#, c-format
 
26601
+msgid "unterminated #%s"
 
26602
+msgstr "#%s não terminado"
 
26603
+
 
26604
+#: directives-only.c:221 lex.c:2234 traditional.c:162
 
26605
+msgid "unterminated comment"
 
26606
+msgstr "comentário não terminado"
 
26607
+
 
26608
+#: errors.c:234
 
26609
+msgid "stdout"
 
26610
+msgstr "saída padrão"
 
26611
+
 
26612
+#: errors.c:236
 
26613
+#, c-format
 
26614
+msgid "%s: %s"
 
26615
+msgstr "%s: %s"
 
26616
+
 
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"
 
26620
+
 
26621
+#: expr.c:504
 
26622
+msgid "invalid prefix \"0b\" for floating constant"
 
26623
+msgstr "prefixo inválido \"0b\" para constante flutuante"
 
26624
+
 
26625
+#: expr.c:514
 
26626
+msgid "use of C99 hexadecimal floating constant"
 
26627
+msgstr "uso de constante flutuante hexadecimal de C99"
 
26628
+
 
26629
+#: expr.c:545
 
26630
+#, c-format
 
26631
+msgid "invalid suffix \"%.*s\" on floating constant"
 
26632
+msgstr "sufixo inválido \"%.*s\" na constante flutuante"
 
26633
+
 
26634
+#: expr.c:556 expr.c:616
 
26635
+#, c-format
 
26636
+msgid "traditional C rejects the \"%.*s\" suffix"
 
26637
+msgstr "C tradicional rejeita o sufixo \"%.*s\""
 
26638
+
 
26639
+#: expr.c:564
 
26640
+msgid "suffix for double constant is a GCC extension"
 
26641
+msgstr "sufixo para constante dupla (suffix for double constant) é uma extensão GCC"
 
26642
+
 
26643
+#: expr.c:570
 
26644
+#, c-format
 
26645
+msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
 
26646
+msgstr "sufixo inválido \"%.*s\" com constante flutuante hexadecimal"
 
26647
+
 
26648
+#: expr.c:581
 
26649
+msgid "decimal float constants are a GCC extension"
 
26650
+msgstr "constantes flutuante decimais (decimal float constants) é uma extensão GCC"
 
26651
+
 
26652
+#: expr.c:599
 
26653
+#, c-format
 
26654
+msgid "invalid suffix \"%.*s\" on integer constant"
 
26655
+msgstr "sufixo inválido \"%.*s\" em constante inteiro"
 
26656
+
 
26657
+#: expr.c:624
 
26658
+msgid "use of C++0x long long integer constant"
 
26659
+msgstr "uso de constante longo longo inteiro de C++0x"
 
26660
+
 
26661
+#: expr.c:625
 
26662
+msgid "use of C99 long long integer constant"
 
26663
+msgstr "uso de constante longo longo inteiro de C99"
 
26664
+
 
26665
+#: expr.c:641
 
26666
+msgid "imaginary constants are a GCC extension"
 
26667
+msgstr "constantes imaginárias (imaginary constants) é uma extensão GCC"
 
26668
+
 
26669
+#: expr.c:644
 
26670
+msgid "binary constants are a GCC extension"
 
26671
+msgstr "constantes binárias (binary constants) é uma extensão GCC"
 
26672
+
 
26673
+#: expr.c:737
 
26674
+msgid "integer constant is too large for its type"
 
26675
+msgstr "constante inteira é muito grande para seu tipo"
 
26676
+
 
26677
+#: expr.c:768
 
26678
+msgid "integer constant is so large that it is unsigned"
 
26679
+msgstr "constante inteira é tão grande que não está assinada"
 
26680
+
 
26681
+#: expr.c:863
 
26682
+msgid "missing ')' after \"defined\""
 
26683
+msgstr "faltando \")\" após \"defined\""
 
26684
+
 
26685
+#: expr.c:870
 
26686
+msgid "operator \"defined\" requires an identifier"
 
26687
+msgstr "operador \"defined\" requer um identificador"
 
26688
+
 
26689
+#: expr.c:878
 
26690
+#, c-format
 
26691
+msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
 
26692
+msgstr "(\"%s\" é um token alternativo para \"%s\" em C++)"
 
26693
+
 
26694
+#: expr.c:888
 
26695
+msgid "this use of \"defined\" may not be portable"
 
26696
+msgstr "esse uso de \"defined\" pode não ser portátil"
 
26697
+
 
26698
+#: expr.c:948
 
26699
+msgid "user-defined literal in preprocessor expression"
 
26700
+msgstr "literal definida pelo usuário em expressão do preprocessador"
 
26701
+
 
26702
+#: expr.c:953
 
26703
+msgid "floating constant in preprocessor expression"
 
26704
+msgstr "constante flutuante em expressão do preprocessador"
 
26705
+
 
26706
+#: expr.c:959
 
26707
+msgid "imaginary number in preprocessor expression"
 
26708
+msgstr "número imaginário em expressão do preprocessador"
 
26709
+
 
26710
+#: expr.c:1007
 
26711
+#, c-format
 
26712
+msgid "\"%s\" is not defined"
 
26713
+msgstr "\"%s\" não está definido"
 
26714
+
 
26715
+#: expr.c:1020
 
26716
+msgid "assertions are a GCC extension"
 
26717
+msgstr "asserções (assertions) é uma extensão GCC"
 
26718
+
 
26719
+#: expr.c:1023
 
26720
+msgid "assertions are a deprecated extension"
 
26721
+msgstr "asserções (assertions) é uma extensão obsoleta"
 
26722
+
 
26723
+#: expr.c:1268
 
26724
+#, c-format
 
26725
+msgid "unbalanced stack in %s"
 
26726
+msgstr "pilha não balanceada em %s"
 
26727
+
 
26728
+#: expr.c:1288
 
26729
+#, c-format
 
26730
+msgid "impossible operator '%u'"
 
26731
+msgstr "operador impossível \"%u\""
 
26732
+
 
26733
+#: expr.c:1389
 
26734
+msgid "missing ')' in expression"
 
26735
+msgstr "faltando \")\" na expressão"
 
26736
+
 
26737
+#: expr.c:1418
 
26738
+msgid "'?' without following ':'"
 
26739
+msgstr "\"?\" sem estar seguido por \":\""
 
26740
+
 
26741
+#: expr.c:1428
 
26742
+msgid "integer overflow in preprocessor expression"
 
26743
+msgstr "estouro de inteiro em expressão do preprocessador"
 
26744
+
 
26745
+#: expr.c:1433
 
26746
+msgid "missing '(' in expression"
 
26747
+msgstr "faltando \"(\" na expressão"
 
26748
+
 
26749
+#: expr.c:1465
 
26750
+#, c-format
 
26751
+msgid "the left operand of \"%s\" changes sign when promoted"
 
26752
+msgstr "o operador à esquerda de \"%s\" altera o sinal quando promovido"
 
26753
+
 
26754
+#: expr.c:1470
 
26755
+#, c-format
 
26756
+msgid "the right operand of \"%s\" changes sign when promoted"
 
26757
+msgstr "o operador à direita de \"%s\" altera o sinal quando promovido"
 
26758
+
 
26759
+#: expr.c:1729
 
26760
+msgid "traditional C rejects the unary plus operator"
 
26761
+msgstr "C tradicional rejeita o operador unário mais"
 
26762
+
 
26763
+#: expr.c:1812
 
26764
+msgid "comma operator in operand of #if"
 
26765
+msgstr "operador vírgula em operando de #if"
 
26766
+
 
26767
+#: expr.c:1948
 
26768
+msgid "division by zero in #if"
 
26769
+msgstr "divisão por zero em #if"
 
26770
+
 
26771
+#: files.c:505
 
26772
+msgid "NULL directory in find_file"
 
26773
+msgstr "diretório NULO em find_file"
 
26774
+
 
26775
+#: files.c:553
 
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"
 
26778
+
 
26779
+#: files.c:556
 
26780
+msgid "use -Winvalid-pch for more information"
 
26781
+msgstr "use -Winvalid-pch para mais informações"
 
26782
+
 
26783
+#: files.c:660
 
26784
+#, c-format
 
26785
+msgid "%s is a block device"
 
26786
+msgstr "%s é um dispositivo de bloco"
 
26787
+
 
26788
+#: files.c:677
 
26789
+#, c-format
 
26790
+msgid "%s is too large"
 
26791
+msgstr "%s é muito grande"
 
26792
+
 
26793
+#: files.c:717
 
26794
+#, c-format
 
26795
+msgid "%s is shorter than expected"
 
26796
+msgstr "%s é muito menor do que esperado"
 
26797
+
 
26798
+#: files.c:953
 
26799
+#, c-format
 
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"
 
26802
+
 
26803
+#: files.c:1381
 
26804
+msgid "Multiple include guards may be useful for:\n"
 
26805
+msgstr "Múltiplos include guards podem ser úteis para:\n"
 
26806
+
 
26807
+#: init.c:524
 
26808
+msgid "cppchar_t must be an unsigned type"
 
26809
+msgstr "cppchar_t deve ser um tipo não assinado"
 
26810
+
 
26811
+#: init.c:528
 
26812
+#, c-format
 
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"
 
26815
+
 
26816
+#: init.c:535
 
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"
 
26819
+
 
26820
+#: init.c:538
 
26821
+msgid "target char is less than 8 bits wide"
 
26822
+msgstr "char alvo é menor do que 8 bits"
 
26823
+
 
26824
+#: init.c:542
 
26825
+msgid "target wchar_t is narrower than target char"
 
26826
+msgstr "wchar_t alvo é mais estreito do que o char alvo"
 
26827
+
 
26828
+#: init.c:546
 
26829
+msgid "target int is narrower than target char"
 
26830
+msgstr "int alvo é mais estreito do que o char alvo"
 
26831
+
 
26832
+#: init.c:551
 
26833
+msgid "CPP half-integer narrower than CPP character"
 
26834
+msgstr "meio-inteiro do CPP é mais estreito do que o caractere do CPP"
 
26835
+
 
26836
+#: init.c:555
 
26837
+#, c-format
 
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"
 
26840
+
 
26841
+#: lex.c:910
 
26842
+msgid "backslash and newline separated by space"
 
26843
+msgstr "barra invertida e nova linha separadas por espaço"
 
26844
+
 
26845
+#: lex.c:915
 
26846
+msgid "backslash-newline at end of file"
 
26847
+msgstr "barra invertida e nova linha no final do arquivo"
 
26848
+
 
26849
+#: lex.c:931
 
26850
+#, c-format
 
26851
+msgid "trigraph ??%c converted to %c"
 
26852
+msgstr "trígrafo ??%c convertido para %c"
 
26853
+
 
26854
+#: lex.c:939
 
26855
+#, c-format
 
26856
+msgid "trigraph ??%c ignored, use -trigraphs to enable"
 
26857
+msgstr "trígrafo ??%c ignorado, use -trigraphs para habilitá-lo"
 
26858
+
 
26859
+#: lex.c:988
 
26860
+msgid "\"/*\" within comment"
 
26861
+msgstr "\"/*\" dentro de comentário"
 
26862
+
 
26863
+#: lex.c:1046
 
26864
+#, c-format
 
26865
+msgid "%s in preprocessing directive"
 
26866
+msgstr "%s em diretiva de preprocessamento"
 
26867
+
 
26868
+#: lex.c:1055
 
26869
+msgid "null character(s) ignored"
 
26870
+msgstr "um ou mais caracteres nulos ignorados"
 
26871
+
 
26872
+#: lex.c:1092
 
26873
+#, c-format
 
26874
+msgid "`%.*s' is not in NFKC"
 
26875
+msgstr "\"%.*s\" não está em NFKC"
 
26876
+
 
26877
+#: lex.c:1095
 
26878
+#, c-format
 
26879
+msgid "`%.*s' is not in NFC"
 
26880
+msgstr "\"%.*s\" não está em NFC"
 
26881
+
 
26882
+#: lex.c:1164 lex.c:1241
 
26883
+#, c-format
 
26884
+msgid "attempt to use poisoned \"%s\""
 
26885
+msgstr "tentativa de usar \"%s\" envenenado"
 
26886
+
 
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"
 
26890
+
 
26891
+#: lex.c:1178 lex.c:1255
 
26892
+#, c-format
 
26893
+msgid "identifier \"%s\" is a special operator name in C++"
 
26894
+msgstr "identificador \"%s\" é o nome de um operador especial em C++"
 
26895
+
 
26896
+#: lex.c:1399
 
26897
+msgid "raw string delimiter longer than 16 characters"
 
26898
+msgstr "delimitador de string não tratada (raw) maior do que 16 caracteres"
 
26899
+
 
26900
+#: lex.c:1402
 
26901
+#, c-format
 
26902
+msgid "invalid character '%c' in raw string delimiter"
 
26903
+msgstr "caractere inválido \"%c\" em delimitador de string não tratada (raw)"
 
26904
+
 
26905
+#: lex.c:1525 lex.c:1547
 
26906
+msgid "unterminated raw string"
 
26907
+msgstr "string não tratada (raw) não terminada"
 
26908
+
 
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"
 
26912
+
 
26913
+#: lex.c:1684
 
26914
+msgid "null character(s) preserved in literal"
 
26915
+msgstr "um ou mais caracteres nulos preservados em literal"
 
26916
+
 
26917
+#: lex.c:1687
 
26918
+#, c-format
 
26919
+msgid "missing terminating %c character"
 
26920
+msgstr "faltando o caractere de terminação %c"
 
26921
+
 
26922
+#: lex.c:2245
 
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"
 
26925
+
 
26926
+#: lex.c:2247
 
26927
+msgid "(this will be reported only once per input file)"
 
26928
+msgstr "(isso será relatado apenas uma vez por arquivo de entrada)"
 
26929
+
 
26930
+#: lex.c:2252
 
26931
+msgid "multi-line comment"
 
26932
+msgstr "comentário multilinha"
 
26933
+
 
26934
+#: lex.c:2583
 
26935
+#, c-format
 
26936
+msgid "unspellable token %s"
 
26937
+msgstr "token %s impronunciável"
 
26938
+
 
26939
+#: macro.c:191
 
26940
+#, c-format
 
26941
+msgid "macro \"%s\" is not used"
 
26942
+msgstr "macro \"%s\" não é usada"
 
26943
+
 
26944
+#: macro.c:229 macro.c:426
 
26945
+#, c-format
 
26946
+msgid "invalid built-in macro \"%s\""
 
26947
+msgstr "macro interna inválida \"%s\""
 
26948
+
 
26949
+#: macro.c:263
 
26950
+msgid "could not determine file timestamp"
 
26951
+msgstr "não foi possível determinar o arquivo de marca de tempo"
 
26952
+
 
26953
+#: macro.c:361
 
26954
+msgid "could not determine date and time"
 
26955
+msgstr "não foi possível determinar a data e a hora"
 
26956
+
 
26957
+#: macro.c:377
 
26958
+msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
 
26959
+msgstr "__COUNTER__ expandido dentro diretiva com -fdirectives-only"
 
26960
+
 
26961
+#: macro.c:535
 
26962
+msgid "invalid string literal, ignoring final '\\'"
 
26963
+msgstr "literal de string inválida, ignorando final \"\\\""
 
26964
+
 
26965
+#: macro.c:597
 
26966
+#, c-format
 
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"
 
26969
+
 
26970
+#: macro.c:719
 
26971
+msgid "ISO C99 requires rest arguments to be used"
 
26972
+msgstr "ISO C99 requer que argumentos restantes sejam usados"
 
26973
+
 
26974
+#: macro.c:724
 
26975
+#, c-format
 
26976
+msgid "macro \"%s\" requires %u arguments, but only %u given"
 
26977
+msgstr "macro \"%s\" requer %u argumentos, mas apenas %u foram fornecidos"
 
26978
+
 
26979
+#: macro.c:729
 
26980
+#, c-format
 
26981
+msgid "macro \"%s\" passed %u arguments, but takes just %u"
 
26982
+msgstr "macro \"%s\" passou %u argumentos, mas usa apenas %u"
 
26983
+
 
26984
+#: macro.c:923 traditional.c:680
 
26985
+#, c-format
 
26986
+msgid "unterminated argument list invoking macro \"%s\""
 
26987
+msgstr "lista de argumentos interminável chamando macro \"%s\""
 
26988
+
 
26989
+#: macro.c:1074
 
26990
+#, c-format
 
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"
 
26993
+
 
26994
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33305
 
26995
+#: macro.c:1746
 
26996
+#, c-format
 
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"
 
26999
+
 
27000
+#: macro.c:2708
 
27001
+#, c-format
 
27002
+msgid "duplicate macro parameter \"%s\""
 
27003
+msgstr "parâmetro de macro \"%s\" duplicado"
 
27004
+
 
27005
+#: macro.c:2754
 
27006
+#, c-format
 
27007
+msgid "\"%s\" may not appear in macro parameter list"
 
27008
+msgstr "\"%s\" não pode aparecer na lista de parâmetros de macro"
 
27009
+
 
27010
+#: macro.c:2762
 
27011
+msgid "macro parameters must be comma-separated"
 
27012
+msgstr "parâmetros de macro devem ser separados por vírgula"
 
27013
+
 
27014
+#: macro.c:2779
 
27015
+msgid "parameter name missing"
 
27016
+msgstr "faltando nome de parâmetro"
 
27017
+
 
27018
+#: macro.c:2797
 
27019
+msgid "anonymous variadic macros were introduced in C99"
 
27020
+msgstr "macros variádicas anônimas foram introduzidas em C99"
 
27021
+
 
27022
+#: macro.c:2802
 
27023
+msgid "ISO C does not permit named variadic macros"
 
27024
+msgstr "ISO C não permite macros variádicas nomeadas"
 
27025
+
 
27026
+#: macro.c:2811
 
27027
+msgid "missing ')' in macro parameter list"
 
27028
+msgstr "faltando \")\" na lista de parâmetros de macro"
 
27029
+
 
27030
+#: macro.c:2860
 
27031
+msgid "'##' cannot appear at either end of a macro expansion"
 
27032
+msgstr "\"##\" não pode aparecer no final da expansão de macro"
 
27033
+
 
27034
+#: macro.c:2895
 
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"
 
27037
+
 
27038
+#: macro.c:2919
 
27039
+msgid "missing whitespace after the macro name"
 
27040
+msgstr "faltando espaço em branco após o nome de macro"
 
27041
+
 
27042
+#: macro.c:2953
 
27043
+msgid "'#' is not followed by a macro parameter"
 
27044
+msgstr "\"#\" não está seguido por um parâmetro de macro"
 
27045
+
 
27046
+#: macro.c:3111
 
27047
+#, c-format
 
27048
+msgid "\"%s\" redefined"
 
27049
+msgstr "\"%s\" re-definido"
 
27050
+
 
27051
+#: macro.c:3117
 
27052
+msgid "this is the location of the previous definition"
 
27053
+msgstr "essa é a localização da definição anterior"
 
27054
+
 
27055
+#: macro.c:3178
 
27056
+#, c-format
 
27057
+msgid "macro argument \"%s\" would be stringified in traditional C"
 
27058
+msgstr "argumento de macro \"%s\" estaria em uma string no C tradicional"
 
27059
+
 
27060
+#: macro.c:3205
 
27061
+#, c-format
 
27062
+msgid "invalid hash type %d in cpp_macro_definition"
 
27063
+msgstr "tipo de hash inválido %d em cpp_macro_definition"
 
27064
+
 
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"
 
27068
+
 
27069
+#: pch.c:619
 
27070
+#, c-format
 
27071
+msgid "%s: not used because `%.*s' is poisoned"
 
27072
+msgstr "%s: não usado porque \"%.*s\" está envenenado"
 
27073
+
 
27074
+#: pch.c:641
 
27075
+#, c-format
 
27076
+msgid "%s: not used because `%.*s' not defined"
 
27077
+msgstr "%s: não usado porque \"%.*s\" não está definido"
 
27078
+
 
27079
+#: pch.c:653
 
27080
+#, c-format
 
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\""
 
27083
+
 
27084
+#: pch.c:694
 
27085
+#, c-format
 
27086
+msgid "%s: not used because `%s' is defined"
 
27087
+msgstr "%s: não usado porque \"%s\" está definido"
 
27088
+
 
27089
+#: pch.c:714
 
27090
+#, c-format
 
27091
+msgid "%s: not used because `__COUNTER__' is invalid"
 
27092
+msgstr "%s: não usado porque \"__COUNTER__\" é inválido"
 
27093
+
 
27094
+#: pch.c:723 pch.c:898
 
27095
+msgid "while reading precompiled header"
 
27096
+msgstr "enquanto realizava leitura de header pré-compilado"
 
27097
+
 
27098
+#: traditional.c:750
 
27099
+#, c-format
 
27100
+msgid "detected recursion whilst expanding macro \"%s\""
 
27101
+msgstr "detectada recursão enquanto expandia macro \"%s\""
 
27102
+
 
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)
 
27110
@@ -1,3 +1,11 @@
 
27111
+2013-12-18  Joseph Myers  <joseph@codesourcery.com>
 
27112
+
 
27113
+       * pt_BR.po: New.
 
27114
+
 
27115
+2013-11-01  Joseph Myers  <joseph@codesourcery.com>
 
27116
+
 
27117
+       * tr.po: Update.
 
27118
+
 
27119
 2013-10-16  Release Manager
 
27120
 
 
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)
 
27126
@@ -1,20 +1,22 @@
 
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.
 
27130
 #
 
27131
 # Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2001, ..., 2007.
 
27132
+# Volkan Gezer <vlkngzr@gmail.com>, 2013.
 
27133
 msgid ""
 
27134
 msgstr ""
 
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"
 
27145
 "Language: tr\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"
 
27152
 
 
27153
 #: charset.c:673
 
27154
@@ -121,10 +123,9 @@
 
27155
 msgstr "ISO standardı olmayan önceleme dizgesi, '\\%c'"
 
27156
 
 
27157
 #: charset.c:1320
 
27158
-#, fuzzy, c-format
 
27159
-#| msgid "unknown escape sequence '\\%c'"
 
27160
+#, c-format
 
27161
 msgid "unknown escape sequence: '\\%c'"
 
27162
-msgstr "bilinmeyen önceleme dizgesi '\\%c'"
 
27163
+msgstr "bilinmeyen kaçış dizgesi: '\\%c'"
 
27164
 
 
27165
 #: charset.c:1328
 
27166
 #, c-format
 
27167
@@ -163,10 +164,9 @@
 
27168
 msgstr "#%s bir GCC uzantısıdır"
 
27169
 
 
27170
 #: directives.c:362
 
27171
-#, fuzzy, c-format
 
27172
-#| msgid "#%s is a GCC extension"
 
27173
+#, c-format
 
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"
 
27177
 
 
27178
 #: directives.c:375
 
27179
 msgid "suggest not using #elif in traditional C"
 
27180
@@ -247,7 +247,7 @@
 
27181
 
 
27182
 #: directives.c:909
 
27183
 msgid "unexpected end of file after #line"
 
27184
-msgstr ""
 
27185
+msgstr "#line satırından sonra beklenmeyen dosya sonu"
 
27186
 
 
27187
 #: directives.c:912
 
27188
 #, c-format
 
27189
@@ -271,7 +271,7 @@
 
27190
 #: directives.c:1068 directives.c:1070 directives.c:1072 directives.c:1658
 
27191
 #, c-format
 
27192
 msgid "%s"
 
27193
-msgstr ""
 
27194
+msgstr "%s"
 
27195
 
 
27196
 #: directives.c:1096
 
27197
 #, c-format
 
27198
@@ -312,16 +312,12 @@
 
27199
 msgstr "main dosyasında '#pragma once'"
 
27200
 
 
27201
 #: directives.c:1462
 
27202
-#, fuzzy
 
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"
 
27207
 
 
27208
 #: directives.c:1517
 
27209
-#, fuzzy
 
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"
 
27214
 
 
27215
 #: directives.c:1572
 
27216
 msgid "invalid #pragma GCC poison directive"
 
27217
@@ -347,10 +343,9 @@
 
27218
 msgstr "mevcut dosya %s den daha eski"
 
27219
 
 
27220
 #: directives.c:1653
 
27221
-#, fuzzy, c-format
 
27222
-#| msgid "invalid #pragma GCC poison directive"
 
27223
+#, c-format
 
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"
 
27227
 
 
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ış"
 
27233
 
 
27234
-#: directives.c:2566
 
27235
+#: directives.c:2567
 
27236
 #, c-format
 
27237
 msgid "unterminated #%s"
 
27238
 msgstr "sonlandırılmamış #%s"
 
27239
@@ -424,16 +419,12 @@
 
27240
 msgstr "%s: %s"
 
27241
 
 
27242
 #: expr.c:479 expr.c:577
 
27243
-#, fuzzy
 
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"
 
27248
 
 
27249
 #: expr.c:504
 
27250
-#, fuzzy
 
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ı"
 
27255
 
 
27256
 #: expr.c:514
 
27257
 msgid "use of C99 hexadecimal floating constant"
 
27258
@@ -450,10 +441,8 @@
 
27259
 msgstr "geleneksel C \"%.*s\" sonekini kullanmaz"
 
27260
 
 
27261
 #: expr.c:564
 
27262
-#, fuzzy
 
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"
 
27267
 
 
27268
 #: expr.c:570
 
27269
 #, c-format
 
27270
@@ -461,10 +450,8 @@
 
27271
 msgstr "onaltılık kayan sabitli \"%.*s\" soneki geçersiz"
 
27272
 
 
27273
 #: expr.c:581
 
27274
-#, fuzzy
 
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"
 
27279
 
 
27280
 #: expr.c:599
 
27281
 #, c-format
 
27282
@@ -472,10 +459,8 @@
 
27283
 msgstr "tamsayı sabitte sonek \"%.*s\" soneki geçersiz"
 
27284
 
 
27285
 #: expr.c:624
 
27286
-#, fuzzy
 
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ı"
 
27291
 
 
27292
 #: expr.c:625
 
27293
 msgid "use of C99 long long integer constant"
 
27294
@@ -486,10 +471,8 @@
 
27295
 msgstr "sanal sabitler bir GCC genişletmesidir"
 
27296
 
 
27297
 #: expr.c:644
 
27298
-#, fuzzy
 
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"
 
27303
 
 
27304
 #: expr.c:737
 
27305
 msgid "integer constant is too large for its type"
 
27306
@@ -517,10 +500,8 @@
 
27307
 msgstr "\"defined\" bu kullanımıyla uyarlanabilir olmayabilir"
 
27308
 
 
27309
 #: expr.c:948
 
27310
-#, fuzzy
 
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ı"
 
27315
 
 
27316
 #: expr.c:953
 
27317
 msgid "floating constant in preprocessor expression"
 
27318
@@ -536,20 +517,17 @@
 
27319
 msgstr "\"%s\" tanımlı değil"
 
27320
 
 
27321
 #: expr.c:1020
 
27322
-#, fuzzy
 
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"
 
27327
 
 
27328
 #: expr.c:1023
 
27329
 msgid "assertions are a deprecated extension"
 
27330
-msgstr ""
 
27331
+msgstr "belirteçler artık kullanılmayan bir ifadedir"
 
27332
 
 
27333
 #: expr.c:1268
 
27334
-#, fuzzy, c-format
 
27335
-#| msgid "unbalanced stack in #if"
 
27336
+#, c-format
 
27337
 msgid "unbalanced stack in %s"
 
27338
-msgstr "#if ifadesinde karşılıksız yığın"
 
27339
+msgstr "%s içinde dengelenmemiş yığın"
 
27340
 
 
27341
 #: expr.c:1288
 
27342
 #, c-format
 
27343
@@ -594,39 +572,39 @@
 
27344
 msgid "division by zero in #if"
 
27345
 msgstr "#if içinde sıfırla bölme"
 
27346
 
 
27347
-#: files.c:504
 
27348
+#: files.c:505
 
27349
 msgid "NULL directory in find_file"
 
27350
 msgstr "find_file içinde boş dizin"
 
27351
 
 
27352
-#: files.c:542
 
27353
+#: files.c:553
 
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"
 
27356
 
 
27357
-#: files.c:545
 
27358
+#: files.c:556
 
27359
 msgid "use -Winvalid-pch for more information"
 
27360
 msgstr "daha fazla bilgi almak için -Winvalid-pch kullanın"
 
27361
 
 
27362
-#: files.c:643
 
27363
+#: files.c:660
 
27364
 #, c-format
 
27365
 msgid "%s is a block device"
 
27366
 msgstr "%s bir blok aygıtıdır"
 
27367
 
 
27368
-#: files.c:660
 
27369
+#: files.c:677
 
27370
 #, c-format
 
27371
 msgid "%s is too large"
 
27372
 msgstr "%s çok büyük"
 
27373
 
 
27374
-#: files.c:700
 
27375
+#: files.c:717
 
27376
 #, c-format
 
27377
 msgid "%s is shorter than expected"
 
27378
 msgstr "%s beklenenden daha kısa"
 
27379
 
 
27380
-#: files.c:935
 
27381
+#: files.c:953
 
27382
 #, c-format
 
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"
 
27385
 
 
27386
-#: files.c:1363
 
27387
+#: files.c:1381
 
27388
 msgid "Multiple include guards may be useful for:\n"
 
27389
 msgstr "Çoklu include önlemleri aşağıdakiler için kullanışlı olabilir:\n"
 
27390
 
 
27391
@@ -717,27 +695,24 @@
 
27392
 #: lex.c:1178 lex.c:1255
 
27393
 #, c-format
 
27394
 msgid "identifier \"%s\" is a special operator name in C++"
 
27395
-msgstr ""
 
27396
+msgstr "\"%s\" belirteci, C++'da özel bir işleç adıdır"
 
27397
 
 
27398
 #: lex.c:1399
 
27399
 msgid "raw string delimiter longer than 16 characters"
 
27400
-msgstr ""
 
27401
+msgstr "ham dizge ayracı 16 karakterden uzun"
 
27402
 
 
27403
 #: lex.c:1402
 
27404
-#, fuzzy, c-format
 
27405
-#| msgid "universal character %.*s is not valid in an identifier"
 
27406
+#, c-format
 
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'"
 
27410
 
 
27411
 #: lex.c:1525 lex.c:1547
 
27412
-#, fuzzy
 
27413
-#| msgid "unterminated #%s"
 
27414
 msgid "unterminated raw string"
 
27415
-msgstr "sonlandırılmamış #%s"
 
27416
+msgstr "bitirilmemiş ham dizge"
 
27417
 
 
27418
 #: lex.c:1573 lex.c:1706
 
27419
 msgid "invalid suffix on literal; C++11 requires a space between literal and identifier"
 
27420
-msgstr ""
 
27421
+msgstr "geçersiz ifade soneki; C++11 ifade ve tanımlayıcı arasında bir boşluk gerektirir"
 
27422
 
 
27423
 #: lex.c:1684
 
27424
 msgid "null character(s) preserved in literal"
 
27425
@@ -785,7 +760,7 @@
 
27426
 
 
27427
 #: macro.c:377
 
27428
 msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
 
27429
-msgstr ""
 
27430
+msgstr "__COUNTER__ -fdirectives-only ile talimat içerisinde genişletildi"
 
27431
 
 
27432
 #: macro.c:535
 
27433
 msgid "invalid string literal, ignoring final '\\'"
 
27434
@@ -823,7 +798,7 @@
 
27435
 #: macro.c:1746
 
27436
 #, c-format
 
27437
 msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90 and ISO C++98"
 
27438
-msgstr ""
 
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"
 
27440
 
 
27441
 #: macro.c:2708
 
27442
 #, c-format
 
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"
 
27446
 
 
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"
 
27451
 
 
27452
-#: pch.c:607
 
27453
-#, fuzzy, c-format
 
27454
-#| msgid "%s: not used because `%s' is defined"
 
27455
+#: pch.c:619
 
27456
+#, c-format
 
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ı"
 
27460
 
 
27461
-#: pch.c:629
 
27462
+#: pch.c:641
 
27463
 #, c-format
 
27464
 msgid "%s: not used because `%.*s' not defined"
 
27465
 msgstr "%s: `%.*s' tanımlı olmadığından kullanılmadı"
 
27466
 
 
27467
-#: pch.c:641
 
27468
+#: pch.c:653
 
27469
 #, c-format
 
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"
 
27472
 
 
27473
-#: pch.c:682
 
27474
+#: pch.c:694
 
27475
 #, c-format
 
27476
 msgid "%s: not used because `%s' is defined"
 
27477
 msgstr "%s: `%s' tanımlı olduğundan kullanılmadı"
 
27478
 
 
27479
-#: pch.c:702
 
27480
-#, fuzzy, c-format
 
27481
-#| msgid "%s: not used because `%s' is defined"
 
27482
+#: pch.c:714
 
27483
+#, c-format
 
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ı"
 
27487
 
 
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"
 
27492
 
 
27493
Index: .
 
27494
===================================================================
 
27495
--- a/src/.     (.../tags/gcc_4_8_2_release)
 
27496
+++ b/src/.     (.../branches/gcc-4_8-branch)
 
27497
 
 
27498
Property changes on: .
 
27499
___________________________________________________________________
 
27500
Modified: svn:mergeinfo
 
27501
   Merged /trunk:r202766,204547,206123-206126,206395,206628