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

« back to all changes in this revision

Viewing changes to .svn/pristine/ad/ad021249df8cdd312092977f6b3276c01a43efcf.svn-base

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

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# DP: updates from the 4.8 branch upto 20120612 (r199995).
 
2
 
 
3
last_updated()
 
4
{
 
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)
 
8
EOF
 
9
}
 
10
 
 
11
LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_1_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch \
 
12
        | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
 
13
        | awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
 
14
 
 
15
Index: libstdc++-v3/include/Makefile.in
 
16
===================================================================
 
17
--- a/src/libstdc++-v3/include/Makefile.in      (.../tags/gcc_4_8_1_release)
 
18
+++ b/src/libstdc++-v3/include/Makefile.in      (.../branches/gcc-4_8-branch)
 
19
@@ -434,8 +434,7 @@
 
20
        ${bits_srcdir}/valarray_array.tcc \
 
21
        ${bits_srcdir}/valarray_before.h \
 
22
        ${bits_srcdir}/valarray_after.h \
 
23
-       ${bits_srcdir}/vector.tcc \
 
24
-       ${bits_host_headers}
 
25
+       ${bits_srcdir}/vector.tcc
 
26
 
 
27
 bits_host_headers = \
 
28
        ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
 
29
@@ -795,8 +794,7 @@
 
30
        ${ext_srcdir}/vstring.tcc \
 
31
        ${ext_srcdir}/vstring_fwd.h \
 
32
        ${ext_srcdir}/vstring_util.h \
 
33
-       ${ext_compat_headers} \
 
34
-       ${ext_host_headers}
 
35
+       ${ext_compat_headers}
 
36
 
 
37
 ext_compat_headers = \
 
38
        ${backward_srcdir}/hash_set \
 
39
@@ -1461,13 +1459,14 @@
 
40
 
 
41
 stamp-${host_alias}:
 
42
        @-mkdir -p ${host_builddir}
 
43
+       @-mkdir -p ${host_builddir}/../ext
 
44
        @$(STAMP) stamp-${host_alias}
 
45
 
 
46
 # Host includes static.
 
47
 # XXX Missing dependency info for {host_headers_extra}
 
48
-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
 
49
+stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
 
50
        @cd ${host_builddir} && {\
 
51
-         $(LN_S) ${host_headers} . || true ;\
 
52
+         $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
 
53
          $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
 
54
          $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
 
55
          $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
 
56
@@ -1477,6 +1476,9 @@
 
57
          $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
 
58
          $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
 
59
        } 2>/dev/null
 
60
+       @cd ${host_builddir}/../ext && {\
 
61
+         $(LN_S) ${ext_host_headers} . || true ;\
 
62
+       } 2>/dev/null
 
63
        $(STAMP) stamp-host
 
64
 
 
65
 # Host includes dynamic.
 
66
@@ -1688,9 +1690,12 @@
 
67
        for file in ${profile_impl_headers}; do \
 
68
          $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
 
69
        $(mkinstalldirs) $(DESTDIR)${host_installdir}
 
70
-       for file in ${host_headers} ${host_headers_extra} \
 
71
+       for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
 
72
         ${thread_host_headers}; do \
 
73
          $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
 
74
+       $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
 
75
+       for file in ${ext_host_headers}; do \
 
76
+         $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
 
77
 
 
78
 # To remove directories.
 
79
 clean-local:
 
80
Index: libstdc++-v3/include/ext/random
 
81
===================================================================
 
82
--- a/src/libstdc++-v3/include/ext/random       (.../tags/gcc_4_8_1_release)
 
83
+++ b/src/libstdc++-v3/include/ext/random       (.../branches/gcc-4_8-branch)
 
84
@@ -2848,7 +2848,7 @@
 
85
 _GLIBCXX_END_NAMESPACE_VERSION
 
86
 } // namespace __gnu_cxx
 
87
 
 
88
-#include "opt_random.h"
 
89
+#include "ext/opt_random.h"
 
90
 #include "random.tcc"
 
91
 
 
92
 #endif // _GLIBCXX_USE_C99_STDINT_TR1
 
93
Index: libstdc++-v3/include/Makefile.am
 
94
===================================================================
 
95
--- a/src/libstdc++-v3/include/Makefile.am      (.../tags/gcc_4_8_1_release)
 
96
+++ b/src/libstdc++-v3/include/Makefile.am      (.../branches/gcc-4_8-branch)
 
97
@@ -172,8 +172,7 @@
 
98
        ${bits_srcdir}/valarray_array.tcc \
 
99
        ${bits_srcdir}/valarray_before.h \
 
100
        ${bits_srcdir}/valarray_after.h \
 
101
-       ${bits_srcdir}/vector.tcc \
 
102
-       ${bits_host_headers}
 
103
+       ${bits_srcdir}/vector.tcc
 
104
 
 
105
 bits_host_headers = \
 
106
        ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
 
107
@@ -535,8 +534,7 @@
 
108
        ${ext_srcdir}/vstring.tcc \
 
109
        ${ext_srcdir}/vstring_fwd.h \
 
110
        ${ext_srcdir}/vstring_util.h \
 
111
-       ${ext_compat_headers} \
 
112
-       ${ext_host_headers}
 
113
+       ${ext_compat_headers}
 
114
 
 
115
 ext_compat_headers = \
 
116
        ${backward_srcdir}/hash_set \
 
117
@@ -1048,13 +1046,14 @@
 
118
 
 
119
 stamp-${host_alias}:
 
120
        @-mkdir -p ${host_builddir}
 
121
+       @-mkdir -p ${host_builddir}/../ext
 
122
        @$(STAMP) stamp-${host_alias}
 
123
 
 
124
 # Host includes static.
 
125
 # XXX Missing dependency info for {host_headers_extra}
 
126
-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
 
127
+stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias}
 
128
        @cd ${host_builddir} && {\
 
129
-         $(LN_S) ${host_headers} . || true ;\
 
130
+         $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\
 
131
          $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\
 
132
          $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\
 
133
          $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\
 
134
@@ -1064,6 +1063,9 @@
 
135
          $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\
 
136
          $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\
 
137
        } 2>/dev/null
 
138
+       @cd ${host_builddir}/../ext && {\
 
139
+         $(LN_S) ${ext_host_headers} . || true ;\
 
140
+       } 2>/dev/null
 
141
        $(STAMP) stamp-host
 
142
 
 
143
 # Host includes dynamic.
 
144
@@ -1290,9 +1292,12 @@
 
145
        for file in ${profile_impl_headers}; do \
 
146
          $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done
 
147
        $(mkinstalldirs) $(DESTDIR)${host_installdir}
 
