1
# DP: updates from the 4.8 branch upto 20120612 (r200018).
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)
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/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 @@
642
- if (param_index == -1)
643
+ if (param_index == -1
644
+ || known_vals.length () <= (unsigned int) param_index)
647
if (!ie->indirect_info->polymorphic)
648
@@ -1528,8 +1529,7 @@
652
- t = (known_vals.length () > (unsigned int) param_index
653
- ? known_vals[param_index] : NULL);
654
+ t = known_vals[param_index];
657
TREE_CODE (t) == ADDR_EXPR
659
===================================================================
660
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release)
661
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
663
+2013-06-12 Martin Jambor <mjambor@suse.cz>
665
+ * ipa-cp.c (ipa_get_indirect_edge_target_1): Check that param_index is
666
+ within bounds at the beginning of the function.
668
+2013-06-12 Jakub Jelinek <jakub@redhat.com>
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.
674
+2013-06-10 Uros Bizjak <ubizjak@gmail.com>
676
+ Backport from mainline
677
+ 2013-06-10 Uros Bizjak <ubizjak@gmail.com>
679
+ * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
680
+ cmp_code to construct REG_EQUAL note.
682
+2013-06-10 Oleg Endo <olegendo@gcc.gnu.org>
684
+ Backport from mainline
685
+ 2013-05-20 Oleg Endo <olegendo@gcc.gnu.org>
688
+ * config/sh/sh.md (fmasf4): Remove empty constraints strings.
689
+ (*fmasf4, *fmasf4_media): New insns.
691
+2013-06-09 Jakub Jelinek <jakub@redhat.com>
694
+ * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
695
+ that operands[2] doesn't overlap with operands[0].
697
+2013-06-07 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
699
+ * recog.c (offsettable_address_addr_space_p): Fix calculation of
700
+ address mode. Move pointer mode initialization to the same place.
702
+2013-06-07 Uros Bizjak <ubizjak@gmail.com>
704
+ Backport from mainline
705
+ 2013-06-05 Uros Bizjak <ubizjak@gmail.com>
707
+ * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
708
+ GE, GT, GEU and GTU compares, modulo DImode compares with zero.
710
+ Backport from mainline
711
+ 2013-05-23 Uros Bizjak <ubizjak@gmail.com>
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.
718
+2013-06-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
720
+ Backport from mainline.
721
+ 2013-05-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
723
+ * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define.
725
+2013-06-03 James Greenhalgh <james.greenhalgh@arm.com>
727
+ Backport from mainline.
728
+ 2013-04-25 James Greenhalgh <james.greenhalgh@arm.com>
730
+ * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf
731
+ format specifier in 'X' case.
733
+2013-05-31 Richard Henderson <rth@redhat.com>
736
+ * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
737
+ (ix86_reorg): Call it.
739
2013-05-31 Release Manager
741
* GCC 4.8.1 released.
743
Backport from mainline
744
2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
748
* config/arm/arm.c (arm_expand_epilogue): Check really_return before
749
generating simple_return for naked functions.
751
@@ -203,14 +289,14 @@
753
2013-05-09 Martin Jambor <mjambor@suse.cz>
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.
771
2013-05-08 Diego Novillo <dnovillo@google.com>
774
2013-04-25 Marek Polacek <polacek@redhat.com>
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.
780
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
782
@@ -351,40 +437,40 @@
783
Backport from mainline
784
2013-04-24 Vladimir Makarov <vmakarov@redhat.com>
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.
793
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
795
Backport from mainline
796
2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
799
- * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
800
- a set sp if no stack realignment.
802
+ * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
803
+ a set sp if no stack realignment.
805
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
807
Backport from mainline
808
2013-04-18 Vladimir Makarov <vmakarov@redhat.com>
810
- PR rtl-optimization/56999
811
- * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
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
819
+ (lra_coalesce): Remove split_origin_bitmap and related code.
820
+ * lra.c (lra): Coalesce after undoing inheritance. Recreate live
821
+ ranges if necessary.
823
2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
825
Backport from mainline
826
2013-04-19 Vladimir Makarov <vmakarov@redhat.com>
828
- PR rtl-optimization/56847
829
- * lra-constraints.c (process_alt_operands): Discourage alternative
830
- with non-matche doffsettable memory constraint fro memory with
832
+ PR rtl-optimization/56847
833
+ * lra-constraints.c (process_alt_operands): Discourage alternative
834
+ with non-matche doffsettable memory constraint fro memory with
837
2013-05-02 Ian Bolton <ian.bolton@arm.com>
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)
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 } } */
852
+test_00 (float a, float b)
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)
867
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
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 } } */
876
+test_00 (float a, float b)
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)
895
+module ForTrilinos_ref_counter
898
+ procedure :: assign
899
+ generic :: assignment(=) => assign
902
+ subroutine assign (lhs, rhs)
903
+ class (ref_counter), intent(inout) :: lhs
904
+ class (ref_counter), intent(in) :: rhs
907
+module FEpetra_BlockMap
908
+ use ForTrilinos_ref_counter, only : ref_counter
909
+ type :: Epetra_BlockMap
910
+ type(ref_counter) :: counter
913
+ function from_struct() result(new_Epetra_BlockMap)
914
+ type(Epetra_BlockMap) :: new_Epetra_BlockMap
916
+ type(Epetra_BlockMap) function create_arbitrary()
917
+ create_arbitrary = from_struct()
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)
929
+! Contributed by Damian Rouson
931
+module ref_counter_implementation
934
+ procedure :: assign
935
+ generic :: assignment(=) => assign
938
+ subroutine assign (lhs, rhs)
939
+ class (ref_counter), intent(inout) :: lhs
940
+ class (ref_counter), intent(in) :: rhs
943
+module foo_parent_implementation
944
+ use ref_counter_implementation ,only: ref_counter
946
+ type(ref_counter) :: counter
949
+ type(foo_parent) function new_foo_parent()
952
+module foo_implementation
953
+ use foo_parent_implementation ,only: foo_parent,new_foo_parent
954
+ type, extends(foo_parent) :: foo
957
+ type(foo) function new_foo()
958
+ new_foo%foo_parent = new_foo_parent()
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)
968
+! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
970
+! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
976
+ procedure, pass(map) :: clone => base_clone
979
+ subroutine base_clone(map,mapout)
980
+ class(base_type) :: map
981
+ class(base_type) :: mapout
988
+ type, extends(base_type) :: r_type
990
+ procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" }
993
+ subroutine r_clone(map,mapout)
994
+ class(r_type) :: map
995
+ class(r_type) :: mapout
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)
1005
+/* PR target/57568 */
1007
+extern void abort (void);
1008
+int a[6][9] = { }, b = 1, *c = &a[3][5];
1013
+ if (b && (*c = *c + *c))
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)
1022
+2013-06-11 Tobias Burnus <burnus@net-b.de>
1025
+ * gfortran.dg/defined_assignment_7.f90: New.
1027
+2013-06-10 Oleg Endo <olegendo@gcc.gnu.org>
1029
+ Backport from mainline
1030
+ 2013-05-20 Oleg Endo <olegendo@gcc.gnu.org>
1033
+ * gcc.target/sh/pr56547-1.c: New.
1034
+ * gcc.target/sh/pr56547-2.c: New.
1036
+2013-06-09 Jakub Jelinek <jakub@redhat.com>
1039
+ * gcc.c-torture/execute/pr57568.c: New test.
1041
+2013-06-04 Tobias Burnus <burnus@net-b.de>
1043
+ Backport from mainline
1044
+ 2013-05-22 Tobias Burnus <burnus@net-b.de>
1047
+ * gfortran.dg/defined_assignment_6.f90: New.
1049
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
1050
+ Tobias Burnus <burnus@net-b.de>
1053
+ * gfortran.dg/typebound_override_4.f90: New.
1055
2013-05-31 Release Manager
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)
1064
+// { dg-require-effective-target c++11 }
1065
+// { dg-options -Wconversion }
1069
+ int x = sizeof(int);
1070
+ int y { sizeof(int) };
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)
1078
+// { dg-require-effective-target c++11 }
1082
+ struct B: virtual A { };
1083
+ struct C: virtual B { };
1087
+ void operator= (D &);
1092
+ struct A { A& operator=(A&&); };
1093
+ struct B: virtual A { }; // { dg-warning "move assignment" }
1094
+ struct C: virtual B { }; // { dg-warning "move assignment" }
1098
+ void operator= (D &);
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 @@
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. */
1115
+vbase_has_user_provided_move_assign (tree type)
1117
+ /* Does the type itself have a user-provided move assignment operator? */
1119
+ = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
1120
+ fns; fns = OVL_NEXT (fns))
1122
+ tree fn = OVL_CURRENT (fns);
1123
+ if (move_fn_p (fn) && user_provided_p (fn))
1127
+ /* Do any of its bases? */
1128
+ tree binfo = TYPE_BINFO (type);
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)))
1134
+ /* Or non-static data members? */
1135
+ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
1137
+ if (TREE_CODE (field) == FIELD_DECL
1138
+ && CLASS_TYPE_P (TREE_TYPE (field))
1139
+ && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
1147
/* If default-initialization leaves part of TYPE uninitialized, returns
1148
a DECL for the field or TYPE itself (DR 253). */
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)
1169
+2013-05-31 Jason Merrill <jason@redhat.com>
1172
+ * class.c (vbase_has_user_provided_move_assign): New.
1173
+ * method.c (synthesized_method_walk): Check it.
1174
+ * cp-tree.h: Declare it.
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*.
1182
2013-05-31 Release Manager
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 @@
1196
r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
1197
@@ -8846,6 +8847,12 @@
1202
+ case OMP_ATOMIC_READ:
1203
+ case OMP_ATOMIC_CAPTURE_OLD:
1204
+ case OMP_ATOMIC_CAPTURE_NEW:
1208
if (objc_is_property_ref (t))
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);
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);
1223
expr = convert (totype, expr);
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)
1231
if (TREE_TYPE (expr) == type)
1234
+ if (TREE_CODE (expr) == SIZEOF_EXPR)
1235
+ expr = maybe_constant_value (expr);
1237
result = cp_convert (type, expr, complain);
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);
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);
1263
if (CONSTANT_ADDRESS_P (y))
1265
@@ -1962,6 +1959,13 @@
1266
if (mode_dependent_address_p (y, as))
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);
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 @@
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
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),
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),
1308
- z = plus_constant (GET_MODE (y), y, mode_sz - 1);
1309
+ z = plus_constant (address_mode, y, mode_sz - 1);
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)
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)))
1325
snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
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)
1332
+2013-06-11 Tobias Burnus <burnus@net-b.de>
1335
+ * resolve.c (get_temp_from_expr): Don't copy function
1336
+ result attributes to temporary.
1338
+2013-06-04 Tobias Burnus <burnus@net-b.de>
1340
+ Backport from mainline
1341
+ 2013-05-22 Tobias Burnus <burnus@net-b.de>
1344
+ * resolve.c (get_temp_from_expr): Commit created sym.
1346
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
1347
+ Tobias Burnus <burnus@net-b.de>
1350
+ * interface.c (check_dummy_characteristics): Symmetrize type check.
1352
2013-05-31 Release Manager
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 @@
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;
1369
tmp->n.sym->as = gfc_copy_array_spec (as);
1370
@@ -9759,6 +9763,7 @@
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);
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;
1388
+ half_type1 = half_type0;
1389
+ oprnd1 = fold_convert (half_type1, oprnd1);
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)
1399
;; Uses of UNSPEC in this file:
1401
(define_c_enum "unspec" [
1402
+ UNSPEC_XFLT_COMPARE
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 @@
1413
case GE: case GT: case GEU: case GTU:
1414
- /* These must be swapped. */
1415
- if (op1 != CONST0_RTX (cmp_mode))
1417
- code = swap_condition (code);
1418
- tem = op0, op0 = op1, op1 = tem;
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)
1424
+ code = swap_condition (code);
1425
+ tem = op0, op0 = op1, op1 = tem;
1429
@@ -3067,12 +3067,9 @@
1431
out = gen_reg_rtx (DImode);
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);
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 @@
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. */
1479
+ix86_seh_fixup_eh_fallthru (void)
1484
+ FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
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)
1495
+ /* We only care about preceeding insns that can throw. */
1496
+ insn = prev_active_insn (insn);
1497
+ if (insn == NULL || !can_throw_internal (insn))
1500
+ /* Do not separate calls from their debug information. */
1501
+ for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
1503
+ && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
1504
+ || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
1509
+ emit_insn_after (gen_nops (const1_rtx), insn);
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. */
1516
@@ -35453,6 +35493,9 @@
1517
with old MDEP_REORGS that are not CFG based. Recompute it now. */
1518
compute_bb_for_insn ();
1520
+ if (TARGET_SEH && current_function_has_exception_handlers ())
1521
+ ix86_seh_fixup_eh_fallthru ();
1523
if (optimize && optimize_function_for_speed_p (cfun))
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 @@
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"
1545
@@ -12107,6 +12107,43 @@
1547
[(set_attr "type" "fparith_media")])
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"
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))])]
1565
+ /* Change 'b * a + a' into 'a * b + a'.
1566
+ This is better for register allocation. */
1567
+ if (REGNO (operands[2]) == REGNO (operands[3]))
1569
+ rtx tmp = operands[1];
1570
+ operands[1] = operands[2];
1571
+ operands[2] = tmp;
1574
+ [(set_attr "type" "fp")
1575
+ (set_attr "fp_mode" "single")])
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")])
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);
1597
- asm_fprintf (f, "0x%x", UINTVAL (x));
1598
+ asm_fprintf (f, "0x%wx", UINTVAL (x));
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)
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)
1617
/* Pick up the return address upon entry to a procedure. Used for
1618
dwarf2 unwind information. This also enables the table driven
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)
1625
+2013-05-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1627
+ Backport from mainline:
1628
+ 2013-05-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
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]:
1636
2013-05-31 Release Manager
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)
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)); }
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)
1658
* DO NOT EDIT THIS FILE (fixincl.x)
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
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
1668
* You must regenerate it. Use the ./genfixes script.
1670
@@ -6663,7 +6663,7 @@
1672
static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
1674
- "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
1675
+ "#if __cplusplus < 201103L\n\
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 @@
1687
- * The pow overloads with int were removed in C++ 2011.
1688
+ * The pow overloads with int were removed in C++ 2011 DR 550.
1691
hackname = solaris_pow_int_overload;
1692
@@ -3456,7 +3456,7 @@
1693
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
1694
" *\\{[^{}]*\n[^{}]*\\}";
1696
- c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
1697
+ c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
1700
" inline long double pow(long double __X, int __Y) { return\n"