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

« back to all changes in this revision

Viewing changes to .svn/pristine/55/55bd459c1585fc230ae5dd0a1cd42e03a0faee7f.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 20120612 (r200018).
 
2
 
 
3
last_updated()
 
4
{
 
5
        cat > ${dir}LAST_UPDATED <<EOF
 
6
Wed Jun 12 16:42:19 CEST 2013
 
7
Wed Jun 12 14:42:19 UTC 2013 (revision 200018)
 
8
EOF
 
9
}
 
10
 
 
11
LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_1_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: libstdc++-v3/include/Makefile.in
 
16
===================================================================
 
17
--- a/src/libstdc++-v3/include/Makefile.in      (.../tags/gcc_4_8_1_release)
 
18
+++ b/src/libstdc++-v3/include/Makefile.in      (.../branches/gcc-4_8-branch)
 
19
@@ -434,8 +434,7 @@
 
20
        ${bits_srcdir}/valarray_array.tcc \
 
21
        ${bits_srcdir}/valarray_before.h \
 
22
        ${bits_srcdir}/valarray_after.h \
 
23
-       ${bits_srcdir}/vector.tcc \
 
24
-       ${bits_host_headers}
 
25
+       ${bits_srcdir}/vector.tcc
 
26
 
 
27
 bits_host_headers = \
 
28
        ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
 
29
@@ -795,8 +794,7 @@
 
30
        ${ext_srcdir}/vstring.tcc \
 
31
        ${ext_srcdir}/vstring_fwd.h \
 
32
        ${ext_srcdir}/vstring_util.h \
 
33
-       ${ext_compat_headers} \
 
34
-       ${ext_host_headers}
 
35
+       ${ext_compat_headers}
 
36
 
 
37
 ext_compat_headers = \
 
38
        ${backward_srcdir}/hash_set \
 
39
@@ -1461,13 +1459,14 @@
 
40
 
 
41
 stamp-${host_alias}:
 
42
        @-mkdir -p ${host_builddir}
 
43
+       @-mkdir -p ${host_builddir}/../ext
 
44
        @$(STAMP) stamp-${host_alias}
 
45
 
 
46
 # Host includes static.
 
47
 # XXX Missing dependency info for {host_headers_extra}
 
48
-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
 
49
+stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
 
50
        @cd ${host_builddir} && {\
 
51
-         $(LN_S) ${host_headers} . || true ;\
 
52
+         $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
 
53
          $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
 
54
          $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
 
55
          $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
 
56
@@ -1477,6 +1476,9 @@
 
57
          $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
 
58
          $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
 
59
        } 2>/dev/null
 
60
+       @cd ${host_builddir}/../ext && {\
 
61
+         $(LN_S) ${ext_host_headers} . || true ;\
 
62
+       } 2>/dev/null
 
63
        $(STAMP) stamp-host
 
64
 
 
65
 # Host includes dynamic.
 
66
@@ -1688,9 +1690,12 @@
 
67
        for file in ${profile_impl_headers}; do \
 
68
          $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
 
69
        $(mkinstalldirs) $(DESTDIR)${host_installdir}
 
70
-       for file in ${host_headers} ${host_headers_extra} \
 
71
+       for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
 
72
         ${thread_host_headers}; do \
 
73
          $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
 
74
+       $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
 
75
+       for file in ${ext_host_headers}; do \
 
76
+         $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
 
77
 
 
78
 # To remove directories.
 
79
 clean-local:
 
80
Index: libstdc++-v3/include/ext/random
 
81
===================================================================
 
82
--- a/src/libstdc++-v3/include/ext/random       (.../tags/gcc_4_8_1_release)
 
83
+++ b/src/libstdc++-v3/include/ext/random       (.../branches/gcc-4_8-branch)
 
84
@@ -2848,7 +2848,7 @@
 
85
 _GLIBCXX_END_NAMESPACE_VERSION
 
86
 } // namespace __gnu_cxx
 
87
 
 
88
-#include "opt_random.h"
 
89
+#include "ext/opt_random.h"
 
90
 #include "random.tcc"
 
91
 
 
92
 #endif // _GLIBCXX_USE_C99_STDINT_TR1
 
93
Index: libstdc++-v3/include/Makefile.am
 
94
===================================================================
 
95
--- a/src/libstdc++-v3/include/Makefile.am      (.../tags/gcc_4_8_1_release)
 
96
+++ b/src/libstdc++-v3/include/Makefile.am      (.../branches/gcc-4_8-branch)
 
97
@@ -172,8 +172,7 @@
 
98
        ${bits_srcdir}/valarray_array.tcc \
 
99
        ${bits_srcdir}/valarray_before.h \
 
100
        ${bits_srcdir}/valarray_after.h \
 
101
-       ${bits_srcdir}/vector.tcc \
 
102
-       ${bits_host_headers}
 
103
+       ${bits_srcdir}/vector.tcc
 
104
 
 
105
 bits_host_headers = \
 
106
        ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
 
107
@@ -535,8 +534,7 @@
 
108
        ${ext_srcdir}/vstring.tcc \
 
109
        ${ext_srcdir}/vstring_fwd.h \
 
110
        ${ext_srcdir}/vstring_util.h \
 
111
-       ${ext_compat_headers} \
 
112
-       ${ext_host_headers}
 
113
+       ${ext_compat_headers}
 
114
 
 
115
 ext_compat_headers = \
 
116
        ${backward_srcdir}/hash_set \
 
117
@@ -1048,13 +1046,14 @@
 
118
 
 
119
 stamp-${host_alias}:
 
120
        @-mkdir -p ${host_builddir}
 
121
+       @-mkdir -p ${host_builddir}/../ext
 
122
        @$(STAMP) stamp-${host_alias}
 
123
 
 
124
 # Host includes static.
 
125
 # XXX Missing dependency info for {host_headers_extra}
 
126
-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
 
127
+stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
 
128
        @cd ${host_builddir} && {\
 
129
-         $(LN_S) ${host_headers} . || true ;\
 
130
+         $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
 
131
          $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
 
132
          $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
 
133
          $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
 
134
@@ -1064,6 +1063,9 @@
 
135
          $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
 
136
          $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
 
137
        } 2>/dev/null
 
138
+       @cd ${host_builddir}/../ext && {\
 
139
+         $(LN_S) ${ext_host_headers} . || true ;\
 
140
+       } 2>/dev/null
 
141
        $(STAMP) stamp-host
 
142
 
 
143
 # Host includes dynamic.
 
144
@@ -1290,9 +1292,12 @@
 
145
        for file in ${profile_impl_headers}; do \
 
146
          $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
 
147
        $(mkinstalldirs) $(DESTDIR)${host_installdir}
 
148
-       for file in ${host_headers} ${host_headers_extra} \
 
149
+       for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
 
150
         ${thread_host_headers}; do \
 
151
          $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
 
152
+       $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
 
153
+       for file in ${ext_host_headers}; do \
 
154
+         $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
 
155
 
 
156
 # By adding these files here, automake will remove them for 'make clean'
 
157
 CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
 
158
Index: libstdc++-v3/ChangeLog
 
159
===================================================================
 
160
--- a/src/libstdc++-v3/ChangeLog        (.../tags/gcc_4_8_1_release)
 
161
+++ b/src/libstdc++-v3/ChangeLog        (.../branches/gcc-4_8-branch)
 
162
@@ -1,3 +1,17 @@
 
163
+2013-06-11  Matthias Klose  <doko@ubuntu.com>
 
164
+
 
165
+       * include/Makefile.am (bits_headers): Remove ${bits_host_headers}.
 
166
+       (ext_headers): Remove ${ext_host_headers}.
 
167
+       (stamp-${host_alias}): Create ${host_builddir}/../ext.
 
168
+       (stamp-host): Link ${bits_host_headers} and ${ext_host_headers}.
 
169
+       (install-headers): Install ${bits_host_headers} and ${ext_host_headers}.
 
170
+       * include/Makefile.in: Regenerate.
 
171
+       * include/ext/random: Include ext/opt_random.h.
 
172
+
 
173
+2013-06-07  Uros Bizjak  <ubizjak@gmail.com>
 
174
+
 
175
+       * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
 
176
+
 
177
 2013-05-31  Release Manager
 
178
 
 
179
        * GCC 4.8.1 released.
 
180
Index: libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
 
181
===================================================================
 
182
--- a/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt     (.../tags/gcc_4_8_1_release)
 
183
+++ b/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt     (.../branches/gcc-4_8-branch)
 
184
@@ -543,6 +543,7 @@
 
185
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
 
186
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
 
187
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
 
188
+FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
 
189
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
 
190
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
 
191
 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
 
192
@@ -732,6 +733,8 @@
 
193
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
 
194
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
 
195
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
 
196
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18
 
197
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18
 
198
 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
 
199
 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
 
200
 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
 
201
@@ -1353,6 +1356,7 @@
 
202
 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
 
203
 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
 
204
 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
 
205
+FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@@GLIBCXX_3.4.18
 
206
 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
 
207
 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
 
208
 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
 
209
@@ -1635,6 +1639,11 @@
 
210
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
 
211
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
 
212
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
 
213
+FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18
 
214
+FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18
 
215
+FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18
 
216
+FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
 
217
+FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
 
218
 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
 
219
 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
 
220
 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
 
221
@@ -2119,6 +2128,8 @@
 
222
 FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
 
223
 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
 
224
 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
 
225
+FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 
226
+FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 
227
 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
 
228
 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
 
229
 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
 
230
@@ -2678,6 +2689,7 @@
 
231
 FUNC:__cxa_guard_release@@CXXABI_1.3
 
232
 FUNC:__cxa_pure_virtual@@CXXABI_1.3
 
233
 FUNC:__cxa_rethrow@@CXXABI_1.3
 