148
-       for file in ${host_headers} ${host_headers_extra} \
 
149
+       for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
 
150
         ${thread_host_headers}; do \
 
151
          $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
 
152
+       $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
 
153
+       for file in ${ext_host_headers}; do \
 
154
+         $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
 
155
 
 
156
 # By adding these files here, automake will remove them for 'make clean'
 
157
 CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
 
158
Index: libstdc++-v3/ChangeLog
 
159
===================================================================
 
160
--- a/src/libstdc++-v3/ChangeLog        (.../tags/gcc_4_8_1_release)
 
161
+++ b/src/libstdc++-v3/ChangeLog        (.../branches/gcc-4_8-branch)
 
162
@@ -1,3 +1,17 @@
 
163
+2013-06-11  Matthias Klose  <doko@ubuntu.com>
 
164
+
 
165
+       * include/Makefile.am (bits_headers): Remove ${bits_host_headers}.
 
166
+       (ext_headers): Remove ${ext_host_headers}.
 
167
+       (stamp-${host_alias}): Create ${host_builddir}/../ext.
 
168
+       (stamp-host): Link ${bits_host_headers} and ${ext_host_headers}.
 
169
+       (install-headers): Install ${bits_host_headers} and ${ext_host_headers}.
 
170
+       * include/Makefile.in: Regenerate.
 
171
+       * include/ext/random: Include ext/opt_random.h.
 
172
+
 
173
+2013-06-07  Uros Bizjak  <ubizjak@gmail.com>
 
174
+
 
175
+       * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
 
176
+
 
177
 2013-05-31  Release Manager
 
178
 
 
179
        * GCC 4.8.1 released.
 
180
Index: libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
 
181
===================================================================
 
182
--- a/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt     (.../tags/gcc_4_8_1_release)
 
183
+++ b/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt     (.../branches/gcc-4_8-branch)
 
184
@@ -543,6 +543,7 @@
 
185
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@@GLIBCXX_LDBL_3.4
 
186
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
 
187
 FUNC:_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@@GLIBCXX_LDBL_3.4
 
188
+FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
 
189
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
 
190
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
 
191
 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
 
192
@@ -732,6 +733,8 @@
 
193
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4
 
194
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4
 
195
 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4
 
196
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18
 
197
+FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18
 
198
 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9
 
199
 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4
 
200
 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4
 
201
@@ -1353,6 +1356,7 @@
 
202
 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15
 
203
 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15
 
204
 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15
 
205
+FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@@GLIBCXX_3.4.18
 
206
 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4
 
207
 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1
 
208
 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4
 
209
@@ -1635,6 +1639,11 @@
 
210
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4
 
211
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4
 
212
 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4
 
213
+FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18
 
214
+FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18
 
215
+FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18
 
216
+FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18
 
217
+FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18
 
218
 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4
 
219
 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4
 
220
 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4
 
221
@@ -2119,6 +2128,8 @@
 
222
 FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9
 
223
 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14
 
224
 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11
 
225
+FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 
226
+FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
 
227
 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4
 
228
 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4
 
229
 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4
 
230
@@ -2678,6 +2689,7 @@
 
231
 FUNC:__cxa_guard_release@@CXXABI_1.3
 
232
 FUNC:__cxa_pure_virtual@@CXXABI_1.3
 
233
 FUNC:__cxa_rethrow@@CXXABI_1.3
 
234
+FUNC:__cxa_thread_atexit@@CXXABI_1.3.7
 
235
 FUNC:__cxa_throw@@CXXABI_1.3
 
236
 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1
 
237
 FUNC:__cxa_vec_cctor@@CXXABI_1.3
 
238
@@ -2724,6 +2736,7 @@
 
239
 OBJECT:0:CXXABI_1.3.4
 
240
 OBJECT:0:CXXABI_1.3.5
 
241
 OBJECT:0:CXXABI_1.3.6
 
242
+OBJECT:0:CXXABI_1.3.7
 
243
 OBJECT:0:CXXABI_LDBL_1.3
 
244
 OBJECT:0:CXXABI_TM_1
 
245
 OBJECT:0:GLIBCXX_3.4
 
246
@@ -2736,6 +2749,8 @@
 
247
 OBJECT:0:GLIBCXX_3.4.15
 
248
 OBJECT:0:GLIBCXX_3.4.16
 
249
 OBJECT:0:GLIBCXX_3.4.17
 
250
+OBJECT:0:GLIBCXX_3.4.18
 
251
+OBJECT:0:GLIBCXX_3.4.19
 
252
 OBJECT:0:GLIBCXX_3.4.2
 
253
 OBJECT:0:GLIBCXX_3.4.3
 
254
 OBJECT:0:GLIBCXX_3.4.4
 
255
@@ -3193,6 +3208,8 @@
 
256
 OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4
 
257
 OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4
 
258
 OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11
 
259
+OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19
 
260
+OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19
 
261
 OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11
 
262
 OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11
 
263
 OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11
 
264
Index: libgcc/config.host
 
265
===================================================================
 
266
--- a/src/libgcc/config.host    (.../tags/gcc_4_8_1_release)
 
267
+++ b/src/libgcc/config.host    (.../branches/gcc-4_8-branch)
 
268
@@ -316,7 +316,7 @@
 
269
        md_unwind_header=alpha/vms-unwind.h
 
270
        ;;
 
271
 arm-wrs-vxworks)
 
272
-       tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit"
 
273
+       tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
 
274
        extra_parts="$extra_parts crti.o crtn.o"
 
275
        ;;
 
276
 arm*-*-netbsdelf*)
 
277
Index: libgcc/ChangeLog
 
278
===================================================================
 
279
--- a/src/libgcc/ChangeLog      (.../tags/gcc_4_8_1_release)
 
280
+++ b/src/libgcc/ChangeLog      (.../branches/gcc-4_8-branch)
 
281
@@ -1,3 +1,22 @@
 
282
+2013-06-08  Walter Lee  <walt@tilera.com>
 
283
+
 
284
+       Backport from mainline:
 
285
+       2013-06-08  Walter Lee  <walt@tilera.com>
 
286
+       
 
287
+       * config/tilepro/atomic.h: Don't include stdint.h or features.h.
 
288
+       Replace int64_t with long long.  Add __extension__ where
 
289
+       appropriate.
 
290
+
 
291
+2013-06-06  Douglas B Rupp  <rupp@adacore.com>
 
292
+
 
293
+       * config.host (arm-wrs-vxworks): Configure with other soft float.
 
294
+
 
295
+2013-05-31  Richard Henderson  <rth@redhat.com>
 
296
+
 
