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

« back to all changes in this revision

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