234
+FUNC:__cxa_thread_atexit@@CXXABI_1.3.7
 
235
 FUNC:__cxa_throw@@CXXABI_1.3
 
236
 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1
 
237
 FUNC:__cxa_vec_cctor@@CXXABI_1.3
 
238
@@ -2724,6 +2736,7 @@
 
239
 OBJECT:0:CXXABI_1.3.4
 
240
 OBJECT:0:CXXABI_1.3.5
 
241
 OBJECT:0:CXXABI_1.3.6
 
242
+OBJECT:0:CXXABI_1.3.7
 
243
 OBJECT:0:CXXABI_LDBL_1.3
 
244
 OBJECT:0:CXXABI_TM_1
 
245
 OBJECT:0:GLIBCXX_3.4
 
246
@@ -2736,6 +2749,8 @@
 
247
 OBJECT:0:GLIBCXX_3.4.15
 
248
 OBJECT:0:GLIBCXX_3.4.16
 
249
 OBJECT:0:GLIBCXX_3.4.17
 
250
+OBJECT:0:GLIBCXX_3.4.18
 
251
+OBJECT:0:GLIBCXX_3.4.19
 
252
 OBJECT:0:GLIBCXX_3.4.2
 
253
 OBJECT:0:GLIBCXX_3.4.3
 
254
 OBJECT:0:GLIBCXX_3.4.4
 
255
@@ -3193,6 +3208,8 @@
 
256
 OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
 
257
 OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
 
258
 OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
 
259
+OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19
 
260
+OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19
 
261
 OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
 
262
 OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
 
263
 OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
 
264
Index: libgcc/config.host
 
265
===================================================================
 
266
--- a/src/libgcc/config.host    (.../tags/gcc_4_8_1_release)
 
267
+++ b/src/libgcc/config.host    (.../branches/gcc-4_8-branch)
 
268
@@ -316,7 +316,7 @@
 
269
        md_unwind_header=alpha/vms-unwind.h
 
270
        ;;
 
271
 arm-wrs-vxworks)
 
272
-       tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
 
273
+       tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
 
274
        extra_parts="$extra_parts crti.o crtn.o"
 
275
        ;;
 
276
 arm*-*-netbsdelf*)
 
277
Index: libgcc/ChangeLog
 
278
===================================================================
 
279
--- a/src/libgcc/ChangeLog      (.../tags/gcc_4_8_1_release)
 
280
+++ b/src/libgcc/ChangeLog      (.../branches/gcc-4_8-branch)
 
281
@@ -1,3 +1,22 @@
 
282
+2013-06-08  Walter Lee  <walt@tilera.com>
 
283
+
 
284
+       Backport from mainline:
 
285
+       2013-06-08  Walter Lee  <walt@tilera.com>
 
286
+       
 
287
+       * config/tilepro/atomic.h: Don't include stdint.h or features.h.
 
288
+       Replace int64_t with long long.  Add __extension__ where
 
289
+       appropriate.
 
290
+
 
291
+2013-06-06  Douglas B Rupp  <rupp@adacore.com>
 
292
+
 
293
+       * config.host (arm-wrs-vxworks): Configure with other soft float.
 
294
+
 
295
+2013-05-31  Richard Henderson  <rth@redhat.com>
 
296
+
 
297
+       PR target/49146
 
298
+       * unwind-dw2.c (UNWIND_COLUMN_IN_RANGE): New macro.
 
299
+       (execute_cfa_program): Use it when storing to fs->regs.
 
300
+
 
301
 2013-05-31  Release Manager
 
302
 
 
303
        * GCC 4.8.1 released.
 
304
Index: libgcc/config/tilepro/atomic.h
 
305
===================================================================
 
306
--- a/src/libgcc/config/tilepro/atomic.h        (.../tags/gcc_4_8_1_release)
 
307
+++ b/src/libgcc/config/tilepro/atomic.h        (.../branches/gcc-4_8-branch)
 
308
@@ -92,8 +92,6 @@
 
309
    compare-and-exchange routine, so may be potentially less efficient.  */
 
310
 #endif
 
311
 
 
312
-#include <stdint.h>
 
313
-#include <features.h>
 
314
 #ifdef __tilegx__
 
315
 #include <arch/spr_def.h>
 
316
 #else
 
317
@@ -122,9 +120,9 @@
 
318
 
 
319
 /* 64-bit integer compare-and-exchange.  */
 
320
 static __inline __attribute__ ((always_inline))
 
321
-     int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem,
 
322
-                                                    int64_t oldval,
 
323
-                                                    int64_t newval)
 
324
+     long long arch_atomic_val_compare_and_exchange_8 (volatile long long
 
325
+                                                      *mem, long long oldval,
 
326
+                                                      long long newval)
 
327
 {
 
328
 #ifdef __tilegx__
 
329
   __insn_mtspr (SPR_CMPEXCH_VALUE, oldval);
 
330
@@ -139,7 +137,7 @@
 
331
                        "R04" (newval_lo), "R05" (newval_hi),
 
332
                        "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25",
 
333
                        "r26", "r27", "r28", "r29", "memory");
 
334
-  return ((uint64_t) result_hi) << 32 | result_lo;
 
335
+  return ((long long) result_hi) << 32 | result_lo;
 
336
 #endif
 
337
 }
 
338
 
 
339
@@ -150,11 +148,11 @@
 
340
 
 
341
 
 
342
 #define arch_atomic_val_compare_and_exchange(mem, o, n)                 \
 