297
+       PR target/49146
 
298
+       * unwind-dw2.c (UNWIND_COLUMN_IN_RANGE): New macro.
 
299
+       (execute_cfa_program): Use it when storing to fs->regs.
 
300
+
 
301
 2013-05-31  Release Manager
 
302
 
 
303
        * GCC 4.8.1 released.
 
304
Index: libgcc/config/tilepro/atomic.h
 
305
===================================================================
 
306
--- a/src/libgcc/config/tilepro/atomic.h        (.../tags/gcc_4_8_1_release)
 
307
+++ b/src/libgcc/config/tilepro/atomic.h        (.../branches/gcc-4_8-branch)
 
308
@@ -92,8 +92,6 @@
 
309
    compare-and-exchange routine, so may be potentially less efficient.  */
 
310
 #endif
 
311
 
 
312
-#include <stdint.h>
 
313
-#include <features.h>
 
314
 #ifdef __tilegx__
 
315
 #include <arch/spr_def.h>
 
316
 #else
 
317
@@ -122,9 +120,9 @@
 
318
 
 
319
 /* 64-bit integer compare-and-exchange.  */
 
320
 static __inline __attribute__ ((always_inline))
 
321
-     int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem,
 
322
-                                                    int64_t oldval,
 
323
-                                                    int64_t newval)
 
324
+     long long arch_atomic_val_compare_and_exchange_8 (volatile long long
 
325
+                                                      *mem, long long oldval,
 
326
+                                                      long long newval)
 
327
 {
 
328
 #ifdef __tilegx__
 
329
   __insn_mtspr (SPR_CMPEXCH_VALUE, oldval);
 
330
@@ -139,7 +137,7 @@
 
331
                        "R04" (newval_lo), "R05" (newval_hi),
 
332
                        "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25",
 
333
                        "r26", "r27", "r28", "r29", "memory");
 
334
-  return ((uint64_t) result_hi) << 32 | result_lo;
 
335
+  return ((long long) result_hi) << 32 | result_lo;
 
336
 #endif
 
337
 }
 
338
 
 
339
@@ -150,11 +148,11 @@
 
340
 
 
341
 
 
342
 #define arch_atomic_val_compare_and_exchange(mem, o, n)                 \
 
