1
# DP: updates from the 4.8 branch upto 20120612 (r199995).
5
cat > ${dir}LAST_UPDATED <<EOF
6
Wed Jun 12 14:25:19 CEST 2013
7
Wed Jun 12 12:25:19 UTC 2013 (revision 199995)
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'
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)
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
28
${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
30
${ext_srcdir}/vstring.tcc \
31
${ext_srcdir}/vstring_fwd.h \
32
${ext_srcdir}/vstring_util.h \
33
- ${ext_compat_headers} \
35
+ ${ext_compat_headers}
37
ext_compat_headers = \
38
${backward_srcdir}/hash_set \
39
@@ -1461,13 +1459,14 @@
42
@-mkdir -p ${host_builddir}
43
+ @-mkdir -p ${host_builddir}/../ext
44
@$(STAMP) stamp-${host_alias}
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 ;\
57
$(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
58
$(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
60
+ @cd ${host_builddir}/../ext && {\
61
+ $(LN_S) ${ext_host_headers} . || true ;\
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
78
# To remove directories.
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)
85
_GLIBCXX_END_NAMESPACE_VERSION
86
} // namespace __gnu_cxx
88
-#include "opt_random.h"
89
+#include "ext/opt_random.h"
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)
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
105
bits_host_headers = \
106
${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
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}
115
ext_compat_headers = \
116
${backward_srcdir}/hash_set \
117
@@ -1048,13 +1046,14 @@
120
@-mkdir -p ${host_builddir}
121
+ @-mkdir -p ${host_builddir}/../ext
122
@$(STAMP) stamp-${host_alias}
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;\
138
+ @cd ${host_builddir}/../ext && {\
139
+ $(LN_S) ${ext_host_headers} . || true ;\
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
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)
163
+2013-06-11 Matthias Klose <doko@ubuntu.com>
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.
173
+2013-06-07 Uros Bizjak <ubizjak@gmail.com>
175
+ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
177
2013-05-31 Release Manager
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)
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
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
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)
269
md_unwind_header=alpha/vms-unwind.h
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"
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)
282
+2013-06-08 Walter Lee <walt@tilera.com>
284
+ Backport from mainline:
285
+ 2013-06-08 Walter Lee <walt@tilera.com>
287
+ * config/tilepro/atomic.h: Don't include stdint.h or features.h.
288
+ Replace int64_t with long long. Add __extension__ where
291
+2013-06-06 Douglas B Rupp <rupp@adacore.com>
293
+ * config.host (arm-wrs-vxworks): Configure with other soft float.
295
+2013-05-31 Richard Henderson <rth@redhat.com>
298
+ * unwind-dw2.c (UNWIND_COLUMN_IN_RANGE): New macro.
299
+ (execute_cfa_program): Use it when storing to fs->regs.
301
2013-05-31 Release Manager
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)
309
compare-and-exchange routine, so may be potentially less efficient. */
313
-#include <features.h>
315
#include <arch/spr_def.h>
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,
324
+ long long arch_atomic_val_compare_and_exchange_8 (volatile long long
325
+ *mem, long long oldval,
329
__insn_mtspr (SPR_CMPEXCH_VALUE, oldval);
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;
339
@@ -150,11 +148,11 @@
342
#define arch_atomic_val_compare_and_exchange(mem, o, n) \
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( \
356
#define arch_atomic_bool_compare_and_exchange(mem, o, n) \
359
__typeof(o) __o = (o); \
361
__o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \
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) \
368
__typeof(value) __value = (value); \
369
__typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \
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) \
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())); \
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) \
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))
401
#define arch_atomic_bit_set(mem, bit) \
404
__typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \
405
__mask & arch_atomic_or((mem), __mask); \
408
#define arch_atomic_bit_clear(mem, bit) \
411
__typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \
412
__mask & arch_atomic_and((mem), ~__mask); \
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)
419
#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
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.
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
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.
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. */
448
+#define UNWIND_COLUMN_IN_RANGE(x) \
449
+ __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1)
451
#ifdef REG_VALUE_IN_UNWIND_CONTEXT
452
typedef _Unwind_Word _Unwind_Context_Reg_Val;
454
@@ -939,14 +968,19 @@
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))
464
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
465
+ fs->regs.reg[reg].loc.offset = offset;
468
else if ((insn & 0xc0) == DW_CFA_restore)
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;
478
@@ -977,26 +1011,35 @@
479
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
488
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
489
+ fs->regs.reg[reg].loc.offset = offset;
493
case DW_CFA_restore_extended:
494
insn_ptr = read_uleb128 (insn_ptr, ®);
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;
503
case DW_CFA_same_value:
504
insn_ptr = read_uleb128 (insn_ptr, ®);
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;
511
case DW_CFA_undefined:
512
insn_ptr = read_uleb128 (insn_ptr, ®);
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;
520
@@ -1007,9 +1050,12 @@
522
insn_ptr = read_uleb128 (insn_ptr, ®);
523
insn_ptr = read_uleb128 (insn_ptr, ®2);
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))
530
+ fs->regs.reg[reg].how = REG_SAVED_REG;
531
+ fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2;
536
@@ -1067,8 +1113,12 @@
538
case DW_CFA_expression:
539
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
545
+ fs->regs.reg[reg].how = REG_SAVED_EXP;
546
+ fs->regs.reg[reg].loc.exp = insn_ptr;
548
insn_ptr = read_uleb128 (insn_ptr, &utmp);
551
@@ -1078,9 +1128,12 @@
552
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
561
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
562
+ fs->regs.reg[reg].loc.offset = offset;
566
case DW_CFA_def_cfa_sf:
567
@@ -1103,25 +1156,34 @@
568
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
577
+ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
578
+ fs->regs.reg[reg].loc.offset = offset;
582
case DW_CFA_val_offset_sf:
583
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
592
+ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
593
+ fs->regs.reg[reg].loc.offset = offset;
597
case DW_CFA_val_expression:
598
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
605
+ fs->regs.reg[reg].how = REG_SAVED_VAL_EXP;
606
+ fs->regs.reg[reg].loc.exp = insn_ptr;
608
insn_ptr = read_uleb128 (insn_ptr, &utmp);
611
@@ -1147,9 +1209,12 @@
612
insn_ptr = read_uleb128 (insn_ptr, ®);
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))
621
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
622
+ fs->regs.reg[reg].loc.offset = -offset;
628
===================================================================
629
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_1_release)
630
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
635
===================================================================
636
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release)
637
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
639
+2013-06-10 Uros Bizjak <ubizjak@gmail.com>
641
+ Backport from mainline
642
+ 2013-06-10 Uros Bizjak <ubizjak@gmail.com>
644
+ * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
645
+ cmp_code to construct REG_EQUAL note.
647
+2013-06-10 Oleg Endo <olegendo@gcc.gnu.org>
649
+ Backport from mainline
650
+ 2013-05-20 Oleg Endo <olegendo@gcc.gnu.org>
653
+ * config/sh/sh.md (fmasf4): Remove empty constraints strings.
654
+ (*fmasf4, *fmasf4_media): New insns.
656
+2013-06-09 Jakub Jelinek <jakub@redhat.com>
659
+ * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
660
+ that operands[2] doesn't overlap with operands[0].
662
+2013-06-07 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
664
+ * recog.c (offsettable_address_addr_space_p): Fix calculation of
665
+ address mode. Move pointer mode initialization to the same place.
667
+2013-06-07 Uros Bizjak <ubizjak@gmail.com>
669
+ Backport from mainline
670
+ 2013-06-05 Uros Bizjak <ubizjak@gmail.com>
672
+ * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
673
+ GE, GT, GEU and GTU compares, modulo DImode compares with zero.
675
+ Backport from mainline
676
+ 2013-05-23 Uros Bizjak <ubizjak@gmail.com>
679
+ * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE.
680
+ * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct
681
+ REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec.
683
+2013-06-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
685
+ Backport from mainline.
686
+ 2013-05-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
688
+ * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define.
690
+2013-06-03 James Greenhalgh <james.greenhalgh@arm.com>
692
+ Backport from mainline.
693
+ 2013-04-25 James Greenhalgh <james.greenhalgh@arm.com>
695
+ * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf
696
+ format specifier in 'X' case.
698
+2013-05-31 Richard Henderson <rth@redhat.com>
701
+ * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
702
+ (ix86_reorg): Call it.
704
2013-05-31 Release Manager
706
* GCC 4.8.1 released.
708
Backport from mainline
709
2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
713
* config/arm/arm.c (arm_expand_epilogue): Check really_return before
714
generating simple_return for naked functions.
716
@@ -203,14 +278,14 @@
718
2013-05-09 Martin Jambor <mjambor@suse.cz>
720
- PR middle-end/56988
721
- * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref.
722
- * ipa-cp.c (find_aggregate_values_for_callers_subset): Fill in the
723
+ PR middle-end/56988
724
+ * ipa-prop.h (ipa_agg_replacement_value): New flag by_ref.
725
+ * ipa-cp.c (find_aggregate_values_for_callers_subset): Fill in the
726
by_ref flag of ipa_agg_replacement_value structures.
727
- (known_aggs_to_agg_replacement_list): Likewise.
728
- * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag.
729
- (read_agg_replacement_chain): Likewise.
730
- (ipcp_transform_function): Also check that by_ref flags match.
731
+ (known_aggs_to_agg_replacement_list): Likewise.
732
+ * ipa-prop.c (write_agg_replacement_chain): Stream by_ref flag.
733
+ (read_agg_replacement_chain): Likewise.
734
+ (ipcp_transform_function): Also check that by_ref flags match.
736
2013-05-08 Diego Novillo <dnovillo@google.com>
739
2013-04-25 Marek Polacek <polacek@redhat.com>
741
PR tree-optimization/57066
742
- * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
743
+ * builtins.c (fold_builtin_logb): Return +Inf for -Inf.
745
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
747
@@ -351,40 +426,40 @@
748
Backport from mainline
749
2013-04-24 Vladimir Makarov <vmakarov@redhat.com>
751
- PR rtl-optimizations/57046
752
- * lra-constraints (split_reg): Set up lra_risky_transformations_p
753
- for multi-reg splits.
754
+ PR rtl-optimizations/57046
755
+ * lra-constraints (split_reg): Set up lra_risky_transformations_p
756
+ for multi-reg splits.
758
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
760
Backport from mainline
761
2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
764
- * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
765
- a set sp if no stack realignment.
767
+ * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
768
+ a set sp if no stack realignment.
770
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
772
Backport from mainline
773
2013-04-18 Vladimir Makarov <vmakarov@redhat.com>
775
- PR rtl-optimization/56999
776
- * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
778
- (lra_coalesce): Remove split_origin_bitmap and related code.
779
- * lra.c (lra): Coalesce after undoing inheritance. Recreate live
780
- ranges if necessary.
781
+ PR rtl-optimization/56999
782
+ * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
784
+ (lra_coalesce): Remove split_origin_bitmap and related code.
785
+ * lra.c (lra): Coalesce after undoing inheritance. Recreate live
786
+ ranges if necessary.
788
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
790
Backport from mainline
791
2013-04-19 Vladimir Makarov <vmakarov@redhat.com>
793
- PR rtl-optimization/56847
794
- * lra-constraints.c (process_alt_operands): Discourage alternative
795
- with non-matche doffsettable memory constraint fro memory with
797
+ PR rtl-optimization/56847
798
+ * lra-constraints.c (process_alt_operands): Discourage alternative
799
+ with non-matche doffsettable memory constraint fro memory with
802
2013-05-02 Ian Bolton <ian.bolton@arm.com>
804
Index: gcc/testsuite/gcc.target/sh/pr56547-2.c
805
===================================================================
806
--- a/src/gcc/testsuite/gcc.target/sh/pr56547-2.c (.../tags/gcc_4_8_1_release)
807
+++ b/src/gcc/testsuite/gcc.target/sh/pr56547-2.c (.../branches/gcc-4_8-branch)
809
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
810
+ 'a * a + a' when -ffast-math is specified. */
811
+/* { dg-do compile { target "sh*-*-*" } } */
812
+/* { dg-options "-O1 -ffast-math" } */
813
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
814
+/* { dg-final { scan-assembler-times "fmac" 2 } } */
817
+test_00 (float a, float b)
827
Index: gcc/testsuite/gcc.target/sh/pr56547-1.c
828
===================================================================
829
--- a/src/gcc/testsuite/gcc.target/sh/pr56547-1.c (.../tags/gcc_4_8_1_release)
830
+++ b/src/gcc/testsuite/gcc.target/sh/pr56547-1.c (.../branches/gcc-4_8-branch)
832
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
834
+ This assumes that the default compiler setting is -ffp-contract=fast. */
835
+/* { dg-do compile { target "sh*-*-*" } } */
836
+/* { dg-options "-O1" } */
837
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m3" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
838
+/* { dg-final { scan-assembler-times "fmac" 2 } } */
841
+test_00 (float a, float b)
851
Index: gcc/testsuite/gfortran.dg/defined_assignment_7.f90
852
===================================================================
853
--- a/src/gcc/testsuite/gfortran.dg/defined_assignment_7.f90 (.../tags/gcc_4_8_1_release)
854
+++ b/src/gcc/testsuite/gfortran.dg/defined_assignment_7.f90 (.../branches/gcc-4_8-branch)
860
+module ForTrilinos_ref_counter
863
+ procedure :: assign
864
+ generic :: assignment(=) => assign
867
+ subroutine assign (lhs, rhs)
868
+ class (ref_counter), intent(inout) :: lhs
869
+ class (ref_counter), intent(in) :: rhs
872
+module FEpetra_BlockMap
873
+ use ForTrilinos_ref_counter, only : ref_counter
874
+ type :: Epetra_BlockMap
875
+ type(ref_counter) :: counter
878
+ function from_struct() result(new_Epetra_BlockMap)
879
+ type(Epetra_BlockMap) :: new_Epetra_BlockMap
881
+ type(Epetra_BlockMap) function create_arbitrary()
882
+ create_arbitrary = from_struct()
885
Index: gcc/testsuite/gfortran.dg/defined_assignment_6.f90
886
===================================================================
887
--- a/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 (.../tags/gcc_4_8_1_release)
888
+++ b/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 (.../branches/gcc-4_8-branch)
894
+! Contributed by Damian Rouson
896
+module ref_counter_implementation
899
+ procedure :: assign
900
+ generic :: assignment(=) => assign
903
+ subroutine assign (lhs, rhs)
904
+ class (ref_counter), intent(inout) :: lhs
905
+ class (ref_counter), intent(in) :: rhs
908
+module foo_parent_implementation
909
+ use ref_counter_implementation ,only: ref_counter
911
+ type(ref_counter) :: counter
914
+ type(foo_parent) function new_foo_parent()
917
+module foo_implementation
918
+ use foo_parent_implementation ,only: foo_parent,new_foo_parent
919
+ type, extends(foo_parent) :: foo
922
+ type(foo) function new_foo()
923
+ new_foo%foo_parent = new_foo_parent()
926
Index: gcc/testsuite/gfortran.dg/typebound_override_4.f90
927
===================================================================
928
--- a/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../tags/gcc_4_8_1_release)
929
+++ b/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../branches/gcc-4_8-branch)
933
+! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
935
+! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
941
+ procedure, pass(map) :: clone => base_clone
944
+ subroutine base_clone(map,mapout)
945
+ class(base_type) :: map
946
+ class(base_type) :: mapout
953
+ type, extends(base_type) :: r_type
955
+ procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" }
958
+ subroutine r_clone(map,mapout)
959
+ class(r_type) :: map
960
+ class(r_type) :: mapout
964
+! { dg-final { cleanup-modules "base_mod r_mod" } }
965
Index: gcc/testsuite/gcc.c-torture/execute/pr57568.c
966
===================================================================
967
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../tags/gcc_4_8_1_release)
968
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr57568.c (.../branches/gcc-4_8-branch)
970
+/* PR target/57568 */
972
+extern void abort (void);
973
+int a[6][9] = { }, b = 1, *c = &a[3][5];
978
+ if (b && (*c = *c + *c))
982
Index: gcc/testsuite/ChangeLog
983
===================================================================
984
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_1_release)
985
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch)
987
+2013-06-11 Tobias Burnus <burnus@net-b.de>
990
+ * gfortran.dg/defined_assignment_7.f90: New.
992
+2013-06-10 Oleg Endo <olegendo@gcc.gnu.org>
994
+ Backport from mainline
995
+ 2013-05-20 Oleg Endo <olegendo@gcc.gnu.org>
998
+ * gcc.target/sh/pr56547-1.c: New.
999
+ * gcc.target/sh/pr56547-2.c: New.
1001
+2013-06-09 Jakub Jelinek <jakub@redhat.com>
1004
+ * gcc.c-torture/execute/pr57568.c: New test.
1006
+2013-06-04 Tobias Burnus <burnus@net-b.de>
1008
+ Backport from mainline
1009
+ 2013-05-22 Tobias Burnus <burnus@net-b.de>
1012
+ * gfortran.dg/defined_assignment_6.f90: New.
1014
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
1015
+ Tobias Burnus <burnus@net-b.de>
1018
+ * gfortran.dg/typebound_override_4.f90: New.
1020
2013-05-31 Release Manager
1022
* GCC 4.8.1 released.
1023
Index: gcc/testsuite/g++.dg/cpp0x/initlist71.C
1024
===================================================================
1025
--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../tags/gcc_4_8_1_release)
1026
+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../branches/gcc-4_8-branch)
1029
+// { dg-require-effective-target c++11 }
1030
+// { dg-options -Wconversion }
1034
+ int x = sizeof(int);
1035
+ int y { sizeof(int) };
1037
Index: gcc/testsuite/g++.dg/cpp0x/defaulted44.C
1038
===================================================================
1039
--- a/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../tags/gcc_4_8_1_release)
1040
+++ b/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../branches/gcc-4_8-branch)
1043
+// { dg-require-effective-target c++11 }
1047
+ struct B: virtual A { };
1048
+ struct C: virtual B { };
1052
+ void operator= (D &);
1057
+ struct A { A& operator=(A&&); };
1058
+ struct B: virtual A { }; // { dg-warning "move assignment" }
1059
+ struct C: virtual B { }; // { dg-warning "move assignment" }
1063
+ void operator= (D &);
1066
Index: gcc/cp/class.c
1067
===================================================================
1068
--- a/src/gcc/cp/class.c (.../tags/gcc_4_8_1_release)
1069
+++ b/src/gcc/cp/class.c (.../branches/gcc-4_8-branch)
1070
@@ -4833,6 +4833,44 @@
1074
+/* TYPE is being used as a virtual base, and has a non-trivial move
1075
+ assignment. Return true if this is due to there being a user-provided
1076
+ move assignment in TYPE or one of its subobjects; if there isn't, then
1077
+ multiple move assignment can't cause any harm. */
1080
+vbase_has_user_provided_move_assign (tree type)
1082
+ /* Does the type itself have a user-provided move assignment operator? */
1084
+ = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
1085
+ fns; fns = OVL_NEXT (fns))
1087
+ tree fn = OVL_CURRENT (fns);
1088
+ if (move_fn_p (fn) && user_provided_p (fn))
1092
+ /* Do any of its bases? */
1093
+ tree binfo = TYPE_BINFO (type);
1095
+ for (int i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
1096
+ if (vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo)))
1099
+ /* Or non-static data members? */
1100
+ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
1102
+ if (TREE_CODE (field) == FIELD_DECL
1103
+ && CLASS_TYPE_P (TREE_TYPE (field))
1104
+ && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
1112
/* If default-initialization leaves part of TYPE uninitialized, returns
1113
a DECL for the field or TYPE itself (DR 253). */
1115
Index: gcc/cp/method.c
1116
===================================================================
1117
--- a/src/gcc/cp/method.c (.../tags/gcc_4_8_1_release)
1118
+++ b/src/gcc/cp/method.c (.../branches/gcc-4_8-branch)
1119
@@ -1340,7 +1340,8 @@
1120
if (diag && assign_p && move_p
1121
&& BINFO_VIRTUAL_P (base_binfo)
1122
&& rval && TREE_CODE (rval) == FUNCTION_DECL
1123
- && move_fn_p (rval) && !trivial_fn_p (rval))
1124
+ && move_fn_p (rval) && !trivial_fn_p (rval)
1125
+ && vbase_has_user_provided_move_assign (basetype))
1126
warning (OPT_Wvirtual_move_assign,
1127
"defaulted move assignment for %qT calls a non-trivial "
1128
"move assignment operator for virtual base %qT",
1129
Index: gcc/cp/ChangeLog
1130
===================================================================
1131
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_1_release)
1132
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch)
1134
+2013-05-31 Jason Merrill <jason@redhat.com>
1137
+ * class.c (vbase_has_user_provided_move_assign): New.
1138
+ * method.c (synthesized_method_walk): Check it.
1139
+ * cp-tree.h: Declare it.
1142
+ * call.c (convert_like_real): Use cp_convert_and_check.
1143
+ * cvt.c (cp_convert_and_check): Use maybe_constant_value.
1144
+ * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR.
1145
+ (potential_constant_expression_1): Handle OMP_ATOMIC*.
1147
2013-05-31 Release Manager
1149
* GCC 4.8.1 released.
1150
Index: gcc/cp/semantics.c
1151
===================================================================
1152
--- a/src/gcc/cp/semantics.c (.../tags/gcc_4_8_1_release)
1153
+++ b/src/gcc/cp/semantics.c (.../branches/gcc-4_8-branch)
1154
@@ -7990,6 +7990,7 @@
1161
r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
1162
@@ -8846,6 +8847,12 @@
1167
+ case OMP_ATOMIC_READ:
1168
+ case OMP_ATOMIC_CAPTURE_OLD:
1169
+ case OMP_ATOMIC_CAPTURE_NEW:
1173
if (objc_is_property_ref (t))
1175
Index: gcc/cp/call.c
1176
===================================================================
1177
--- a/src/gcc/cp/call.c (.../tags/gcc_4_8_1_release)
1178
+++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch)
1179
@@ -6195,8 +6195,8 @@
1180
if (convs->check_narrowing)
1181
check_narrowing (totype, expr);
1183
- if (issue_conversion_warnings && (complain & tf_warning))
1184
- expr = convert_and_check (totype, expr);
1185
+ if (issue_conversion_warnings)
1186
+ expr = cp_convert_and_check (totype, expr, complain);
1188
expr = convert (totype, expr);
1191
===================================================================
1192
--- a/src/gcc/cp/cvt.c (.../tags/gcc_4_8_1_release)
1193
+++ b/src/gcc/cp/cvt.c (.../branches/gcc-4_8-branch)
1196
if (TREE_TYPE (expr) == type)
1199
+ if (TREE_CODE (expr) == SIZEOF_EXPR)
1200
+ expr = maybe_constant_value (expr);
1202
result = cp_convert (type, expr, complain);
1204
Index: gcc/cp/cp-tree.h
1205
===================================================================
1206
--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_4_8_1_release)
1207
+++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-4_8-branch)
1208
@@ -5057,6 +5057,7 @@
1209
extern bool user_provided_p (tree);
1210
extern bool type_has_user_provided_constructor (tree);
1211
extern bool type_has_user_provided_default_constructor (tree);
1212
+extern bool vbase_has_user_provided_move_assign (tree);
1213
extern tree default_init_uninitialized_part (tree);
1214
extern bool trivial_default_constructor_is_constexpr (tree);
1215
extern bool type_has_constexpr_default_constructor (tree);
1217
===================================================================
1218
--- a/src/gcc/recog.c (.../tags/gcc_4_8_1_release)
1219
+++ b/src/gcc/recog.c (.../branches/gcc-4_8-branch)
1220
@@ -1949,9 +1949,6 @@
1221
(strictp ? strict_memory_address_addr_space_p
1222
: memory_address_addr_space_p);
1223
unsigned int mode_sz = GET_MODE_SIZE (mode);
1224
-#ifdef POINTERS_EXTEND_UNSIGNED
1225
- enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
1228
if (CONSTANT_ADDRESS_P (y))
1230
@@ -1962,6 +1959,13 @@
1231
if (mode_dependent_address_p (y, as))
1234
+ enum machine_mode address_mode = GET_MODE (y);
1235
+ if (address_mode == VOIDmode)
1236
+ address_mode = targetm.addr_space.address_mode (as);
1237
+#ifdef POINTERS_EXTEND_UNSIGNED
1238
+ enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as);
1241
/* ??? How much offset does an offsettable BLKmode reference need?
1242
Clearly that depends on the situation in which it's being used.
1243
However, the current situation in which we test 0xffffffff is
1244
@@ -1977,7 +1981,7 @@
1248
- *y2 = plus_constant (GET_MODE (y), *y2, mode_sz - 1);
1249
+ *y2 = plus_constant (address_mode, *y2, mode_sz - 1);
1250
/* Use QImode because an odd displacement may be automatically invalid
1251
for any wider mode. But it should be valid for a single byte. */
1252
good = (*addressp) (QImode, y, as);
1253
@@ -1998,20 +2002,20 @@
1254
if (GET_CODE (y) == LO_SUM
1256
&& mode_sz <= GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT)
1257
- z = gen_rtx_LO_SUM (GET_MODE (y), XEXP (y, 0),
1258
- plus_constant (GET_MODE (y), XEXP (y, 1),
1259
+ z = gen_rtx_LO_SUM (address_mode, XEXP (y, 0),
1260
+ plus_constant (address_mode, XEXP (y, 1),
1262
#ifdef POINTERS_EXTEND_UNSIGNED
1263
/* Likewise for a ZERO_EXTEND from pointer_mode. */
1264
else if (POINTERS_EXTEND_UNSIGNED > 0
1265
&& GET_CODE (y) == ZERO_EXTEND
1266
&& GET_MODE (XEXP (y, 0)) == pointer_mode)
1267
- z = gen_rtx_ZERO_EXTEND (GET_MODE (y),
1268
+ z = gen_rtx_ZERO_EXTEND (address_mode,
1269
plus_constant (pointer_mode, XEXP (y, 0),
1273
- z = plus_constant (GET_MODE (y), y, mode_sz - 1);
1274
+ z = plus_constant (address_mode, y, mode_sz - 1);
1276
/* Use QImode because an odd displacement may be automatically invalid
1277
for any wider mode. But it should be valid for a single byte. */
1278
Index: gcc/fortran/interface.c
1279
===================================================================
1280
--- a/src/gcc/fortran/interface.c (.../tags/gcc_4_8_1_release)
1281
+++ b/src/gcc/fortran/interface.c (.../branches/gcc-4_8-branch)
1282
@@ -1024,7 +1024,8 @@
1283
bool type_must_agree, char *errmsg, int err_len)
1285
/* Check type and rank. */
1286
- if (type_must_agree && !compare_type_rank (s2, s1))
1287
+ if (type_must_agree &&
1288
+ (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1)))
1290
snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
1292
Index: gcc/fortran/ChangeLog
1293
===================================================================
1294
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_1_release)
1295
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch)
1297
+2013-06-11 Tobias Burnus <burnus@net-b.de>
1300
+ * resolve.c (get_temp_from_expr): Don't copy function
1301
+ result attributes to temporary.
1303
+2013-06-04 Tobias Burnus <burnus@net-b.de>
1305
+ Backport from mainline
1306
+ 2013-05-22 Tobias Burnus <burnus@net-b.de>
1309
+ * resolve.c (get_temp_from_expr): Commit created sym.
1311
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
1312
+ Tobias Burnus <burnus@net-b.de>
1315
+ * interface.c (check_dummy_characteristics): Symmetrize type check.
1317
2013-05-31 Release Manager
1319
* GCC 4.8.1 released.
1320
Index: gcc/fortran/resolve.c
1321
===================================================================
1322
--- a/src/gcc/fortran/resolve.c (.../tags/gcc_4_8_1_release)
1323
+++ b/src/gcc/fortran/resolve.c (.../branches/gcc-4_8-branch)
1324
@@ -9746,6 +9746,10 @@
1326
/* Add the attributes and the arrayspec to the temporary. */
1327
tmp->n.sym->attr = gfc_expr_attr (e);
1328
+ tmp->n.sym->attr.function = 0;
1329
+ tmp->n.sym->attr.result = 0;
1330
+ tmp->n.sym->attr.flavor = FL_VARIABLE;
1334
tmp->n.sym->as = gfc_copy_array_spec (as);
1335
@@ -9759,6 +9763,7 @@
1337
gfc_set_sym_referenced (tmp->n.sym);
1338
gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
1339
+ gfc_commit_symbol (tmp->n.sym);
1340
e = gfc_lval_expr_from_sym (tmp->n.sym);
1342
/* Should the lhs be a section, use its array ref for the
1343
Index: gcc/config/alpha/alpha.md
1344
===================================================================
1345
--- a/src/gcc/config/alpha/alpha.md (.../tags/gcc_4_8_1_release)
1346
+++ b/src/gcc/config/alpha/alpha.md (.../branches/gcc-4_8-branch)
1348
;; Uses of UNSPEC in this file:
1350
(define_c_enum "unspec" [
1351
+ UNSPEC_XFLT_COMPARE
1355
Index: gcc/config/alpha/alpha.c
1356
===================================================================
1357
--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_4_8_1_release)
1358
+++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-4_8-branch)
1359
@@ -2700,12 +2700,12 @@
1362
case GE: case GT: case GEU: case GTU:
1363
- /* These must be swapped. */
1364
- if (op1 != CONST0_RTX (cmp_mode))
1366
- code = swap_condition (code);
1367
- tem = op0, op0 = op1, op1 = tem;
1369
+ /* These normally need swapping, but for integer zero we have
1370
+ special patterns that recognize swapped operands. */
1371
+ if (cmp_mode == DImode && op1 == const0_rtx)
1373
+ code = swap_condition (code);
1374
+ tem = op0, op0 = op1, op1 = tem;
1378
@@ -3067,12 +3067,9 @@
1380
out = gen_reg_rtx (DImode);
1382
- /* What's actually returned is -1,0,1, not a proper boolean value,
1383
- so use an EXPR_LIST as with a generic libcall instead of a
1384
- comparison type expression. */
1385
- note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX);
1386
- note = gen_rtx_EXPR_LIST (VOIDmode, op0, note);
1387
- note = gen_rtx_EXPR_LIST (VOIDmode, func, note);
1388
+ /* What's actually returned is -1,0,1, not a proper boolean value. */
1389
+ note = gen_rtx_fmt_ee (cmp_code, VOIDmode, op0, op1);
1390
+ note = gen_rtx_UNSPEC (DImode, gen_rtvec (1, note), UNSPEC_XFLT_COMPARE);
1391
alpha_emit_xfloating_libcall (func, out, operands, 2, note);
1394
Index: gcc/config/i386/i386.md
1395
===================================================================
1396
--- a/src/gcc/config/i386/i386.md (.../tags/gcc_4_8_1_release)
1397
+++ b/src/gcc/config/i386/i386.md (.../branches/gcc-4_8-branch)
1398
@@ -17043,6 +17043,7 @@
1399
"(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
1400
&& peep2_reg_dead_p (4, operands[0])
1401
&& !reg_overlap_mentioned_p (operands[0], operands[1])
1402
+ && !reg_overlap_mentioned_p (operands[0], operands[2])
1403
&& (<MODE>mode != QImode
1404
|| immediate_operand (operands[2], QImode)
1405
|| q_regs_operand (operands[2], QImode))
1406
@@ -17107,6 +17108,7 @@
1407
|| immediate_operand (operands[2], SImode)
1408
|| q_regs_operand (operands[2], SImode))
1409
&& !reg_overlap_mentioned_p (operands[0], operands[1])
1410
+ && !reg_overlap_mentioned_p (operands[0], operands[2])
1411
&& ix86_match_ccmode (peep2_next_insn (3),
1412
(GET_CODE (operands[3]) == PLUS
1413
|| GET_CODE (operands[3]) == MINUS)
1414
Index: gcc/config/i386/i386.c
1415
===================================================================
1416
--- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_8_1_release)
1417
+++ b/src/gcc/config/i386/i386.c (.../branches/gcc-4_8-branch)
1418
@@ -35444,6 +35444,46 @@
1422
+/* Fix up a Windows system unwinder issue. If an EH region falls thru into
1423
+ the epilogue, the Windows system unwinder will apply epilogue logic and
1424
+ produce incorrect offsets. This can be avoided by adding a nop between
1425
+ the last insn that can throw and the first insn of the epilogue. */
1428
+ix86_seh_fixup_eh_fallthru (void)
1433
+ FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1437
+ /* Find the beginning of the epilogue. */
1438
+ for (insn = BB_END (e->src); insn != NULL; insn = PREV_INSN (insn))
1439
+ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG)
1444
+ /* We only care about preceeding insns that can throw. */
1445
+ insn = prev_active_insn (insn);
1446
+ if (insn == NULL || !can_throw_internal (insn))
1449
+ /* Do not separate calls from their debug information. */
1450
+ for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
1452
+ && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
1453
+ || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
1458
+ emit_insn_after (gen_nops (const1_rtx), insn);
1462
/* Implement machine specific optimizations. We implement padding of returns
1463
for K8 CPUs and pass to avoid 4 jumps in the single 16 byte window. */
1465
@@ -35453,6 +35493,9 @@
1466
with old MDEP_REORGS that are not CFG based. Recompute it now. */
1467
compute_bb_for_insn ();
1469
+ if (TARGET_SEH && current_function_has_exception_handlers ())
1470
+ ix86_seh_fixup_eh_fallthru ();
1472
if (optimize && optimize_function_for_speed_p (cfun))
1474
if (TARGET_PAD_SHORT_FUNCTION)
1475
Index: gcc/config/sh/sh.md
1476
===================================================================
1477
--- a/src/gcc/config/sh/sh.md (.../tags/gcc_4_8_1_release)
1478
+++ b/src/gcc/config/sh/sh.md (.../branches/gcc-4_8-branch)
1479
@@ -12073,10 +12073,10 @@
1481
;; FMA (fused multiply-add) patterns
1482
(define_expand "fmasf4"
1483
- [(set (match_operand:SF 0 "fp_arith_reg_operand" "")
1484
- (fma:SF (match_operand:SF 1 "fp_arith_reg_operand" "")
1485
- (match_operand:SF 2 "fp_arith_reg_operand" "")
1486
- (match_operand:SF 3 "fp_arith_reg_operand" "")))]
1487
+ [(set (match_operand:SF 0 "fp_arith_reg_operand")
1488
+ (fma:SF (match_operand:SF 1 "fp_arith_reg_operand")
1489
+ (match_operand:SF 2 "fp_arith_reg_operand")
1490
+ (match_operand:SF 3 "fp_arith_reg_operand")))]
1491
"TARGET_SH2E || TARGET_SHMEDIA_FPU"
1494
@@ -12107,6 +12107,43 @@
1496
[(set_attr "type" "fparith_media")])
1498
+;; For some cases such as 'a * b + a' the FMA pattern is not generated by
1499
+;; previous transformations. If FMA is generally allowed, let the combine
1500
+;; pass utilize it.
1501
+(define_insn_and_split "*fmasf4"
1502
+ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
1503
+ (plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%w")
1504
+ (match_operand:SF 2 "fp_arith_reg_operand" "f"))
1505
+ (match_operand:SF 3 "arith_reg_operand" "0")))
1506
+ (use (match_operand:PSI 4 "fpscr_operand"))]
1507
+ "TARGET_SH2E && flag_fp_contract_mode != FP_CONTRACT_OFF"
1509
+ "&& can_create_pseudo_p ()"
1510
+ [(parallel [(set (match_dup 0)
1511
+ (fma:SF (match_dup 1) (match_dup 2) (match_dup 3)))
1512
+ (use (match_dup 4))])]
1514
+ /* Change 'b * a + a' into 'a * b + a'.
1515
+ This is better for register allocation. */
1516
+ if (REGNO (operands[2]) == REGNO (operands[3]))
1518
+ rtx tmp = operands[1];
1519
+ operands[1] = operands[2];
1520
+ operands[2] = tmp;
1523
+ [(set_attr "type" "fp")
1524
+ (set_attr "fp_mode" "single")])
1526
+(define_insn "*fmasf4_media"
1527
+ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f")
1528
+ (plus:SF (mult:SF (match_operand:SF 1 "fp_arith_reg_operand" "%f")
1529
+ (match_operand:SF 2 "fp_arith_reg_operand" "f"))
1530
+ (match_operand:SF 3 "fp_arith_reg_operand" "0")))]
1531
+ "TARGET_SHMEDIA_FPU && flag_fp_contract_mode != FP_CONTRACT_OFF"
1532
+ "fmac.s %1, %2, %0"
1533
+ [(set_attr "type" "fparith_media")])
1535
(define_expand "divsf3"
1536
[(set (match_operand:SF 0 "arith_reg_operand" "")
1537
(div:SF (match_operand:SF 1 "arith_reg_operand" "")
1538
Index: gcc/config/aarch64/aarch64.c
1539
===================================================================
1540
--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_4_8_1_release)
1541
+++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-4_8-branch)
1542
@@ -3373,7 +3373,7 @@
1543
output_operand_lossage ("invalid operand for '%%%c'", code);
1546
- asm_fprintf (f, "0x%x", UINTVAL (x));
1547
+ asm_fprintf (f, "0x%wx", UINTVAL (x));
1551
Index: gcc/config/rs6000/rs6000.h
1552
===================================================================
1553
--- a/src/gcc/config/rs6000/rs6000.h (.../tags/gcc_4_8_1_release)
1554
+++ b/src/gcc/config/rs6000/rs6000.h (.../branches/gcc-4_8-branch)
1555
@@ -2289,6 +2289,13 @@
1556
/* How to align the given loop. */
1557
#define LOOP_ALIGN(LABEL) rs6000_loop_align(LABEL)
1559
+/* Alignment guaranteed by __builtin_malloc. */
1560
+/* FIXME: 128-bit alignment is guaranteed by glibc for TARGET_64BIT.
1561
+ However, specifying the stronger guarantee currently leads to
1562
+ a regression in SPEC CPU2006 437.leslie3d. The stronger
1563
+ guarantee should be implemented here once that's fixed. */
1564
+#define MALLOC_ABI_ALIGNMENT (64)
1566
/* Pick up the return address upon entry to a procedure. Used for
1567
dwarf2 unwind information. This also enables the table driven
1569
Index: fixincludes/ChangeLog
1570
===================================================================
1571
--- a/src/fixincludes/ChangeLog (.../tags/gcc_4_8_1_release)
1572
+++ b/src/fixincludes/ChangeLog (.../branches/gcc-4_8-branch)
1574
+2013-05-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1576
+ Backport from mainline:
1577
+ 2013-05-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1579
+ * inclhack.def (solaris_pow_int_overload): Update comment.
1580
+ Change guard to match <cmath>.
1581
+ * fixincl.x: Regenerate.
1582
+ * tests/base/iso/math_iso.h [SOLARIS_POW_INT_OVERLOAD_CHECK]:
1585
2013-05-31 Release Manager
1587
* GCC 4.8.1 released.
1588
Index: fixincludes/tests/base/iso/math_iso.h
1589
===================================================================
1590
--- a/src/fixincludes/tests/base/iso/math_iso.h (.../tags/gcc_4_8_1_release)
1591
+++ b/src/fixincludes/tests/base/iso/math_iso.h (.../branches/gcc-4_8-branch)
1595
#if defined( SOLARIS_POW_INT_OVERLOAD_CHECK )
1596
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
1597
+#if __cplusplus < 201103L
1598
inline long double pow(long double __X, int __Y) { return
1599
__powl(__X, (long double) (__Y)); }
1601
Index: fixincludes/fixincl.x
1602
===================================================================
1603
--- a/src/fixincludes/fixincl.x (.../tags/gcc_4_8_1_release)
1604
+++ b/src/fixincludes/fixincl.x (.../branches/gcc-4_8-branch)
1607
* DO NOT EDIT THIS FILE (fixincl.x)
1609
- * It has been AutoGen-ed Saturday December 29, 2012 at 09:17:09 AM BRST
1610
+ * It has been AutoGen-ed Thursday May 16, 2013 at 03:34:25 PM MEST
1611
* From the definitions inclhack.def
1612
* and the template file fixincl
1614
-/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Dec 29 09:17:10 BRST 2012
1615
+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 16 15:34:25 MEST 2013
1617
* You must regenerate it. Use the ./genfixes script.
1619
@@ -6663,7 +6663,7 @@
1621
static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
1623
- "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
1624
+ "#if __cplusplus < 201103L\n\
1628
Index: fixincludes/inclhack.def
1629
===================================================================
1630
--- a/src/fixincludes/inclhack.def (.../tags/gcc_4_8_1_release)
1631
+++ b/src/fixincludes/inclhack.def (.../branches/gcc-4_8-branch)
1632
@@ -3447,7 +3447,7 @@
1636
- * The pow overloads with int were removed in C++ 2011.
1637
+ * The pow overloads with int were removed in C++ 2011 DR 550.
1640
hackname = solaris_pow_int_overload;
1641
@@ -3456,7 +3456,7 @@
1642
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
1643
" *\\{[^{}]*\n[^{}]*\\}";
1645
- c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
1646
+ c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
1649
" inline long double pow(long double __X, int __Y) { return\n"