343
-  ({                                                                    \
 
344
+  __extension__ ({                                                      \
 
345
     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
 
346
       ((sizeof(*(mem)) == 8) ?                                          \
 
347
        arch_atomic_val_compare_and_exchange_8(                          \
 
348
-         (volatile int64_t*)(mem), (__typeof((o)-(o)))(o),              \
 
349
+         (volatile long long*)(mem), (__typeof((o)-(o)))(o),            \
 
350
          (__typeof((n)-(n)))(n)) :                                      \
 
351
        (sizeof(*(mem)) == 4) ?                                          \
 
352
        arch_atomic_val_compare_and_exchange_4(                          \
 
353
@@ -164,7 +162,7 @@
 
354
   })
 
355
 
 
356
 #define arch_atomic_bool_compare_and_exchange(mem, o, n)                \
 
357
-  ({                                                                    \
 
358
+  __extension__ ({                                                      \
 
359
     __typeof(o) __o = (o);                                              \
 
360
     __builtin_expect(                                                   \
 
361
       __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \
 
362
@@ -174,7 +172,7 @@
 
363
 /* Loop with compare_and_exchange until we guess the correct value.
 
364
    Normally "expr" will be an expression using __old and __value.  */
 
365
 #define __arch_atomic_update_cmpxchg(mem, value, expr)                  \
 
366
-  ({                                                                    \
 
367
+  __extension__ ({                                                      \
 
368
     __typeof(value) __value = (value);                                  \
 
369
     __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess;           \
 
370
     do {                                                                \
 
371
@@ -189,12 +187,14 @@
 
372
 /* Generic atomic op with 8- or 4-byte variant.
 
373
    The _mask, _addend, and _expr arguments are ignored on tilegx.  */
 
374
 #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr)     \
 
375
-  ({                                                                    \
 
376
+  __extension__ ({                                                      \
 
377
     ((__typeof(*(mem)))                                                 \
 
378
      ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op(     \
 
379
-        (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) :   \
 
380
+        (volatile void *)(mem),                                         \
 
381
+        (long long)(__typeof((value)-(value)))(value)) :                \
 
382
       (sizeof(*(mem)) == 4) ? (int)__insn_##op##4(                      \
 
383
-        (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) :   \
 
384
+        (volatile void *)(mem),                                         \
 
385
+        (int)(__typeof((value)-(value)))(value)) :                      \
 
386
       __arch_atomic_error_bad_argument_size()));                        \
 
387
   })
 
388
 
 
389
@@ -224,7 +224,7 @@
 
390
 /* Generic atomic op with 8- or 4-byte variant.
 
391
    The _op argument is ignored on tilepro.  */
 
392
 #define __arch_atomic_update(mem, value, _op, mask, addend, expr)       \
 
393
-  ({                                                                    \
 
394
+  __extension__ ({                                                      \
 
395
     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
 
396
       ((sizeof(*(mem)) == 8) ?                                          \
 
397
        __arch_atomic_update_cmpxchg((mem), (value), (expr)) :           \
 
398
@@ -263,13 +263,13 @@
 
399
   __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value))
 
400
 
 
401
 #define arch_atomic_bit_set(mem, bit)                                   \
 
402
-  ({                                                                    \
 
403
+  __extension__ ({                                                      \
 
404
     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
 
405
     __mask & arch_atomic_or((mem), __mask);                             \
 
406
   })
 
407
 
 
408
 #define arch_atomic_bit_clear(mem, bit)                                 \
 
409
-  ({                                                                    \
 
410
+  __extension__ ({                                                      \
 
411
     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
 
412
     __mask & arch_atomic_and((mem), ~__mask);                           \
 
413
   })
 
414
Index: libgcc/unwind-dw2.c
 
415
===================================================================
 
416
--- a/src/libgcc/unwind-dw2.c   (.../tags/gcc_4_8_1_release)
 
417
+++ b/src/libgcc/unwind-dw2.c   (.../branches/gcc-4_8-branch)
 
418
@@ -59,6 +59,35 @@
 
419
 #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
 
420
 #endif
 
421
 
 
422
+/* ??? For the public function interfaces, we tend to gcc_assert that the
 
423
+   column numbers are in range.  For the dwarf2 unwind info this does happen,
 
424
+   although so far in a case that doesn't actually matter.
 
425
+
 
426
+   See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
 
427
+   the call-saved xmm registers and annotates them.  We havn't bothered
 
428
+   providing support for the xmm registers for the x86_64 port primarily
 
429
+   because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
 
430
+   SEH instead.  Adding the support for unix targets would generally be a
 
431
+   waste.  However, some runtime libraries supplied with ICC do contain such
 
432
+   an unorthodox transition, as well as the unwind info to match.  This loss
 
433
+   of register restoration doesn't matter in practice, because the exception
 
434
+   is caught in the native unix abi, where all of the xmm registers are 
 
435
+   call clobbered.
 
436
+
 
437
+   Ideally, we'd record some bit to notice when we're failing to restore some
 
438
+   register recorded in the unwind info, but to do that we need annotation on
 
439
+   the unix->ms abi edge, so that we know when the register data may be
 
440
+   discarded.  And since this edge is also within the ICC library, we're
 
441
+   unlikely to be able to get the new annotation.
 
442
+
 
443
+   Barring a magic solution to restore the ms abi defined 128-bit xmm registers
 
444
+   (as distictly opposed to the full runtime width) without causing extra
 
445
+   overhead for normal unix abis, the best solution seems to be to simply
 
446
+   ignore unwind data for unknown columns.  */
 
447
+
 
448
+#define UNWIND_COLUMN_IN_RANGE(x) \
 
449
+    __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1)
 
450
+
 
451
 #ifdef REG_VALUE_IN_UNWIND_CONTEXT
 
452
 typedef _Unwind_Word _Unwind_Context_Reg_Val;
 
453
 
 
454
@@ -939,14 +968,19 @@
 
455
          reg = insn & 0x3f;
 
456
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
457
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
458
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
459
-           = REG_SAVED_OFFSET;
 
460
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
461
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
462
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
463
+           {
 
464
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
465
+             fs->regs.reg[reg].loc.offset = offset;
 
466
+           }
 
467
        }
 
468
       else if ((insn & 0xc0) == DW_CFA_restore)
 
469
        {
 
470
          reg = insn & 0x3f;
 
471
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_UNSAVED;
 
472
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
473
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
474
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
475
        }
 
476
       else switch (insn)
 
477
        {
 
478
@@ -977,26 +1011,35 @@
 
479
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
480
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
481
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
482
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
483
-           = REG_SAVED_OFFSET;
 
484
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
485
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
486
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
487
+           {
 
488
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
489
+             fs->regs.reg[reg].loc.offset = offset;
 
490
+           }
 
491
          break;
 
492
 
 
493
        case DW_CFA_restore_extended:
 
494
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
495
          /* FIXME, this is wrong; the CIE might have said that the
 
496
             register was saved somewhere.  */
 
497
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
 
498
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
499
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
500
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
501
          break;
 
502
 
 
503
        case DW_CFA_same_value:
 
504
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
505
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
 
506
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
507
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
508
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
509
          break;
 
510
 
 
511
        case DW_CFA_undefined:
 
512
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
513
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNDEFINED;
 
514
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
515
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
516
+           fs->regs.reg[reg].how = REG_UNDEFINED;
 
517
          break;
 
518
 
 
519
        case DW_CFA_nop:
 
520
@@ -1007,9 +1050,12 @@
 
521
            _uleb128_t reg2;
 
522
            insn_ptr = read_uleb128 (insn_ptr, &reg);
 
523
            insn_ptr = read_uleb128 (insn_ptr, &reg2);
 
524
-           fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_REG;
 
525
-           fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.reg =
 
526
-             (_Unwind_Word)reg2;
 
527
+           reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
528
+           if (UNWIND_COLUMN_IN_RANGE (reg))
 
529
+             {
 
530
+               fs->regs.reg[reg].how = REG_SAVED_REG;
 
531
+               fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2;
 
532
+             }
 
533
          }
 
534
          break;
 
535
 
 
536
@@ -1067,8 +1113,12 @@
 
537
 
 
538
        case DW_CFA_expression:
 
539
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
540
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_EXP;
 
541
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
 
542
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
543
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
544
+           {
 
545
+             fs->regs.reg[reg].how = REG_SAVED_EXP;
 
546
+             fs->regs.reg[reg].loc.exp = insn_ptr;
 
547
+           }
 
548
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
549
          insn_ptr += utmp;
 
550
          break;
 
551
@@ -1078,9 +1128,12 @@
 
552
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
553
          insn_ptr = read_sleb128 (insn_ptr, &stmp);
 
554
          offset = stmp * fs->data_align;
 
555
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
556
-           = REG_SAVED_OFFSET;
 
557
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
558
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
559
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
560
+           {
 
561
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
562
+             fs->regs.reg[reg].loc.offset = offset;
 
563
+           }
 
564
          break;
 
565
 
 
566
        case DW_CFA_def_cfa_sf:
 
567
@@ -1103,25 +1156,34 @@
 
568
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
569
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
570
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
571
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
572
-           = REG_SAVED_VAL_OFFSET;
 
573
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
574
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
575
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
576
+           {
 
577
+             fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
 
578
+             fs->regs.reg[reg].loc.offset = offset;
 
579
+           }
 
580
          break;
 
581
 
 
582
        case DW_CFA_val_offset_sf:
 
583
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
584
          insn_ptr = read_sleb128 (insn_ptr, &stmp);
 
585
          offset = stmp * fs->data_align;
 
586
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
587
-           = REG_SAVED_VAL_OFFSET;
 
588
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
589
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
590
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
591
+           {
 
592
+             fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
 
593
+             fs->regs.reg[reg].loc.offset = offset;
 
594
+           }
 
595
          break;
 
596
 
 
597
        case DW_CFA_val_expression:
 
598
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
599
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
600
-           = REG_SAVED_VAL_EXP;
 
601
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
 
602
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
603
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
604
+           {
 
605
+             fs->regs.reg[reg].how = REG_SAVED_VAL_EXP;
 
606
+             fs->regs.reg[reg].loc.exp = insn_ptr;
 
607
+           }
 
608
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
609
          insn_ptr += utmp;
 
610
          break;
 
611
@@ -1147,9 +1209,12 @@
 
612
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
613
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
614
          offset = (_Unwind_Word) utmp * fs->data_align;
 
615
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
616
-           = REG_SAVED_OFFSET;
 
617
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = -offset;
 
618
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
619
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
620
+           {
 
621
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
622
+             fs->regs.reg[reg].loc.offset = -offset;
 
623
+           }
 
624
          break;
 
625
 
 
626
        default:
 
627
Index: gcc/DATESTAMP
 
628
===================================================================
 
629
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_1_release)
 
630
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
 
631
@@ -1 +1 @@
 
632
-20130531
 
633
+20130612
 
634
Index: gcc/ipa-cp.c
 
635
===================================================================
 
636
--- a/src/gcc/ipa-cp.c  (.../tags/gcc_4_8_1_release)
 
637
+++ b/src/gcc/ipa-cp.c  (.../branches/gcc-4_8-branch)
 
638
@@ -1507,7 +1507,8 @@
 
639
   tree otr_type;
 
640
   tree t;
 
641
 
 
642
-  if (param_index == -1)
 
643
+  if (param_index == -1
 
644
+      || known_vals.length () <= (unsigned int) param_index)
 
645
     return NULL_TREE;
 
646
 
 
647
   if (!ie->indirect_info->polymorphic)
 
648
@@ -1528,8 +1529,7 @@
 
649
            t = NULL;
 
650
        }
 
651
       else
 
652
-       t = (known_vals.length () > (unsigned int) param_index
 
653
-            ? known_vals[param_index] : NULL);
 
654
+       t = known_vals[param_index];
 
655
 
 
656
       if (t &&
 
657
          TREE_CODE (t) == ADDR_EXPR
 
658
Index: gcc/ChangeLog
 
659
===================================================================
 
660
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release)
 
661
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
 
662
@@ -1,3 +1,79 @@
 
663
+2013-06-12  Martin Jambor  <mjambor@suse.cz>
 
664
+
 
665
+       * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is
 
666
+       within bounds at the beginning of the function.
 
667
+
 
668
+2013-06-12  Jakub Jelinek  <jakub@redhat.com>
 
669
+
 
670
+       PR tree-optimization/57537
 
671
+       * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If
 
672
+       vect_handle_widen_op_by_const, convert oprnd1 to half_type1.
 
673
+
 
674
+2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
 
675
+
 
676
+       Backport from mainline
 
677
+       2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
 
678
+
 
679
+       * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
 
680
+       cmp_code to construct REG_EQUAL note.
 
681
+
 
682
+2013-06-10  Oleg Endo  <olegendo@gcc.gnu.org>
 
683
+
 
684
+       Backport from mainline
 
685
+       2013-05-20  Oleg Endo  <olegendo@gcc.gnu.org>
 
686
+
 
687
+       PR target/56547
 
688
+       * config/sh/sh.md (fmasf4): Remove empty constraints strings.
 
689
+       (*fmasf4, *fmasf4_media): New insns.
 
690
+
 
691
+2013-06-09  Jakub Jelinek  <jakub@redhat.com>
 
692
+
 
693
+       PR target/57568
 
694
+       * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
 
695
+       that operands[2] doesn't overlap with operands[0].
 
696
+
 
697
+2013-06-07  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
 
698
+
 
699
+       * recog.c (offsettable_address_addr_space_p): Fix calculation of
 
700
+       address mode.  Move pointer mode initialization to the same place.
 
701
+
 
702
+2013-06-07  Uros Bizjak  <ubizjak@gmail.com>
 
703
+
 
704
+       Backport from mainline
 
705
+       2013-06-05  Uros Bizjak  <ubizjak@gmail.com>
 
706
+
 
707
+       * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
 
708
+       GE, GT, GEU and GTU compares, modulo DImode compares with zero.
 
709
+
 
710
+       Backport from mainline
 
711
+       2013-05-23  Uros Bizjak  <ubizjak@gmail.com>
 
712
+
 
713
+       PR target/57379
 
714
+       * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE.
 
715
+       * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct
 
716
+       REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec.
 
717
+
 
718
+2013-06-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
719
+
 
720
+       Backport from mainline.
 
721
+       2013-05-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
722
+
 
723
+       * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define.
 
724
+
 
725
+2013-06-03  James Greenhalgh  <james.greenhalgh@arm.com>
 
726
+
 
727
+       Backport from mainline.
 
728
+       2013-04-25  James Greenhalgh  <james.greenhalgh@arm.com>
 
729
+
 
730
+       * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf
 
731
+       format specifier in 'X' case.
 
732
+
 
733
+2013-05-31  Richard Henderson  <rth@redhat.com>
 
734
+
 
735
+       PR target/56742
 
736
+       * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
 
737
+       (ix86_reorg): Call it.
 
738
+
 
739
 2013-05-31  Release Manager
 
740
 
 
741
        * GCC 4.8.1 released.
 
742
@@ -7,7 +93,7 @@
 
743
        Backport from mainline
 
744
        2013-05-02  Greta Yorsh  <Greta.Yorsh@arm.com>
 
745
 
 
746
-        PR target/56732
 
747
+       PR target/56732
 
748
        * config/arm/arm.c (arm_expand_epilogue): Check really_return before
 
749
        generating simple_return for naked functions.
 
750
 
 
751
@@ -203,14 +289,14 @@
 
752
 
 
753
 2013-05-09  Martin Jambor  <mjambor@suse.cz>
 
754
 
 
755
-        PR middle-end/56988
 
756
-        * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref.
 
757
-        * ipa-cp.c (find_aggregate_values_for_callers_subset): Fill in the
 
758
+       PR middle-end/56988
 
759
+       * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref.
 
760
+       * ipa-cp.c (find_aggregate_values_for_callers_subset): Fill in the
 
761
        by_ref flag of ipa_agg_replacement_value structures.
 
762
-        (known_aggs_to_agg_replacement_list): Likewise.
 
763
-        * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag.
 
764
-        (read_agg_replacement_chain): Likewise.
 
765
-        (ipcp_transform_function): Also check that by_ref flags match.
 
766
+       (known_aggs_to_agg_replacement_list): Likewise.
 
767
+       * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag.
 
768
+       (read_agg_replacement_chain): Likewise.
 
769
+       (ipcp_transform_function): Also check that by_ref flags match.
 
770
 
 
771
 2013-05-08  Diego Novillo  <dnovillo@google.com>
 
772
 
 
773
@@ -315,7 +401,7 @@
 
774
        2013-04-25  Marek Polacek  <polacek@redhat.com>
 
775
 
 
776
        PR tree-optimization/57066
 
777
-        * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
 
778
+       * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
 
779
 
 
780
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
781
 
 
782
@@ -351,40 +437,40 @@
 
783
        Backport from mainline
 
784
        2013-04-24  Vladimir Makarov  <vmakarov@redhat.com>
 
785
 
 
786
-        PR rtl-optimizations/57046
 
787
-        * lra-constraints (split_reg): Set up lra_risky_transformations_p
 
788
-        for multi-reg splits.
 
789
+       PR rtl-optimizations/57046
 
790
+       * lra-constraints (split_reg): Set up lra_risky_transformations_p
 
791
+       for multi-reg splits.
 
792
 
 
793
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
794
 
 
795
        Backport from mainline
 
796
        2013-04-22  Vladimir Makarov  <vmakarov@redhat.com>
 
797
 
 
798
-        PR target/57018
 
799
-        * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
 
800
-        a set sp if no stack realignment.
 
801
+       PR target/57018
 
802
+       * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
 
803
+       a set sp if no stack realignment.
 
804
 
 
805
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
806
 
 
807
        Backport from mainline
 
808
        2013-04-18  Vladimir Makarov  <vmakarov@redhat.com>
 
809
 
 
810
-        PR rtl-optimization/56999
 
811
-        * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
 
812
-        related code.
 
813
-        (lra_coalesce): Remove split_origin_bitmap and related code.
 
814
-        * lra.c (lra): Coalesce after undoing inheritance. Recreate live
 
815
-        ranges if necessary.
 
816
+       PR rtl-optimization/56999
 
817
+       * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
 
818
+       related code.
 
819
+       (lra_coalesce): Remove split_origin_bitmap and related code.
 
820
+       * lra.c (lra): Coalesce after undoing inheritance. Recreate live
 
821
+       ranges if necessary.
 
822
 
 
823
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
824
 
 
825
        Backport from mainline
 
826
        2013-04-19  Vladimir Makarov  <vmakarov@redhat.com>
 
827
 
 
828
-        PR rtl-optimization/56847
 
829
-        * lra-constraints.c (process_alt_operands): Discourage alternative
 
830
-        with non-matche doffsettable memory constraint fro memory with
 
831
-        known offset.
 
832
+       PR rtl-optimization/56847
 
833
+       * lra-constraints.c (process_alt_operands): Discourage alternative
 
834
+       with non-matche doffsettable memory constraint fro memory with
 
835
+       known offset.
 
836
 
 
837
 2013-05-02  Ian Bolton  <ian.bolton@arm.com>
 
838
 
 
839
Index: gcc/testsuite/gcc.target/sh/pr56547-2.c
 
840
===================================================================
 
841
--- a/src/gcc/testsuite/gcc.target/sh/pr56547-2.c       (.../tags/gcc_4_8_1_release)
 
842
+++ b/src/gcc/testsuite/gcc.target/sh/pr56547-2.c       (.../branches/gcc-4_8-branch)
 
843
@@ -0,0 +1,18 @@
 
844
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
 
845
+   'a * a + a' when -ffast-math is specified.  */
 
846
+/* { dg-do compile { target "sh*-*-*" } } */
 
847
+/* { dg-options "-O1 -ffast-math" } */
 
848
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 
849
+/* { dg-final { scan-assembler-times "fmac" 2 } } */
 
850
+
 
851
+float
 
852
+test_00 (float a, float b)
 
853
+{
 
854
+  return a * b + a;
 
855
+}
 
856
+
 
857
+float
 
858
+test_01 (float a)
 
859
+{
 
860
+  return a * a + a;
 
861
+}
 
862
Index: gcc/testsuite/gcc.target/sh/pr56547-1.c
 
863
===================================================================
 
864
--- a/src/gcc/testsuite/gcc.target/sh/pr56547-1.c       (.../tags/gcc_4_8_1_release)
 
865
+++ b/src/gcc/testsuite/gcc.target/sh/pr56547-1.c       (.../branches/gcc-4_8-branch)
 
866
@@ -0,0 +1,19 @@
 
867
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
 
868
+   'a * a + a'.
 
869
+   This assumes that the default compiler setting is -ffp-contract=fast.  */
 
870
+/* { dg-do compile { target "sh*-*-*" } } */
 
871
+/* { dg-options "-O1" } */
 
872
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } }  */
 
873
+/* { dg-final { scan-assembler-times "fmac" 2 } } */
 
874
+
 
875
+float
 
876
+test_00 (float a, float b)
 
877
+{
 
878
+  return a * b + a;
 
879
+}
 
880
+
 
881
+float
 
882
+test_01 (float a)
 
883
+{
 
884
+  return a * a + a;
 
885
+}
 
886
Index: gcc/testsuite/gfortran.dg/defined_assignment_7.f90
 
887
===================================================================
 
888
--- a/src/gcc/testsuite/gfortran.dg/defined_assignment_7.f90    (.../tags/gcc_4_8_1_release)
 
889
+++ b/src/gcc/testsuite/gfortran.dg/defined_assignment_7.f90    (.../branches/gcc-4_8-branch)
 
890
@@ -0,0 +1,29 @@
 
891
+! { dg-compile }
 
892
+!
 
893
+! PR fortran/57508
 
894
+!
 
895
+module ForTrilinos_ref_counter
 
896
+  type ref_counter
 
897
+  contains
 
898
+      procedure :: assign
 
899
+      generic   :: assignment(=) => assign
 
900
+  end type
 
901
+contains
 
902
+  subroutine assign (lhs, rhs)
 
903
+    class (ref_counter), intent(inout) :: lhs
 
904
+    class (ref_counter), intent(in) :: rhs
 
905
+  end subroutine
 
906
+end module
 
907
+module FEpetra_BlockMap
 
908
+  use ForTrilinos_ref_counter, only : ref_counter
 
909
+  type :: Epetra_BlockMap 
 
910
+    type(ref_counter) :: counter
 
911
+  end type
 
912
+contains
 
913
+  function from_struct() result(new_Epetra_BlockMap)
 
914
+    type(Epetra_BlockMap) :: new_Epetra_BlockMap
 
915
+  end function
 
916
+  type(Epetra_BlockMap) function create_arbitrary()
 
917
+    create_arbitrary = from_struct()
 
918
+  end function
 
919
+end module
 
920
Index: gcc/testsuite/gfortran.dg/defined_assignment_6.f90
 
921
===================================================================
 
922
--- a/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90    (.../tags/gcc_4_8_1_release)
 
923
+++ b/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90    (.../branches/gcc-4_8-branch)
 
924
@@ -0,0 +1,36 @@
 
925
+! { dg-do compile }
 
926
+!
 
927
+! PR fortran/57364
 
928
+!
 
929
+! Contributed by Damian Rouson
 
930
+!
 
931
+module ref_counter_implementation
 
932
+  type ref_counter
 
933
+  contains
 
934
+    procedure :: assign
 
935
+    generic :: assignment(=) => assign
 
936
+  end type
 
937
+contains
 
938
+  subroutine assign (lhs, rhs)
 
939
+    class (ref_counter), intent(inout) :: lhs
 
940
+    class (ref_counter), intent(in) :: rhs
 
941
+  end subroutine
 
942
+end module
 
943
+module foo_parent_implementation
 
944
+  use ref_counter_implementation ,only: ref_counter
 
945
+  type :: foo_parent
 
946
+    type(ref_counter) :: counter
 
947
+  end type
 
948
+contains
 
949
+  type(foo_parent) function new_foo_parent()
 
950
+  end function
 
951
+end module
 
952
+module foo_implementation
 
953
+  use foo_parent_implementation ,only: foo_parent,new_foo_parent
 
954
+  type, extends(foo_parent) :: foo
 
955
+  end type
 
956
+contains
 
957
+  type(foo) function new_foo()
 
958
+    new_foo%foo_parent = new_foo_parent()
 
959
+ end function
 
960
+end module
 
961
Index: gcc/testsuite/gfortran.dg/typebound_override_4.f90
 
962
===================================================================
 
963
--- a/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90    (.../tags/gcc_4_8_1_release)
 
964
+++ b/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90    (.../branches/gcc-4_8-branch)
 
965
@@ -0,0 +1,34 @@
 
966
+! { dg-do compile }
 
967
+!
 
968
+! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
 
969
+!
 
970
+! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
 
971
+
 
972
+module base_mod
 
973
+  implicit none
 
974
+  type base_type
 
975
+  contains
 
976
+    procedure, pass(map)  :: clone    => base_clone
 
977
+  end type
 
978
+contains
 
979
+  subroutine  base_clone(map,mapout)
 
980
+    class(base_type) :: map
 
981
+    class(base_type) :: mapout
 
982
+  end subroutine
 
983
+end module
 
984
+
 
985
+module r_mod
 
986
+  use base_mod
 
987
+  implicit none
 
988
+  type, extends(base_type) :: r_type
 
989
+  contains
 
990
+    procedure, pass(map)  :: clone    => r_clone   ! { dg-error "Type/rank mismatch in argument" }
 
991
+  end type
 
992
+contains
 
993
+  subroutine  r_clone(map,mapout)
 
994
+    class(r_type) :: map
 
995
+    class(r_type) :: mapout
 
996
+  end subroutine
 
997
+end module
 
998
+
 
999
+! { dg-final { cleanup-modules "base_mod r_mod" } }
 
1000
Index: gcc/testsuite/gcc.c-torture/execute/pr57568.c
 
1001
===================================================================
 
1002
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../tags/gcc_4_8_1_release)
 
1003
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../branches/gcc-4_8-branch)
 
1004
@@ -0,0 +1,12 @@
 
1005
+/* PR target/57568 */
 
1006
+
 
1007
+extern void abort (void);
 
1008
+int a[6][9] = { }, b = 1, *c = &a[3][5];
 
1009
+
 
1010
+int
 
1011
+main ()
 
1012
+{
 
1013
+  if (b && (*c = *c + *c))
 
1014
+    abort ();
 
1015
+  return 0;
 
1016
+}
 
1017
Index: gcc/testsuite/ChangeLog
 
1018
===================================================================
 
1019
--- a/src/gcc/testsuite/ChangeLog       (.../tags/gcc_4_8_1_release)
 
1020
+++ b/src/gcc/testsuite/ChangeLog       (.../branches/gcc-4_8-branch)
 
1021
@@ -1,3 +1,36 @@
 
1022
+2013-06-11  Tobias Burnus  <burnus@net-b.de>
 
1023
+
 
1024
+       PR fortran/57508
 
1025
+       * gfortran.dg/defined_assignment_7.f90: New.
 
1026
+
 
1027
+2013-06-10  Oleg Endo  <olegendo@gcc.gnu.org>
 
1028
+
 
1029
+       Backport from mainline
 
1030
+       2013-05-20  Oleg Endo  <olegendo@gcc.gnu.org>
 
1031
+
 
1032
+       PR target/56547
 
1033
+       * gcc.target/sh/pr56547-1.c: New.
 
1034
+       * gcc.target/sh/pr56547-2.c: New.
 
1035
+
 
1036
+2013-06-09  Jakub Jelinek  <jakub@redhat.com>
 
1037
+
 
1038
+       PR target/57568
 
1039
+       * gcc.c-torture/execute/pr57568.c: New test.
 
1040
+
 
1041
+2013-06-04  Tobias Burnus  <burnus@net-b.de>
 
1042
+
 
1043
+       Backport from mainline
 
1044
+       2013-05-22  Tobias Burnus  <burnus@net-b.de>
 
1045
+
 
1046
+       PR fortran/57364
 
1047
+       * gfortran.dg/defined_assignment_6.f90: New.
 
1048
+
 
1049
+2013-05-31  Janus Weil  <janus@gcc.gnu.org>
 
1050
+           Tobias Burnus  <burnus@net-b.de>
 
1051
+
 
1052
+       PR fortran/57217
 
1053
+       * gfortran.dg/typebound_override_4.f90: New.
 
1054
+
 
1055
 2013-05-31  Release Manager
 
1056
 
 
1057
        * GCC 4.8.1 released.
 
1058
Index: gcc/testsuite/g++.dg/cpp0x/initlist71.C
 
1059
===================================================================
 
1060
--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C       (.../tags/gcc_4_8_1_release)
 
1061
+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C       (.../branches/gcc-4_8-branch)
 
1062
@@ -0,0 +1,9 @@
 
1063
+// PR c++/56930
 
1064
+// { dg-require-effective-target c++11 }
 
1065
+// { dg-options -Wconversion }
 
1066
+
 
1067
+int main()
 
1068
+{
 
1069
+  int x = sizeof(int);
 
1070
+  int y { sizeof(int) };
 
1071
+}
 
1072
Index: gcc/testsuite/g++.dg/cpp0x/defaulted44.C
 
1073
===================================================================
 
1074
--- a/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C      (.../tags/gcc_4_8_1_release)
 
1075
+++ b/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C      (.../branches/gcc-4_8-branch)
 
1076
@@ -0,0 +1,24 @@
 
1077
+// PR c++/57319
 
1078
+// { dg-require-effective-target c++11 }
 
1079
+
 
1080
+namespace N1 {
 
1081
+  struct A { };
 
1082
+  struct B: virtual A { };
 
1083
+  struct C: virtual B { };
 
1084
+
 
1085
+  struct D: C
 
1086
+  {
 
1087
+    void operator= (D &);
 
1088
+  };
 
1089
+}
 
1090
+
 
1091
+namespace N2 {
 
1092
+  struct A { A& operator=(A&&); };
 
1093
+  struct B: virtual A { };     // { dg-warning "move assignment" }
 
1094
+  struct C: virtual B { };     // { dg-warning "move assignment" }
 
1095
+
 
1096
+  struct D: C
 
1097
+  {
 
1098
+    void operator= (D &);
 
1099
+  };
 
1100
+}
 
1101
Index: gcc/cp/class.c
 
1102
===================================================================
 
1103
--- a/src/gcc/cp/class.c        (.../tags/gcc_4_8_1_release)
 
1104
+++ b/src/gcc/cp/class.c        (.../branches/gcc-4_8-branch)
 
1105
@@ -4833,6 +4833,44 @@
 
1106
   return false;
 
1107
 }
 
1108
 
 
1109
+/* TYPE is being used as a virtual base, and has a non-trivial move
 
1110
+   assignment.  Return true if this is due to there being a user-provided
 
1111
+   move assignment in TYPE or one of its subobjects; if there isn't, then
 
1112
+   multiple move assignment can't cause any harm.  */
 
1113
+
 
1114
+bool
 
1115
+vbase_has_user_provided_move_assign (tree type)
 
1116
+{
 
1117
+  /* Does the type itself have a user-provided move assignment operator?  */
 
1118
+  for (tree fns
 
1119
+        = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
 
1120
+       fns; fns = OVL_NEXT (fns))
 
1121
+    {
 
1122
+      tree fn = OVL_CURRENT (fns);
 
1123
+      if (move_fn_p (fn) && user_provided_p (fn))
 
1124
+       return true;
 
1125
+    }
 
1126
+
 
1127
+  /* Do any of its bases?  */
 
1128
+  tree binfo = TYPE_BINFO (type);
 
1129
+  tree base_binfo;
 
1130
+  for (int i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
 
1131
+    if (vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo)))
 
1132
+      return true;
 
1133
+
 
1134
+  /* Or non-static data members?  */
 
1135
+  for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
 
1136
+    {
 
1137
+      if (TREE_CODE (field) == FIELD_DECL
 
1138
+         && CLASS_TYPE_P (TREE_TYPE (field))
 
1139
+         && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
 
1140
+       return true;
 
1141
+    }
 
1142
+
 
1143
+  /* Seems not.  */
 
1144
+  return false;
 
1145
+}
 
1146
+
 
1147
 /* If default-initialization leaves part of TYPE uninitialized, returns
 
1148
    a DECL for the field or TYPE itself (DR 253).  */
 
1149
 
 
1150
Index: gcc/cp/method.c
 
1151
===================================================================
 
1152
--- a/src/gcc/cp/method.c       (.../tags/gcc_4_8_1_release)
 
1153
+++ b/src/gcc/cp/method.c       (.../branches/gcc-4_8-branch)
 
1154
@@ -1340,7 +1340,8 @@
 
1155
       if (diag && assign_p && move_p
 
1156
          && BINFO_VIRTUAL_P (base_binfo)
 
1157
          && rval && TREE_CODE (rval) == FUNCTION_DECL
 
1158
-         && move_fn_p (rval) && !trivial_fn_p (rval))
 
1159
+         && move_fn_p (rval) && !trivial_fn_p (rval)
 
1160
+         && vbase_has_user_provided_move_assign (basetype))
 
1161
        warning (OPT_Wvirtual_move_assign,
 
1162
                 "defaulted move assignment for %qT calls a non-trivial "
 
1163
                 "move assignment operator for virtual base %qT",
 
1164
Index: gcc/cp/ChangeLog
 
1165
===================================================================
 
1166
--- a/src/gcc/cp/ChangeLog      (.../tags/gcc_4_8_1_release)
 
1167
+++ b/src/gcc/cp/ChangeLog      (.../branches/gcc-4_8-branch)
 
1168
@@ -1,3 +1,16 @@
 
1169
+2013-05-31  Jason Merrill  <jason@redhat.com>
 
1170
+
 
1171
+       PR c++/57319
 
1172
+       * class.c (vbase_has_user_provided_move_assign): New.
 
1173
+       * method.c (synthesized_method_walk): Check it.
 
1174
+       * cp-tree.h: Declare it.
 
1175
+
 
1176
+       PR c++/56930
 
1177
+       * call.c (convert_like_real): Use cp_convert_and_check.
 
1178
+       * cvt.c (cp_convert_and_check): Use maybe_constant_value.
 
1179
+       * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR.
 
1180
+       (potential_constant_expression_1): Handle OMP_ATOMIC*.
 
1181
+
 
1182
 2013-05-31  Release Manager
 
1183
 
 
1184
        * GCC 4.8.1 released.
 
1185
Index: gcc/cp/semantics.c
 
1186
===================================================================
 
1187
--- a/src/gcc/cp/semantics.c    (.../tags/gcc_4_8_1_release)
 
1188
+++ b/src/gcc/cp/semantics.c    (.../branches/gcc-4_8-branch)
 
1189
@@ -7990,6 +7990,7 @@
 
1190
     case UNGT_EXPR:
 
1191
     case UNGE_EXPR:
 
1192
     case UNEQ_EXPR:
 
1193
+    case LTGT_EXPR:
 
1194
     case RANGE_EXPR:
 
1195
     case COMPLEX_EXPR:
 
1196
       r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
 
1197
@@ -8846,6 +8847,12 @@
 
1198
        }
 
1199
       return false;
 
1200
 
 
1201
+    case OMP_ATOMIC:
 
1202
+    case OMP_ATOMIC_READ:
 
1203
+    case OMP_ATOMIC_CAPTURE_OLD:
 
1204
+    case OMP_ATOMIC_CAPTURE_NEW:
 
1205
+      return false;
 
1206
+
 
1207
     default:
 
1208
       if (objc_is_property_ref (t))
 
1209
        return false;
 
1210
Index: gcc/cp/call.c
 
1211
===================================================================
 
1212
--- a/src/gcc/cp/call.c (.../tags/gcc_4_8_1_release)
 
1213
+++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch)
 
1214
@@ -6195,8 +6195,8 @@
 
1215
   if (convs->check_narrowing)
 
1216
     check_narrowing (totype, expr);
 
1217
 
 
1218
-  if (issue_conversion_warnings && (complain & tf_warning))
 
1219
-    expr = convert_and_check (totype, expr);
 
1220
+  if (issue_conversion_warnings)
 
1221
+    expr = cp_convert_and_check (totype, expr, complain);
 
1222
   else
 
1223
     expr = convert (totype, expr);
 
1224
 
 
1225
Index: gcc/cp/cvt.c
 
1226
===================================================================
 
1227
--- a/src/gcc/cp/cvt.c  (.../tags/gcc_4_8_1_release)
 
1228
+++ b/src/gcc/cp/cvt.c  (.../branches/gcc-4_8-branch)
 
1229
@@ -620,6 +620,9 @@
 
1230
 
 
1231
   if (TREE_TYPE (expr) == type)
 
1232
     return expr;
 
1233
+
 
1234
+  if (TREE_CODE (expr) == SIZEOF_EXPR)
 
1235
+    expr = maybe_constant_value (expr);
 
1236
   
 
1237
   result = cp_convert (type, expr, complain);
 
1238
 
 
1239
Index: gcc/cp/cp-tree.h
 
1240
===================================================================
 
1241
--- a/src/gcc/cp/cp-tree.h      (.../tags/gcc_4_8_1_release)
 
1242
+++ b/src/gcc/cp/cp-tree.h      (.../branches/gcc-4_8-branch)
 
1243
@@ -5057,6 +5057,7 @@
 
1244
 extern bool user_provided_p                    (tree);
 
1245
 extern bool type_has_user_provided_constructor  (tree);
 
1246
 extern bool type_has_user_provided_default_constructor (tree);
 
1247
+extern bool vbase_has_user_provided_move_assign (tree);
 
1248
 extern tree default_init_uninitialized_part (tree);
 
1249
 extern bool trivial_default_constructor_is_constexpr (tree);
 
1250
 extern bool type_has_constexpr_default_constructor (tree);
 
1251
Index: gcc/recog.c
 
1252
===================================================================
 
1253
--- a/src/gcc/recog.c   (.../tags/gcc_4_8_1_release)
 
1254
+++ b/src/gcc/recog.c   (.../branches/gcc-4_8-branch)
 
1255
@@ -1949,9 +1949,6 @@
 
1256
     (strictp ? strict_memory_address_addr_space_p
 
1257
             : memory_address_addr_space_p);
 
1258
   unsigned int mode_sz = GET_MODE_SIZE (mode);
 
1259
-#ifdef POINTERS_EXTEND_UNSIGNED
 
1260
-  enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
 
1261
-#endif
 
1262
 
 
1263
   if (CONSTANT_ADDRESS_P (y))
 
1264
     return 1;
 
1265
@@ -1962,6 +1959,13 @@
 
1266
   if (mode_dependent_address_p (y, as))
 
1267
     return 0;
 
1268
 
 
1269
+  enum machine_mode address_mode = GET_MODE (y);
 
1270
+  if (address_mode == VOIDmode)
 
1271
+    address_mode = targetm.addr_space.address_mode (as);
 
1272
+#ifdef POINTERS_EXTEND_UNSIGNED
 
1273
+  enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
 
1274
+#endif
 
1275
+
 
1276
   /* ??? How much offset does an offsettable BLKmode reference need?
 
1277
      Clearly that depends on the situation in which it's being used.
 
1278
      However, the current situation in which we test 0xffffffff is
 
1279
@@ -1977,7 +1981,7 @@
 
1280
       int good;
 
1281
 
 
1282
       y1 = *y2;
 
1283
-      *y2 = plus_constant (GET_MODE (y), *y2, mode_sz - 1);
 
1284
+      *y2 = plus_constant (address_mode, *y2, mode_sz - 1);
 
1285
       /* Use QImode because an odd displacement may be automatically invalid
 
1286
         for any wider mode.  But it should be valid for a single byte.  */
 
1287
       good = (*addressp) (QImode, y, as);
 
1288
@@ -1998,20 +2002,20 @@
 
1289
   if (GET_CODE (y) == LO_SUM
 
1290
       && mode != BLKmode
 
1291
       && mode_sz <= GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT)
 
1292
-    z = gen_rtx_LO_SUM (GET_MODE (y), XEXP (y, 0),
 
1293
-                       plus_constant (GET_MODE (y), XEXP (y, 1),
 
1294
+    z = gen_rtx_LO_SUM (address_mode, XEXP (y, 0),
 
1295
+                       plus_constant (address_mode, XEXP (y, 1),
 
1296
                                       mode_sz - 1));
 
1297
 #ifdef POINTERS_EXTEND_UNSIGNED
 
1298
   /* Likewise for a ZERO_EXTEND from pointer_mode.  */
 
1299
   else if (POINTERS_EXTEND_UNSIGNED > 0
 
1300
           && GET_CODE (y) == ZERO_EXTEND
 
1301
           && GET_MODE (XEXP (y, 0)) == pointer_mode)
 
1302
-    z = gen_rtx_ZERO_EXTEND (GET_MODE (y),
 
1303
+    z = gen_rtx_ZERO_EXTEND (address_mode,
 
1304
                             plus_constant (pointer_mode, XEXP (y, 0),
 
1305
                                            mode_sz - 1));
 
1306
 #endif
 
1307
   else
 
1308
-    z = plus_constant (GET_MODE (y), y, mode_sz - 1);
 
1309
+    z = plus_constant (address_mode, y, mode_sz - 1);
 
1310
 
 
1311
   /* Use QImode because an odd displacement may be automatically invalid
 
1312
      for any wider mode.  But it should be valid for a single byte.  */
 
1313
Index: gcc/fortran/interface.c
 
1314
===================================================================
 
1315
--- a/src/gcc/fortran/interface.c       (.../tags/gcc_4_8_1_release)
 
1316
+++ b/src/gcc/fortran/interface.c       (.../branches/gcc-4_8-branch)
 
1317
@@ -1024,7 +1024,8 @@
 
1318
                             bool type_must_agree, char *errmsg, int err_len)
 
1319
 {
 
1320
   /* Check type and rank.  */
 
1321
-  if (type_must_agree && !compare_type_rank (s2, s1))
 
1322
+  if (type_must_agree &&
 
1323
+      (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1)))
 
1324
     {
 
1325
       snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
 
1326
                s1->name);
 
1327
Index: gcc/fortran/ChangeLog
 
1328
===================================================================
 
1329
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_1_release)
 
1330
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch)
 
1331
@@ -1,3 +1,23 @@
 
1332
+2013-06-11  Tobias Burnus  <burnus@net-b.de>
 
1333
+
 
1334
+       PR fortran/57508
 
1335
+       * resolve.c (get_temp_from_expr): Don't copy function
 
1336
+       result attributes to temporary.
 
1337
+
 
1338
+2013-06-04  Tobias Burnus  <burnus@net-b.de>
 
1339
+
 
1340
+       Backport from mainline
 
1341
+       2013-05-22  Tobias Burnus  <burnus@net-b.de>
 
1342
+
 
1343
+       PR fortran/57364
 
1344
+       * resolve.c (get_temp_from_expr): Commit created sym.
 
1345
+
 
1346
+2013-05-31  Janus Weil  <janus@gcc.gnu.org>
 
1347
+           Tobias Burnus  <burnus@net-b.de>
 
1348
+
 
1349
+       PR fortran/57217
 
1350
+       * interface.c (check_dummy_characteristics): Symmetrize type check.
 
1351
+
 
1352
 2013-05-31  Release Manager
 
1353
 
 
1354
        * GCC 4.8.1 released.
 
1355
Index: gcc/fortran/resolve.c
 
1356
===================================================================
 
1357
--- a/src/gcc/fortran/resolve.c (.../tags/gcc_4_8_1_release)
 
1358
+++ b/src/gcc/fortran/resolve.c (.../branches/gcc-4_8-branch)
 
1359
@@ -9746,6 +9746,10 @@
 
1360
 
 
1361
   /* Add the attributes and the arrayspec to the temporary.  */
 
1362
   tmp->n.sym->attr = gfc_expr_attr (e);
 
1363
+  tmp->n.sym->attr.function = 0;
 
1364
+  tmp->n.sym->attr.result = 0;
 
1365
+  tmp->n.sym->attr.flavor = FL_VARIABLE;
 
1366
+
 
1367
   if (as)
 
1368
     {
 
1369
       tmp->n.sym->as = gfc_copy_array_spec (as);
 
1370
@@ -9759,6 +9763,7 @@
 
1371
 
 
1372
   gfc_set_sym_referenced (tmp->n.sym);
 
1373
   gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
 
1374
+  gfc_commit_symbol (tmp->n.sym);
 
1375
   e = gfc_lval_expr_from_sym (tmp->n.sym);
 
1376
 
 
1377
   /* Should the lhs be a section, use its array ref for the
 
1378
Index: gcc/tree-vect-patterns.c
 
1379
===================================================================
 
1380
--- a/src/gcc/tree-vect-patterns.c      (.../tags/gcc_4_8_1_release)
 
1381
+++ b/src/gcc/tree-vect-patterns.c      (.../branches/gcc-4_8-branch)
 
1382
@@ -638,7 +638,10 @@
 
1383
           && vect_handle_widen_op_by_const (last_stmt, MULT_EXPR, oprnd1,
 
1384
                                            &oprnd0, stmts, type,
 
1385
                                            &half_type0, def_stmt0))
 
1386
-        half_type1 = half_type0;
 
1387
+       {
 
1388
+         half_type1 = half_type0;
 
1389
+         oprnd1 = fold_convert (half_type1, oprnd1);
 
1390
+       }
 
1391
       else
 
1392
         return NULL;
 
1393
     }
 
1394
Index: gcc/config/alpha/alpha.md
 
1395
===================================================================
 
1396
--- a/src/gcc/config/alpha/alpha.md     (.../tags/gcc_4_8_1_release)
 
1397
+++ b/src/gcc/config/alpha/alpha.md     (.../branches/gcc-4_8-branch)
 
1398
@@ -23,6 +23,7 @@
 
1399
 ;; Uses of UNSPEC in this file:
 
1400
 
 
1401
 (define_c_enum "unspec" [
 
1402
+  UNSPEC_XFLT_COMPARE
 
1403
   UNSPEC_ARG_HOME
 
1404
   UNSPEC_LDGP1
 
1405
   UNSPEC_INSXH
 
1406
Index: gcc/config/alpha/alpha.c
 
1407
===================================================================
 
1408
--- a/src/gcc/config/alpha/alpha.c      (.../tags/gcc_4_8_1_release)
 
1409
+++ b/src/gcc/config/alpha/alpha.c      (.../branches/gcc-4_8-branch)
 
1410
@@ -2700,12 +2700,12 @@
 
1411
       break;
 
1412
 
 
1413
     case GE:  case GT:  case GEU:  case GTU:
 
1414
-      /* These must be swapped.  */
 
1415
-      if (op1 != CONST0_RTX (cmp_mode))
 
1416
-       {
 
1417
-         code = swap_condition (code);
 
1418
-         tem = op0, op0 = op1, op1 = tem;
 
1419
-       }
 
1420
+      /* These normally need swapping, but for integer zero we have
 
1421
+        special patterns that recognize swapped operands.  */
 
1422
+      if (cmp_mode == DImode && op1 == const0_rtx)
 
1423
+       break;
 
1424
+      code = swap_condition (code);
 
1425
+      tem = op0, op0 = op1, op1 = tem;
 
1426
       break;
 
1427
 
 
1428
     default:
 
1429
@@ -3067,12 +3067,9 @@
 
1430
   operands[1] = op1;
 
1431
   out = gen_reg_rtx (DImode);
 
1432
 
 
1433
-  /* What's actually returned is -1,0,1, not a proper boolean value,
 
1434
-     so use an EXPR_LIST as with a generic libcall instead of a 
 
1435
-     comparison type expression.  */
 
1436
-  note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX);
 
1437
-  note = gen_rtx_EXPR_LIST (VOIDmode, op0, note);
 
1438
-  note = gen_rtx_EXPR_LIST (VOIDmode, func, note);
 
1439
+  /* What's actually returned is -1,0,1, not a proper boolean value.  */
 
1440
+  note = gen_rtx_fmt_ee (cmp_code, VOIDmode, op0, op1);
 
1441
+  note = gen_rtx_UNSPEC (DImode, gen_rtvec (1, note), UNSPEC_XFLT_COMPARE);
 
1442
   alpha_emit_xfloating_libcall (func, out, operands, 2, note);
 
1443
 
 
1444
   return out;
 
1445
Index: gcc/config/i386/i386.md
 
1446
===================================================================
 
1447
--- a/src/gcc/config/i386/i386.md       (.../tags/gcc_4_8_1_release)
 
1448
+++ b/src/gcc/config/i386/i386.md       (.../branches/gcc-4_8-branch)
 
1449
@@ -17043,6 +17043,7 @@
 
1450
   "(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
 
1451
    && peep2_reg_dead_p (4, operands[0])
 
1452
    && !reg_overlap_mentioned_p (operands[0], operands[1])
 
1453
+   && !reg_overlap_mentioned_p (operands[0], operands[2])
 
1454
    && (<MODE>mode != QImode
 
1455
        || immediate_operand (operands[2], QImode)
 
1456
        || q_regs_operand (operands[2], QImode))
 
1457
@@ -17107,6 +17108,7 @@
 
1458
        || immediate_operand (operands[2], SImode)
 
1459
        || q_regs_operand (operands[2], SImode))
 
1460
    && !reg_overlap_mentioned_p (operands[0], operands[1])
 
1461
+   && !reg_overlap_mentioned_p (operands[0], operands[2])
 
1462
    && ix86_match_ccmode (peep2_next_insn (3),
 
1463
                         (GET_CODE (operands[3]) == PLUS
 
1464
                          || GET_CODE (operands[3]) == MINUS)
 
1465
Index: gcc/config/i386/i386.c
 
1466
===================================================================
 
1467
--- a/src/gcc/config/i386/i386.c        (.../tags/gcc_4_8_1_release)
 
1468
+++ b/src/gcc/config/i386/i386.c        (.../branches/gcc-4_8-branch)
 
1469
@@ -35444,6 +35444,46 @@
 
1470
     }
 
1471
 }
 
1472
 
 
1473
+/* Fix up a Windows system unwinder issue.  If an EH region falls thru into
 
1474
+   the epilogue, the Windows system unwinder will apply epilogue logic and
 
1475
+   produce incorrect offsets.  This can be avoided by adding a nop between
 
1476
+   the last insn that can throw and the first insn of the epilogue.  */
 
1477
+
 
1478
+static void
 
1479
+ix86_seh_fixup_eh_fallthru (void)
 
1480
+{
 
1481
+  edge e;
 
1482
+  edge_iterator ei;
 
1483
+
 
1484
+  FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
 
1485
+    {
 
1486
+      rtx insn, next;
 
1487
+
 
1488
+      /* Find the beginning of the epilogue.  */
 
1489
+      for (insn = BB_END (e->src); insn != NULL; insn = PREV_INSN (insn))
 
1490
+       if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG)
 
1491
+         break;
 
1492
+      if (insn == NULL)
 
1493
+       continue;
 
1494
+
 
1495
+      /* We only care about preceeding insns that can throw.  */
 
1496
+      insn = prev_active_insn (insn);
 
1497
+      if (insn == NULL || !can_throw_internal (insn))
 
1498
+       continue;
 
1499
+
 
1500
+      /* Do not separate calls from their debug information.  */
 
1501
+      for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
 
1502
+       if (NOTE_P (next)
 
1503
+            && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
 
1504
+                || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
 
1505
+         insn = next;
 
1506
+       else
 
1507
+         break;
 
1508
+
 
1509
+      emit_insn_after (gen_nops (const1_rtx), insn);
 
1510
+    }
 
1511
+}
 
1512
+
 
1513
 /* Implement machine specific optimizations.  We implement padding of returns
 
1514
    for K8 CPUs and pass to avoid 4 jumps in the single 16 byte window.  */
 
1515
 static void
 
1516
@@ -35453,6 +35493,9 @@
 
1517
      with old MDEP_REORGS that are not CFG based.  Recompute it now.  */
 
1518
   compute_bb_for_insn ();
 
1519
 
 
1520
+  if (TARGET_SEH && current_function_has_exception_handlers ())
 
1521
+    ix86_seh_fixup_eh_fallthru ();
 
1522
+
 
1523
   if (optimize && optimize_function_for_speed_p (cfun))
 
1524
     {
 
1525
       if (TARGET_PAD_SHORT_FUNCTION)
 
1526
Index: gcc/config/sh/sh.md
 
1527
===================================================================
 
1528
--- a/src/gcc/config/sh/sh.md   (.../tags/gcc_4_8_1_release)
 
1529
+++ b/src/gcc/config/sh/sh.md   (.../branches/gcc-4_8-branch)
 
1530
@@ -12073,10 +12073,10 @@
 
1531
 
 
1532
 ;; FMA (fused multiply-add) patterns
 
1533
 (define_expand "fmasf4"
 
1534
-  [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
 
1535
-       (fma:SF (match_operand:SF 1 "fp_arith_reg_operand" "")
 
1536
-               (match_operand:SF 2 "fp_arith_reg_operand" "")
 
1537
-               (match_operand:SF 3 "fp_arith_reg_operand" "")))]
 
1538
+  [(set (match_operand:SF 0 "fp_arith_reg_operand")
 
1539
+       (fma:SF (match_operand:SF 1 "fp_arith_reg_operand")
 
1540
+               (match_operand:SF 2 "fp_arith_reg_operand")
 
1541
+               (match_operand:SF 3 "fp_arith_reg_operand")))]
 
1542
   "TARGET_SH2E || TARGET_SHMEDIA_FPU"
 
1543
 {
 
1544
   if (TARGET_SH2E)
 
1545
@@ -12107,6 +12107,43 @@
 
1546
   "fmac.s %1, %2, %0"
 
1547
   [(set_attr "type" "fparith_media")])
 
1548
 
 
1549
+;; For some cases such as 'a * b + a' the FMA pattern is not generated by
 
1550
+;; previous transformations.  If FMA is generally allowed, let the combine
 
1551
+;; pass utilize it.
 
1552
+(define_insn_and_split "*fmasf4"
 
1553
+  [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
 
1554
+       (plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%w")
 
1555
+                         (match_operand:SF 2 "fp_arith_reg_operand" "f"))
 
1556
+                (match_operand:SF 3 "arith_reg_operand" "0")))
 
1557
+   (use (match_operand:PSI 4 "fpscr_operand"))]
 
1558
+  "TARGET_SH2E && flag_fp_contract_mode != FP_CONTRACT_OFF"
 
1559
+  "fmac        %1,%2,%0"
 
1560
+  "&& can_create_pseudo_p ()"
 
1561
+  [(parallel [(set (match_dup 0)
 
1562
+                  (fma:SF (match_dup 1) (match_dup 2) (match_dup 3)))
 
1563
+             (use (match_dup 4))])]
 
1564
+{
 
1565
+  /* Change 'b * a + a' into 'a * b + a'.
 
1566
+     This is better for register allocation.  */
 
1567
+  if (REGNO (operands[2]) == REGNO (operands[3]))
 
1568
+    {
 
1569
+      rtx tmp = operands[1];
 
1570
+      operands[1] = operands[2];
 
1571
+      operands[2] = tmp;
 
1572
+    }
 
1573
+}
 
1574
+  [(set_attr "type" "fp")
 
1575
+   (set_attr "fp_mode" "single")])
 
1576
+
 
1577
+(define_insn "*fmasf4_media"
 
1578
+  [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
 
1579
+       (plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%f")
 
1580
+                         (match_operand:SF 2 "fp_arith_reg_operand" "f"))
 
1581
+                (match_operand:SF 3 "fp_arith_reg_operand" "0")))]
 
1582
+  "TARGET_SHMEDIA_FPU && flag_fp_contract_mode != FP_CONTRACT_OFF"
 
1583
+  "fmac.s %1, %2, %0"
 
1584
+  [(set_attr "type" "fparith_media")])
 
1585
+
 
1586
 (define_expand "divsf3"
 
1587
   [(set (match_operand:SF 0 "arith_reg_operand" "")
 
1588
        (div:SF (match_operand:SF 1 "arith_reg_operand" "")
 
1589
Index: gcc/config/aarch64/aarch64.c
 
1590
===================================================================
 
1591
--- a/src/gcc/config/aarch64/aarch64.c  (.../tags/gcc_4_8_1_release)
 
1592
+++ b/src/gcc/config/aarch64/aarch64.c  (.../branches/gcc-4_8-branch)
 
1593
@@ -3373,7 +3373,7 @@
 
1594
          output_operand_lossage ("invalid operand for '%%%c'", code);
 
1595
          return;
 
1596
        }
 
1597
-      asm_fprintf (f, "0x%x", UINTVAL (x));
 
1598
+      asm_fprintf (f, "0x%wx", UINTVAL (x));
 
1599
       break;
 
1600
 
 
1601
     case 'w':
 
1602
Index: gcc/config/rs6000/rs6000.h
 
1603
===================================================================
 
1604
--- a/src/gcc/config/rs6000/rs6000.h    (.../tags/gcc_4_8_1_release)
 
1605
+++ b/src/gcc/config/rs6000/rs6000.h    (.../branches/gcc-4_8-branch)
 
1606
@@ -2289,6 +2289,13 @@
 
1607
 /* How to align the given loop. */
 
1608
 #define LOOP_ALIGN(LABEL)  rs6000_loop_align(LABEL)
 
1609
 
 
1610
+/* Alignment guaranteed by __builtin_malloc.  */
 
1611
+/* FIXME:  128-bit alignment is guaranteed by glibc for TARGET_64BIT.
 
1612
+   However, specifying the stronger guarantee currently leads to
 
1613
+   a regression in SPEC CPU2006 437.leslie3d.  The stronger
 
1614
+   guarantee should be implemented here once that's fixed.  */
 
1615
+#define MALLOC_ABI_ALIGNMENT (64)
 
1616
+
 
1617
 /* Pick up the return address upon entry to a procedure. Used for
 
1618
    dwarf2 unwind information.  This also enables the table driven
 
1619
    mechanism.  */
 
1620
Index: fixincludes/ChangeLog
 
1621
===================================================================
 
1622
--- a/src/fixincludes/ChangeLog (.../tags/gcc_4_8_1_release)
 
1623
+++ b/src/fixincludes/ChangeLog (.../branches/gcc-4_8-branch)
 
1624
@@ -1,3 +1,14 @@
 
1625
+2013-05-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
1626
+
 
1627
+       Backport from mainline:
 
1628
+       2013-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
1629
+
 
1630
+       * inclhack.def (solaris_pow_int_overload): Update comment.
 
1631
+       Change guard to match <cmath>.
 
1632
+       * fixincl.x: Regenerate.
 
1633
+       * tests/base/iso/math_iso.h [SOLARIS_POW_INT_OVERLOAD_CHECK]:
 
1634
+       Matching change.
 
1635
+
 
1636
 2013-05-31  Release Manager
 
1637
 
 
1638
        * GCC 4.8.1 released.
 
1639
Index: fixincludes/tests/base/iso/math_iso.h
 
1640
===================================================================
 
1641
--- a/src/fixincludes/tests/base/iso/math_iso.h (.../tags/gcc_4_8_1_release)
 
1642
+++ b/src/fixincludes/tests/base/iso/math_iso.h (.../branches/gcc-4_8-branch)
 
1643
@@ -10,7 +10,7 @@
 
1644
 
 
1645
 
 
1646
 #if defined( SOLARIS_POW_INT_OVERLOAD_CHECK )
 
1647
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
 
1648
+#if __cplusplus < 201103L
 
1649
        inline long double pow(long double __X, int __Y) { return
 
1650
                __powl(__X, (long double) (__Y)); }
 
1651
 #endif
 
1652
Index: fixincludes/fixincl.x
 
1653
===================================================================
 
1654
--- a/src/fixincludes/fixincl.x (.../tags/gcc_4_8_1_release)
 
1655
+++ b/src/fixincludes/fixincl.x (.../branches/gcc-4_8-branch)
 
1656
@@ -2,11 +2,11 @@
 
1657
  * 
 
1658
  * DO NOT EDIT THIS FILE   (fixincl.x)
 
1659
  * 
 
1660
- * It has been AutoGen-ed  Saturday December 29, 2012 at 09:17:09 AM BRST
 
1661
+ * It has been AutoGen-ed  Thursday May 16, 2013 at 03:34:25 PM MEST
 
1662
  * From the definitions    inclhack.def
 
1663
  * and the template file   fixincl
 
1664
  */
 
1665
-/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Dec 29 09:17:10 BRST 2012
 
1666
+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 16 15:34:25 MEST 2013
 
1667
  *
 
1668
  * You must regenerate it.  Use the ./genfixes script.
 
1669
  *
 
1670
@@ -6663,7 +6663,7 @@
 
1671
  */
 
1672
 static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
 
1673
     "format",
 
1674
-    "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
 
1675
+    "#if __cplusplus < 201103L\n\
 
1676
 %0\n\
 
1677
 #endif",
 
1678
     (char*)NULL };
 
1679
Index: fixincludes/inclhack.def
 
1680
===================================================================
 
1681
--- a/src/fixincludes/inclhack.def      (.../tags/gcc_4_8_1_release)
 
1682
+++ b/src/fixincludes/inclhack.def      (.../branches/gcc-4_8-branch)
 
1683
@@ -3447,7 +3447,7 @@
 
1684
 
 
1685
 
 
1686
 /*
 
1687
- *  The pow overloads with int were removed in C++ 2011.
 
1688
+ *  The pow overloads with int were removed in C++ 2011 DR 550.
 
1689
  */
 
1690
 fix = {
 
1691
     hackname  = solaris_pow_int_overload;
 
1692
@@ -3456,7 +3456,7 @@
 
1693
     select    = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
 
1694
                " *\\{[^{}]*\n[^{}]*\\}";
 
1695
     c_fix     = format;
 
1696
-    c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
 
1697
+    c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
 
1698
 
 
1699
     test_text =
 
1700
     "  inline long double pow(long double __X, int __Y) { return\n"