343
-  ({                                                                    \
 
344
+  __extension__ ({                                                      \
 
345
     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
 
346
       ((sizeof(*(mem)) == 8) ?                                          \
 
347
        arch_atomic_val_compare_and_exchange_8(                          \
 
348
-         (volatile int64_t*)(mem), (__typeof((o)-(o)))(o),              \
 
349
+         (volatile long long*)(mem), (__typeof((o)-(o)))(o),            \
 
350
          (__typeof((n)-(n)))(n)) :                                      \
 
351
        (sizeof(*(mem)) == 4) ?                                          \
 
352
        arch_atomic_val_compare_and_exchange_4(                          \
 
353
@@ -164,7 +162,7 @@
 
354
   })
 
355
 
 
356
 #define arch_atomic_bool_compare_and_exchange(mem, o, n)                \
 
357
-  ({                                                                    \
 
358
+  __extension__ ({                                                      \
 
359
     __typeof(o) __o = (o);                                              \
 
360
     __builtin_expect(                                                   \
 
361
       __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \
 
362
@@ -174,7 +172,7 @@
 
363
 /* Loop with compare_and_exchange until we guess the correct value.
 
364
    Normally "expr" will be an expression using __old and __value.  */
 
365
 #define __arch_atomic_update_cmpxchg(mem, value, expr)                  \
 
366
-  ({                                                                    \
 
367
+  __extension__ ({                                                      \
 
368
     __typeof(value) __value = (value);                                  \
 
369
     __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess;           \
 
370
     do {                                                                \
 
371
@@ -189,12 +187,14 @@
 
372
 /* Generic atomic op with 8- or 4-byte variant.
 
373
    The _mask, _addend, and _expr arguments are ignored on tilegx.  */
 
374
 #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr)     \
 
375
-  ({                                                                    \
 
376
+  __extension__ ({                                                      \
 
377
     ((__typeof(*(mem)))                                                 \
 
378
      ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op(     \
 
379
-        (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) :   \
 
380
+        (volatile void *)(mem),                                         \
 
381
+        (long long)(__typeof((value)-(value)))(value)) :                \
 
382
       (sizeof(*(mem)) == 4) ? (int)__insn_##op##4(                      \
 
383
-        (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) :   \
 
384
+        (volatile void *)(mem),                                         \
 
385
+        (int)(__typeof((value)-(value)))(value)) :                      \
 
386
       __arch_atomic_error_bad_argument_size()));                        \
 
387
   })
 
388
 
 
389
@@ -224,7 +224,7 @@
 
390
 /* Generic atomic op with 8- or 4-byte variant.
 
391
    The _op argument is ignored on tilepro.  */
 
392
 #define __arch_atomic_update(mem, value, _op, mask, addend, expr)       \
 
393
-  ({                                                                    \
 
394
+  __extension__ ({                                                      \
 
395
     (__typeof(*(mem)))(__typeof(*(mem)-*(mem)))                         \
 
396
       ((sizeof(*(mem)) == 8) ?                                          \
 
397
        __arch_atomic_update_cmpxchg((mem), (value), (expr)) :           \
 
398
@@ -263,13 +263,13 @@
 
399
   __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value))
 
400
 
 
401
 #define arch_atomic_bit_set(mem, bit)                                   \
 
402
-  ({                                                                    \
 
403
+  __extension__ ({                                                      \
 
404
     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
 
405
     __mask & arch_atomic_or((mem), __mask);                             \
 
406
   })
 
407
 
 
408
 #define arch_atomic_bit_clear(mem, bit)                                 \
 
409
-  ({                                                                    \
 
410
+  __extension__ ({                                                      \
 
411
     __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit);             \
 
412
     __mask & arch_atomic_and((mem), ~__mask);                           \
 
413
   })
 
414
Index: libgcc/unwind-dw2.c
 
415
===================================================================
 
416
--- a/src/libgcc/unwind-dw2.c   (.../tags/gcc_4_8_1_release)
 
417
+++ b/src/libgcc/unwind-dw2.c   (.../branches/gcc-4_8-branch)
 
418
@@ -59,6 +59,35 @@
 
419
 #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
 
420
 #endif
 
421
 
 
422
+/* ??? For the public function interfaces, we tend to gcc_assert that the
 
423
+   column numbers are in range.  For the dwarf2 unwind info this does happen,
 
424
+   although so far in a case that doesn't actually matter.
 
425
+
 
426
+   See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
 
427
+   the call-saved xmm registers and annotates them.  We havn't bothered
 
428
+   providing support for the xmm registers for the x86_64 port primarily
 
429
+   because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
 
430
+   SEH instead.  Adding the support for unix targets would generally be a
 
431
+   waste.  However, some runtime libraries supplied with ICC do contain such
 
432
+   an unorthodox transition, as well as the unwind info to match.  This loss
 
433
+   of register restoration doesn't matter in practice, because the exception
 
434
+   is caught in the native unix abi, where all of the xmm registers are 
 
435
+   call clobbered.
 
436
+
 
437
+   Ideally, we'd record some bit to notice when we're failing to restore some
 
438
+   register recorded in the unwind info, but to do that we need annotation on
 
439
+   the unix->ms abi edge, so that we know when the register data may be
 
440
+   discarded.  And since this edge is also within the ICC library, we're
 
441
+   unlikely to be able to get the new annotation.
 
442
+
 
443
+   Barring a magic solution to restore the ms abi defined 128-bit xmm registers
 
444
+   (as distictly opposed to the full runtime width) without causing extra
 
445
+   overhead for normal unix abis, the best solution seems to be to simply
 
446
+   ignore unwind data for unknown columns.  */
 
447
+
 
448
+#define UNWIND_COLUMN_IN_RANGE(x) \
 
449
+    __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1)
 
450
+
 
451
 #ifdef REG_VALUE_IN_UNWIND_CONTEXT
 
452
 typedef _Unwind_Word _Unwind_Context_Reg_Val;
 
453
 
 
454
@@ -939,14 +968,19 @@
 
455
          reg = insn & 0x3f;
 
456
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
457
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
458
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
459
-           = REG_SAVED_OFFSET;
 
460
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
461
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
462
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
463
+           {
 
464
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
465
+             fs->regs.reg[reg].loc.offset = offset;
 
466
+           }
 
467
        }
 
468
       else if ((insn & 0xc0) == DW_CFA_restore)
 
469
        {
 
470
          reg = insn & 0x3f;
 
471
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_UNSAVED;
 
472
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
473
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
474
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
475
        }
 
476
       else switch (insn)
 
477
        {
 
478
@@ -977,26 +1011,35 @@
 
479
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
480
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
481
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
482
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
483
-           = REG_SAVED_OFFSET;
 
484
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
485
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
486
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
487
+           {
 
488
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
489
+             fs->regs.reg[reg].loc.offset = offset;
 
490
+           }
 
491
          break;
 
492
 
 
493
        case DW_CFA_restore_extended:
 
494
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
495
          /* FIXME, this is wrong; the CIE might have said that the
 
496
             register was saved somewhere.  */
 
497
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
 
498
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
499
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
500
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
501
          break;
 
502
 
 
503
        case DW_CFA_same_value:
 
504
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
505
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
 
506
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
507
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
508
+           fs->regs.reg[reg].how = REG_UNSAVED;
 
509
          break;
 
510
 
 
511
        case DW_CFA_undefined:
 
512
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
513
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNDEFINED;
 
514
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
515
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
516
+           fs->regs.reg[reg].how = REG_UNDEFINED;
 
517
          break;
 
518
 
 
519
        case DW_CFA_nop:
 
520
@@ -1007,9 +1050,12 @@
 
521
            _uleb128_t reg2;
 
522
            insn_ptr = read_uleb128 (insn_ptr, &reg);
 
523
            insn_ptr = read_uleb128 (insn_ptr, &reg2);
 
524
-           fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_REG;
 
525
-           fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.reg =
 
526
-             (_Unwind_Word)reg2;
 
527
+           reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
528
+           if (UNWIND_COLUMN_IN_RANGE (reg))
 
529
+             {
 
530
+               fs->regs.reg[reg].how = REG_SAVED_REG;
 
531
+               fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2;
 
532
+             }
 
533
          }
 
534
          break;
 
535
 
 
536
@@ -1067,8 +1113,12 @@
 
537
 
 
538
        case DW_CFA_expression:
 
539
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
540
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_EXP;
 
541
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
 
542
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
543
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
544
+           {
 
545
+             fs->regs.reg[reg].how = REG_SAVED_EXP;
 
546
+             fs->regs.reg[reg].loc.exp = insn_ptr;
 
547
+           }
 
548
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
549
          insn_ptr += utmp;
 
550
          break;
 
551
@@ -1078,9 +1128,12 @@
 
552
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
553
          insn_ptr = read_sleb128 (insn_ptr, &stmp);
 
554
          offset = stmp * fs->data_align;
 
555
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
556
-           = REG_SAVED_OFFSET;
 
557
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
558
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
559
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
560
+           {
 
561
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
562
+             fs->regs.reg[reg].loc.offset = offset;
 
563
+           }
 
564
          break;
 
565
 
 
566
        case DW_CFA_def_cfa_sf:
 
567
@@ -1103,25 +1156,34 @@
 
568
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
569
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
570
          offset = (_Unwind_Sword) utmp * fs->data_align;
 
571
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
572
-           = REG_SAVED_VAL_OFFSET;
 
573
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
574
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
575
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
576
+           {
 
577
+             fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
 
578
+             fs->regs.reg[reg].loc.offset = offset;
 
579
+           }
 
580
          break;
 
581
 
 
582
        case DW_CFA_val_offset_sf:
 
583
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
584
          insn_ptr = read_sleb128 (insn_ptr, &stmp);
 
585
          offset = stmp * fs->data_align;
 
586
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
587
-           = REG_SAVED_VAL_OFFSET;
 
588
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
 
589
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
590
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
591
+           {
 
592
+             fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
 
593
+             fs->regs.reg[reg].loc.offset = offset;
 
594
+           }
 
595
          break;
 
596
 
 
597
        case DW_CFA_val_expression:
 
598
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
599
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
600
-           = REG_SAVED_VAL_EXP;
 
601
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
 
602
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
603
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
604
+           {
 
605
+             fs->regs.reg[reg].how = REG_SAVED_VAL_EXP;
 
606
+             fs->regs.reg[reg].loc.exp = insn_ptr;
 
607
+           }
 
608
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
609
          insn_ptr += utmp;
 
610
          break;
 
611
@@ -1147,9 +1209,12 @@
 
612
          insn_ptr = read_uleb128 (insn_ptr, &reg);
 
613
          insn_ptr = read_uleb128 (insn_ptr, &utmp);
 
614
          offset = (_Unwind_Word) utmp * fs->data_align;
 
615
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
 
616
-           = REG_SAVED_OFFSET;
 
617
-         fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = -offset;
 
618
+         reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
 
619
+         if (UNWIND_COLUMN_IN_RANGE (reg))
 
620
+           {
 
621
+             fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 
622
+             fs->regs.reg[reg].loc.offset = -offset;
 
623
+           }
 
624
          break;
 
625
 
 
626
        default:
 
627
Index: gcc/DATESTAMP
 
628
===================================================================
 
629
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_1_release)
 
630
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
 
631
@@ -1 +1 @@
 
632
-20130531
 
633
+20130612
 
634
Index: gcc/ChangeLog
 
635
===================================================================
 
636
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release)
 
637
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
 
638
@@ -1,3 +1,68 @@
 
639
+2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
 
640
+
 
641
+       Backport from mainline
 
642
+       2013-06-10  Uros Bizjak  <ubizjak@gmail.com>
 
643
+
 
644
+       * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use
 
645
+       cmp_code to construct REG_EQUAL note.
 
646
+
 
647
+2013-06-10  Oleg Endo  <olegendo@gcc.gnu.org>
 
648
+
 
649
+       Backport from mainline
 
650
+       2013-05-20  Oleg Endo  <olegendo@gcc.gnu.org>
 
651
+
 
652
+       PR target/56547
 
653
+       * config/sh/sh.md (fmasf4): Remove empty constraints strings.
 
654
+       (*fmasf4, *fmasf4_media): New insns.
 
655
+
 
656
+2013-06-09  Jakub Jelinek  <jakub@redhat.com>
 
657
+
 
658
+       PR target/57568
 
659
+       * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure
 
660
+       that operands[2] doesn't overlap with operands[0].
 
661
+
 
662
+2013-06-07  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>
 
663
+
 
664
+       * recog.c (offsettable_address_addr_space_p): Fix calculation of
 
665
+       address mode.  Move pointer mode initialization to the same place.
 
666
+
 
667
+2013-06-07  Uros Bizjak  <ubizjak@gmail.com>
 
668
+
 
669
+       Backport from mainline
 
670
+       2013-06-05  Uros Bizjak  <ubizjak@gmail.com>
 
671
+
 
672
+       * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all
 
673
+       GE, GT, GEU and GTU compares, modulo DImode compares with zero.
 
674
+
 
675
+       Backport from mainline
 
676
+       2013-05-23  Uros Bizjak  <ubizjak@gmail.com>
 
677
+
 
678
+       PR target/57379
 
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.
 
682
+
 
683
+2013-06-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
684
+
 
685
+       Backport from mainline.
 
686
+       2013-05-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
687
+
 
688
+       * config/rs6000/rs6000.h (MALLOC_ABI_ALIGNMENT): New #define.
 
689
+
 
690
+2013-06-03  James Greenhalgh  <james.greenhalgh@arm.com>
 
691
+
 
692
+       Backport from mainline.
 
693
+       2013-04-25  James Greenhalgh  <james.greenhalgh@arm.com>
 
694
+
 
695
+       * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf
 
696
+       format specifier in 'X' case.
 
697
+
 
698
+2013-05-31  Richard Henderson  <rth@redhat.com>
 
699
+
 
700
+       PR target/56742
 
701
+       * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
 
702
+       (ix86_reorg): Call it.
 
703
+
 
704
 2013-05-31  Release Manager
 
705
 
 
706
        * GCC 4.8.1 released.
 
707
@@ -7,7 +82,7 @@
 
708
        Backport from mainline
 
709
        2013-05-02  Greta Yorsh  <Greta.Yorsh@arm.com>
 
710
 
 
711
-        PR target/56732
 
712
+       PR target/56732
 
713
        * config/arm/arm.c (arm_expand_epilogue): Check really_return before
 
714
        generating simple_return for naked functions.
 
715
 
 
716
@@ -203,14 +278,14 @@
 
717
 
 
718
 2013-05-09  Martin Jambor  <mjambor@suse.cz>
 
719
 
 
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.
 
735
 
 
736
 2013-05-08  Diego Novillo  <dnovillo@google.com>
 
737
 
 
738
@@ -315,7 +390,7 @@
 
739
        2013-04-25  Marek Polacek  <polacek@redhat.com>
 
740
 
 
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.
 
744
 
 
745
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
746
 
 
747
@@ -351,40 +426,40 @@
 
748
        Backport from mainline
 
749
        2013-04-24  Vladimir Makarov  <vmakarov@redhat.com>
 
750
 
 
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.
 
757
 
 
758
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
759
 
 
760
        Backport from mainline
 
761
        2013-04-22  Vladimir Makarov  <vmakarov@redhat.com>
 
762
 
 
763
-        PR target/57018
 
764
-        * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
 
765
-        a set sp if no stack realignment.
 
766
+       PR target/57018
 
767
+       * lra-eliminations.c (mark_not_eliminable): Prevent elimination of
 
768
+       a set sp if no stack realignment.
 
769
 
 
770
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
771
 
 
772
        Backport from mainline
 
773
        2013-04-18  Vladimir Makarov  <vmakarov@redhat.com>
 
774
 
 
775
-        PR rtl-optimization/56999
 
776
-        * lra-coalesce.c (coalescable_pseudo_p): Remove 2nd parameter and
 
777
-        related code.
 
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
 
783
+       related code.
 
784
+       (lra_coalesce): Remove split_origin_bitmap and related code.
 
785
+       * lra.c (lra): Coalesce after undoing inheritance. Recreate live
 
786
+       ranges if necessary.
 
787
 
 
788
 2013-05-02  Vladimir Makarov  <vmakarov@redhat.com>
 
789
 
 
790
        Backport from mainline
 
791
        2013-04-19  Vladimir Makarov  <vmakarov@redhat.com>
 
792
 
 
793
-        PR rtl-optimization/56847
 
794
-        * lra-constraints.c (process_alt_operands): Discourage alternative
 
795
-        with non-matche doffsettable memory constraint fro memory with
 
796
-        known offset.
 
797
+       PR rtl-optimization/56847
 
798
+       * lra-constraints.c (process_alt_operands): Discourage alternative
 
799
+       with non-matche doffsettable memory constraint fro memory with
 
800
+       known offset.
 
801
 
 
802
 2013-05-02  Ian Bolton  <ian.bolton@arm.com>
 
803
 
 
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)
 
808
@@ -0,0 +1,18 @@
 
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 } } */
 
815
+
 
816
+float
 
817
+test_00 (float a, float b)
 
818
+{
 
819
+  return a * b + a;
 
820
+}
 
821
+
 
822
+float
 
823
+test_01 (float a)
 
824
+{
 
825
+  return a * a + a;
 
826
+}
 
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)
 
831
@@ -0,0 +1,19 @@
 
832
+/* Verify that the fmac insn is used for the expression 'a * b + a' and
 
833
+   'a * a + a'.
 
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 } } */
 
839
+
 
840
+float
 
841
+test_00 (float a, float b)
 
842
+{
 
843
+  return a * b + a;
 
844
+}
 
845
+
 
846
+float
 
847
+test_01 (float a)
 
848
+{
 
849
+  return a * a + a;
 
850
+}
 
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)
 
855
@@ -0,0 +1,29 @@
 
856
+! { dg-compile }
 
857
+!
 
858
+! PR fortran/57508
 
859
+!
 
860
+module ForTrilinos_ref_counter
 
861
+  type ref_counter
 
862
+  contains
 
863
+      procedure :: assign
 
864
+      generic   :: assignment(=) => assign
 
865
+  end type
 
866
+contains
 
867
+  subroutine assign (lhs, rhs)
 
868
+    class (ref_counter), intent(inout) :: lhs
 
869
+    class (ref_counter), intent(in) :: rhs
 
870
+  end subroutine
 
871
+end module
 
872
+module FEpetra_BlockMap
 
873
+  use ForTrilinos_ref_counter, only : ref_counter
 
874
+  type :: Epetra_BlockMap 
 
875
+    type(ref_counter) :: counter
 
876
+  end type
 
877
+contains
 
878
+  function from_struct() result(new_Epetra_BlockMap)
 
879
+    type(Epetra_BlockMap) :: new_Epetra_BlockMap
 
880
+  end function
 
881
+  type(Epetra_BlockMap) function create_arbitrary()
 
882
+    create_arbitrary = from_struct()
 
883
+  end function
 
884
+end module
 
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)
 
889
@@ -0,0 +1,36 @@
 
890
+! { dg-do compile }
 
891
+!
 
892
+! PR fortran/57364
 
893
+!
 
894
+! Contributed by Damian Rouson
 
895
+!
 
896
+module ref_counter_implementation
 
897
+  type ref_counter
 
898
+  contains
 
899
+    procedure :: assign
 
900
+    generic :: assignment(=) => assign
 
901
+  end type
 
902
+contains
 
903
+  subroutine assign (lhs, rhs)
 
904
+    class (ref_counter), intent(inout) :: lhs
 
905
+    class (ref_counter), intent(in) :: rhs
 
906
+  end subroutine
 
907
+end module
 
908
+module foo_parent_implementation
 
909
+  use ref_counter_implementation ,only: ref_counter
 
910
+  type :: foo_parent
 
911
+    type(ref_counter) :: counter
 
912
+  end type
 
913
+contains
 
914
+  type(foo_parent) function new_foo_parent()
 
915
+  end function
 
916
+end module
 
917
+module foo_implementation
 
918
+  use foo_parent_implementation ,only: foo_parent,new_foo_parent
 
919
+  type, extends(foo_parent) :: foo
 
920
+  end type
 
921
+contains
 
922
+  type(foo) function new_foo()
 
923
+    new_foo%foo_parent = new_foo_parent()
 
924
+ end function
 
925
+end module
 
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)
 
930
@@ -0,0 +1,34 @@
 
931
+! { dg-do compile }
 
932
+!
 
933
+! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
 
934
+!
 
935
+! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
 
936
+
 
937
+module base_mod
 
938
+  implicit none
 
939
+  type base_type
 
940
+  contains
 
941
+    procedure, pass(map)  :: clone    => base_clone
 
942
+  end type
 
943
+contains
 
944
+  subroutine  base_clone(map,mapout)
 
945
+    class(base_type) :: map
 
946
+    class(base_type) :: mapout
 
947
+  end subroutine
 
948
+end module
 
949
+
 
950
+module r_mod
 
951
+  use base_mod
 
952
+  implicit none
 
953
+  type, extends(base_type) :: r_type
 
954
+  contains
 
955
+    procedure, pass(map)  :: clone    => r_clone   ! { dg-error "Type/rank mismatch in argument" }
 
956
+  end type
 
957
+contains
 
958
+  subroutine  r_clone(map,mapout)
 
959
+    class(r_type) :: map
 
960
+    class(r_type) :: mapout
 
961
+  end subroutine
 
962
+end module
 
963
+
 
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)
 
969
@@ -0,0 +1,12 @@
 
970
+/* PR target/57568 */
 
971
+
 
972
+extern void abort (void);
 
973
+int a[6][9] = { }, b = 1, *c = &a[3][5];
 
974
+
 
975
+int
 
976
+main ()
 
977
+{
 
978
+  if (b && (*c = *c + *c))
 
979
+    abort ();
 
980
+  return 0;
 
981
+}
 
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)
 
986
@@ -1,3 +1,36 @@
 
987
+2013-06-11  Tobias Burnus  <burnus@net-b.de>
 
988
+
 
989
+       PR fortran/57508
 
990
+       * gfortran.dg/defined_assignment_7.f90: New.
 
991
+
 
992
+2013-06-10  Oleg Endo  <olegendo@gcc.gnu.org>
 
993
+
 
994
+       Backport from mainline
 
995
+       2013-05-20  Oleg Endo  <olegendo@gcc.gnu.org>
 
996
+
 
997
+       PR target/56547
 
998
+       * gcc.target/sh/pr56547-1.c: New.
 
999
+       * gcc.target/sh/pr56547-2.c: New.
 
1000
+
 
1001
+2013-06-09  Jakub Jelinek  <jakub@redhat.com>
 
1002
+
 
1003
+       PR target/57568
 
1004
+       * gcc.c-torture/execute/pr57568.c: New test.
 
1005
+
 
1006
+2013-06-04  Tobias Burnus  <burnus@net-b.de>
 
1007
+
 
1008
+       Backport from mainline
 
1009
+       2013-05-22  Tobias Burnus  <burnus@net-b.de>
 
1010
+
 
1011
+       PR fortran/57364
 
1012
+       * gfortran.dg/defined_assignment_6.f90: New.
 
1013
+
 
1014
+2013-05-31  Janus Weil  <janus@gcc.gnu.org>
 
1015
+           Tobias Burnus  <burnus@net-b.de>
 
1016
+
 
1017
+       PR fortran/57217
 
1018
+       * gfortran.dg/typebound_override_4.f90: New.
 
1019
+
 
1020
 2013-05-31  Release Manager
 
1021
 
 
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)
 
1027
@@ -0,0 +1,9 @@
 
1028
+// PR c++/56930
 
1029
+// { dg-require-effective-target c++11 }
 
1030
+// { dg-options -Wconversion }
 
1031
+
 
1032
+int main()
 
1033
+{
 
1034
+  int x = sizeof(int);
 
1035
+  int y { sizeof(int) };
 
1036
+}
 
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)
 
1041
@@ -0,0 +1,24 @@
 
1042
+// PR c++/57319
 
1043
+// { dg-require-effective-target c++11 }
 
1044
+
 
1045
+namespace N1 {
 
1046
+  struct A { };
 
1047
+  struct B: virtual A { };
 
1048
+  struct C: virtual B { };
 
1049
+
 
1050
+  struct D: C
 
1051
+  {
 
1052
+    void operator= (D &);
 
1053
+  };
 
1054
+}
 
1055
+
 
1056
+namespace N2 {
 
1057
+  struct A { A& operator=(A&&); };
 
1058
+  struct B: virtual A { };     // { dg-warning "move assignment" }
 
1059
+  struct C: virtual B { };     // { dg-warning "move assignment" }
 
1060
+
 
1061
+  struct D: C
 
1062
+  {
 
1063
+    void operator= (D &);
 
1064
+  };
 
1065
+}
 
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 @@
 
1071
   return false;
 
1072
 }
 
1073
 
 
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.  */
 
1078
+
 
1079
+bool
 
1080
+vbase_has_user_provided_move_assign (tree type)
 
1081
+{
 
1082
+  /* Does the type itself have a user-provided move assignment operator?  */
 
1083
+  for (tree fns
 
1084
+        = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
 
1085
+       fns; fns = OVL_NEXT (fns))
 
1086
+    {
 
1087
+      tree fn = OVL_CURRENT (fns);
 
1088
+      if (move_fn_p (fn) && user_provided_p (fn))
 
1089
+       return true;
 
1090
+    }
 
1091
+
 
1092
+  /* Do any of its bases?  */
 
1093
+  tree binfo = TYPE_BINFO (type);
 
1094
+  tree base_binfo;
 
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)))
 
1097
+      return true;
 
1098
+
 
1099
+  /* Or non-static data members?  */
 
1100
+  for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
 
1101
+    {
 
1102
+      if (TREE_CODE (field) == FIELD_DECL
 
1103
+         && CLASS_TYPE_P (TREE_TYPE (field))
 
1104
+         && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
 
1105
+       return true;
 
1106
+    }
 
1107
+
 
1108
+  /* Seems not.  */
 
1109
+  return false;
 
1110
+}
 
1111
+
 
1112
 /* If default-initialization leaves part of TYPE uninitialized, returns
 
1113
    a DECL for the field or TYPE itself (DR 253).  */
 
1114
 
 
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)
 
1133
@@ -1,3 +1,16 @@
 
1134
+2013-05-31  Jason Merrill  <jason@redhat.com>
 
1135
+
 
1136
+       PR c++/57319
 
1137
+       * class.c (vbase_has_user_provided_move_assign): New.
 
1138
+       * method.c (synthesized_method_walk): Check it.
 
1139
+       * cp-tree.h: Declare it.
 
1140
+
 
1141
+       PR c++/56930
 
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*.
 
1146
+
 
1147
 2013-05-31  Release Manager
 
1148
 
 
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 @@
 
1155
     case UNGT_EXPR:
 
1156
     case UNGE_EXPR:
 
1157
     case UNEQ_EXPR:
 
1158
+    case LTGT_EXPR:
 
1159
     case RANGE_EXPR:
 
1160
     case COMPLEX_EXPR:
 
1161
       r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
 
1162
@@ -8846,6 +8847,12 @@
 
1163
        }
 
1164
       return false;
 
1165
 
 
1166
+    case OMP_ATOMIC:
 
1167
+    case OMP_ATOMIC_READ:
 
1168
+    case OMP_ATOMIC_CAPTURE_OLD:
 
1169
+    case OMP_ATOMIC_CAPTURE_NEW:
 
1170
+      return false;
 
1171
+
 
1172
     default:
 
1173
       if (objc_is_property_ref (t))
 
1174
        return false;
 
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);
 
1182
 
 
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);
 
1187
   else
 
1188
     expr = convert (totype, expr);
 
1189
 
 
1190
Index: gcc/cp/cvt.c
 
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)
 
1194
@@ -620,6 +620,9 @@
 
1195
 
 
1196
   if (TREE_TYPE (expr) == type)
 
1197
     return expr;
 
1198
+
 
1199
+  if (TREE_CODE (expr) == SIZEOF_EXPR)
 
1200
+    expr = maybe_constant_value (expr);
 
1201
   
 
1202
   result = cp_convert (type, expr, complain);
 
1203
 
 
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);
 
1216
Index: gcc/recog.c
 
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);
 
1226
-#endif
 
1227
 
 
1228
   if (CONSTANT_ADDRESS_P (y))
 
1229
     return 1;
 
1230
@@ -1962,6 +1959,13 @@
 
1231
   if (mode_dependent_address_p (y, as))
 
1232
     return 0;
 
1233
 
 
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);
 
1239
+#endif
 
1240
+
 
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 @@
 
1245
       int good;
 
1246
 
 
1247
       y1 = *y2;
 
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
 
1255
       && mode != BLKmode
 
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),
 
1261
                                       mode_sz - 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),
 
1270
                                            mode_sz - 1));
 
1271
 #endif
 
1272
   else
 
1273
-    z = plus_constant (GET_MODE (y), y, mode_sz - 1);
 
1274
+    z = plus_constant (address_mode, y, mode_sz - 1);
 
1275
 
 
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)
 
1284
 {
 
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)))
 
1289
     {
 
1290
       snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
 
1291
                s1->name);
 
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)
 
1296
@@ -1,3 +1,23 @@
 
1297
+2013-06-11  Tobias Burnus  <burnus@net-b.de>
 
1298
+
 
1299
+       PR fortran/57508
 
1300
+       * resolve.c (get_temp_from_expr): Don't copy function
 
1301
+       result attributes to temporary.
 
1302
+
 
1303
+2013-06-04  Tobias Burnus  <burnus@net-b.de>
 
1304
+
 
1305
+       Backport from mainline
 
1306
+       2013-05-22  Tobias Burnus  <burnus@net-b.de>
 
1307
+
 
1308
+       PR fortran/57364
 
1309
+       * resolve.c (get_temp_from_expr): Commit created sym.
 
1310
+
 
1311
+2013-05-31  Janus Weil  <janus@gcc.gnu.org>
 
1312
+           Tobias Burnus  <burnus@net-b.de>
 
1313
+
 
1314
+       PR fortran/57217
 
1315
+       * interface.c (check_dummy_characteristics): Symmetrize type check.
 
1316
+
 
1317
 2013-05-31  Release Manager
 
1318
 
 
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 @@
 
1325
 
 
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;
 
1331
+
 
1332
   if (as)
 
1333
     {
 
1334
       tmp->n.sym->as = gfc_copy_array_spec (as);
 
1335
@@ -9759,6 +9763,7 @@
 
1336
 
 
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);
 
1341
 
 
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)
 
1347
@@ -23,6 +23,7 @@
 
1348
 ;; Uses of UNSPEC in this file:
 
1349
 
 
1350
 (define_c_enum "unspec" [
 
1351
+  UNSPEC_XFLT_COMPARE
 
1352
   UNSPEC_ARG_HOME
 
1353
   UNSPEC_LDGP1
 
1354
   UNSPEC_INSXH
 
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 @@
 
1360
       break;
 
1361
 
 
1362
     case GE:  case GT:  case GEU:  case GTU:
 
1363
-      /* These must be swapped.  */
 
1364
-      if (op1 != CONST0_RTX (cmp_mode))
 
1365
-       {
 
1366
-         code = swap_condition (code);
 
1367
-         tem = op0, op0 = op1, op1 = tem;
 
1368
-       }
 
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)
 
1372
+       break;
 
1373
+      code = swap_condition (code);
 
1374
+      tem = op0, op0 = op1, op1 = tem;
 
1375
       break;
 
1376
 
 
1377
     default:
 
1378
@@ -3067,12 +3067,9 @@
 
1379
   operands[1] = op1;
 
1380
   out = gen_reg_rtx (DImode);
 
1381
 
 
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);
 
1392
 
 
1393
   return out;
 
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 @@
 
1419
     }
 
1420
 }
 
1421
 
 
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.  */
 
1426
+
 
1427
+static void
 
1428
+ix86_seh_fixup_eh_fallthru (void)
 
1429
+{
 
1430
+  edge e;
 
1431
+  edge_iterator ei;
 
1432
+
 
1433
+  FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
 
1434
+    {
 
1435
+      rtx insn, next;
 
1436
+
 
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)
 
1440
+         break;
 
1441
+      if (insn == NULL)
 
1442
+       continue;
 
1443
+
 
1444
+      /* We only care about preceeding insns that can throw.  */
 
1445
+      insn = prev_active_insn (insn);
 
1446
+      if (insn == NULL || !can_throw_internal (insn))
 
1447
+       continue;
 
1448
+
 
1449
+      /* Do not separate calls from their debug information.  */
 
1450
+      for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
 
1451
+       if (NOTE_P (next)
 
1452
+            && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
 
1453
+                || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
 
1454
+         insn = next;
 
1455
+       else
 
1456
+         break;
 
1457
+
 
1458
+      emit_insn_after (gen_nops (const1_rtx), insn);
 
1459
+    }
 
1460
+}
 
1461
+
 
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.  */
 
1464
 static void
 
1465
@@ -35453,6 +35493,9 @@
 
1466
      with old MDEP_REORGS that are not CFG based.  Recompute it now.  */
 
1467
   compute_bb_for_insn ();
 
1468
 
 
1469
+  if (TARGET_SEH && current_function_has_exception_handlers ())
 
1470
+    ix86_seh_fixup_eh_fallthru ();
 
1471
+
 
1472
   if (optimize && optimize_function_for_speed_p (cfun))
 
1473
     {
 
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 @@
 
1480
 
 
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"
 
1492
 {
 
1493
   if (TARGET_SH2E)
 
1494
@@ -12107,6 +12107,43 @@
 
1495
   "fmac.s %1, %2, %0"
 
1496
   [(set_attr "type" "fparith_media")])
 
1497
 
 
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"
 
1508
+  "fmac        %1,%2,%0"
 
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))])]
 
1513
+{
 
1514
+  /* Change 'b * a + a' into 'a * b + a'.
 
1515
+     This is better for register allocation.  */
 
1516
+  if (REGNO (operands[2]) == REGNO (operands[3]))
 
1517
+    {
 
1518
+      rtx tmp = operands[1];
 
1519
+      operands[1] = operands[2];
 
1520
+      operands[2] = tmp;
 
1521
+    }
 
1522
+}
 
1523
+  [(set_attr "type" "fp")
 
1524
+   (set_attr "fp_mode" "single")])
 
1525
+
 
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")])
 
1534
+
 
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);
 
1544
          return;
 
1545
        }
 
1546
-      asm_fprintf (f, "0x%x", UINTVAL (x));
 
1547
+      asm_fprintf (f, "0x%wx", UINTVAL (x));
 
1548
       break;
 
1549
 
 
1550
     case 'w':
 
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)
 
1558
 
 
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)
 
1565
+
 
1566
 /* Pick up the return address upon entry to a procedure. Used for
 
1567
    dwarf2 unwind information.  This also enables the table driven
 
1568
    mechanism.  */
 
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)
 
1573
@@ -1,3 +1,14 @@
 
1574
+2013-05-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
1575
+
 
1576
+       Backport from mainline:
 
1577
+       2013-05-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
1578
+
 
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]:
 
1583
+       Matching change.
 
1584
+
 
1585
 2013-05-31  Release Manager
 
1586
 
 
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)
 
1592
@@ -10,7 +10,7 @@
 
1593
 
 
1594
 
 
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)); }
 
1600
 #endif
 
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)
 
1605
@@ -2,11 +2,11 @@
 
1606
  * 
 
1607
  * DO NOT EDIT THIS FILE   (fixincl.x)
 
1608
  * 
 
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
 
1613
  */
 
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
 
1616
  *
 
1617
  * You must regenerate it.  Use the ./genfixes script.
 
1618
  *
 
1619
@@ -6663,7 +6663,7 @@
 
1620
  */
 
1621
 static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
 
1622
     "format",
 
1623
-    "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
 
1624
+    "#if __cplusplus < 201103L\n\
 
1625
 %0\n\
 
1626
 #endif",
 
1627
     (char*)NULL };
 
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 @@
 
1633
 
 
1634
 
 
1635
 /*
 
1636
- *  The pow overloads with int were removed in C++ 2011.
 
1637
+ *  The pow overloads with int were removed in C++ 2011 DR 550.
 
1638
  */
 
1639
 fix = {
 
1640
     hackname  = solaris_pow_int_overload;
 
1641
@@ -3456,7 +3456,7 @@
 
1642
     select    = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
 
1643
                " *\\{[^{}]*\n[^{}]*\\}";
 
1644
     c_fix     = format;
 
1645
-    c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
 
1646
+    c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
 
1647
 
 
1648
     test_text =
 
1649
     "  inline long double pow(long double __X, int __Y) { return\n"