1
# DP: updates from the 4.8 branch upto 20120603 (r199596).
5
cat > ${dir}LAST_UPDATED <<EOF
6
Mon Jun 3 09:20:58 CEST 2013
7
Mon Jun 3 07:20:58 UTC 2013 (revision 199596)
11
LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_1_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch \
12
| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
13
| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
15
Index: libgcc/ChangeLog
16
===================================================================
17
--- a/src/libgcc/ChangeLog (.../tags/gcc_4_8_1_release)
18
+++ b/src/libgcc/ChangeLog (.../branches/gcc-4_8-branch)
20
+2013-05-31 Richard Henderson <rth@redhat.com>
23
+ * unwind-dw2.c (UNWIND_COLUMN_IN_RANGE): New macro.
24
+ (execute_cfa_program): Use it when storing to fs->regs.
26
2013-05-31 Release Manager
29
Index: libgcc/unwind-dw2.c
30
===================================================================
31
--- a/src/libgcc/unwind-dw2.c (.../tags/gcc_4_8_1_release)
32
+++ b/src/libgcc/unwind-dw2.c (.../branches/gcc-4_8-branch)
34
#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
37
+/* ??? For the public function interfaces, we tend to gcc_assert that the
38
+ column numbers are in range. For the dwarf2 unwind info this does happen,
39
+ although so far in a case that doesn't actually matter.
41
+ See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores
42
+ the call-saved xmm registers and annotates them. We havn't bothered
43
+ providing support for the xmm registers for the x86_64 port primarily
44
+ because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or
45
+ SEH instead. Adding the support for unix targets would generally be a
46
+ waste. However, some runtime libraries supplied with ICC do contain such
47
+ an unorthodox transition, as well as the unwind info to match. This loss
48
+ of register restoration doesn't matter in practice, because the exception
49
+ is caught in the native unix abi, where all of the xmm registers are
52
+ Ideally, we'd record some bit to notice when we're failing to restore some
53
+ register recorded in the unwind info, but to do that we need annotation on
54
+ the unix->ms abi edge, so that we know when the register data may be
55
+ discarded. And since this edge is also within the ICC library, we're
56
+ unlikely to be able to get the new annotation.
58
+ Barring a magic solution to restore the ms abi defined 128-bit xmm registers
59
+ (as distictly opposed to the full runtime width) without causing extra
60
+ overhead for normal unix abis, the best solution seems to be to simply
61
+ ignore unwind data for unknown columns. */
63
+#define UNWIND_COLUMN_IN_RANGE(x) \
64
+ __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1)
66
#ifdef REG_VALUE_IN_UNWIND_CONTEXT
67
typedef _Unwind_Word _Unwind_Context_Reg_Val;
71
insn_ptr = read_uleb128 (insn_ptr, &utmp);
72
offset = (_Unwind_Sword) utmp * fs->data_align;
73
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
75
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
76
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
77
+ if (UNWIND_COLUMN_IN_RANGE (reg))
79
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
80
+ fs->regs.reg[reg].loc.offset = offset;
83
else if ((insn & 0xc0) == DW_CFA_restore)
86
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_UNSAVED;
87
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
88
+ if (UNWIND_COLUMN_IN_RANGE (reg))
89
+ fs->regs.reg[reg].how = REG_UNSAVED;
93
@@ -977,26 +1011,35 @@
94
insn_ptr = read_uleb128 (insn_ptr, ®);
95
insn_ptr = read_uleb128 (insn_ptr, &utmp);
96
offset = (_Unwind_Sword) utmp * fs->data_align;
97
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
99
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
100
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
101
+ if (UNWIND_COLUMN_IN_RANGE (reg))
103
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
104
+ fs->regs.reg[reg].loc.offset = offset;
108
case DW_CFA_restore_extended:
109
insn_ptr = read_uleb128 (insn_ptr, ®);
110
/* FIXME, this is wrong; the CIE might have said that the
111
register was saved somewhere. */
112
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
113
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
114
+ if (UNWIND_COLUMN_IN_RANGE (reg))
115
+ fs->regs.reg[reg].how = REG_UNSAVED;
118
case DW_CFA_same_value:
119
insn_ptr = read_uleb128 (insn_ptr, ®);
120
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED;
121
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
122
+ if (UNWIND_COLUMN_IN_RANGE (reg))
123
+ fs->regs.reg[reg].how = REG_UNSAVED;
126
case DW_CFA_undefined:
127
insn_ptr = read_uleb128 (insn_ptr, ®);
128
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNDEFINED;
129
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
130
+ if (UNWIND_COLUMN_IN_RANGE (reg))
131
+ fs->regs.reg[reg].how = REG_UNDEFINED;
135
@@ -1007,9 +1050,12 @@
137
insn_ptr = read_uleb128 (insn_ptr, ®);
138
insn_ptr = read_uleb128 (insn_ptr, ®2);
139
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_REG;
140
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.reg =
141
- (_Unwind_Word)reg2;
142
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
143
+ if (UNWIND_COLUMN_IN_RANGE (reg))
145
+ fs->regs.reg[reg].how = REG_SAVED_REG;
146
+ fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2;
151
@@ -1067,8 +1113,12 @@
153
case DW_CFA_expression:
154
insn_ptr = read_uleb128 (insn_ptr, ®);
155
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_EXP;
156
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
157
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
158
+ if (UNWIND_COLUMN_IN_RANGE (reg))
160
+ fs->regs.reg[reg].how = REG_SAVED_EXP;
161
+ fs->regs.reg[reg].loc.exp = insn_ptr;
163
insn_ptr = read_uleb128 (insn_ptr, &utmp);
166
@@ -1078,9 +1128,12 @@
167
insn_ptr = read_uleb128 (insn_ptr, ®);
168
insn_ptr = read_sleb128 (insn_ptr, &stmp);
169
offset = stmp * fs->data_align;
170
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
171
- = REG_SAVED_OFFSET;
172
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
173
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
174
+ if (UNWIND_COLUMN_IN_RANGE (reg))
176
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
177
+ fs->regs.reg[reg].loc.offset = offset;
181
case DW_CFA_def_cfa_sf:
182
@@ -1103,25 +1156,34 @@
183
insn_ptr = read_uleb128 (insn_ptr, ®);
184
insn_ptr = read_uleb128 (insn_ptr, &utmp);
185
offset = (_Unwind_Sword) utmp * fs->data_align;
186
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
187
- = REG_SAVED_VAL_OFFSET;
188
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
189
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
190
+ if (UNWIND_COLUMN_IN_RANGE (reg))
192
+ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
193
+ fs->regs.reg[reg].loc.offset = offset;
197
case DW_CFA_val_offset_sf:
198
insn_ptr = read_uleb128 (insn_ptr, ®);
199
insn_ptr = read_sleb128 (insn_ptr, &stmp);
200
offset = stmp * fs->data_align;
201
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
202
- = REG_SAVED_VAL_OFFSET;
203
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset;
204
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
205
+ if (UNWIND_COLUMN_IN_RANGE (reg))
207
+ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET;
208
+ fs->regs.reg[reg].loc.offset = offset;
212
case DW_CFA_val_expression:
213
insn_ptr = read_uleb128 (insn_ptr, ®);
214
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
215
- = REG_SAVED_VAL_EXP;
216
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr;
217
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
218
+ if (UNWIND_COLUMN_IN_RANGE (reg))
220
+ fs->regs.reg[reg].how = REG_SAVED_VAL_EXP;
221
+ fs->regs.reg[reg].loc.exp = insn_ptr;
223
insn_ptr = read_uleb128 (insn_ptr, &utmp);
226
@@ -1147,9 +1209,12 @@
227
insn_ptr = read_uleb128 (insn_ptr, ®);
228
insn_ptr = read_uleb128 (insn_ptr, &utmp);
229
offset = (_Unwind_Word) utmp * fs->data_align;
230
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how
231
- = REG_SAVED_OFFSET;
232
- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = -offset;
233
+ reg = DWARF_REG_TO_UNWIND_COLUMN (reg);
234
+ if (UNWIND_COLUMN_IN_RANGE (reg))
236
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
237
+ fs->regs.reg[reg].loc.offset = -offset;
243
===================================================================
244
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_1_release)
245
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
250
===================================================================
251
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release)
252
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
254
+2013-05-31 Richard Henderson <rth@redhat.com>
257
+ * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New.
258
+ (ix86_reorg): Call it.
260
2013-05-31 Release Manager
262
* GCC 4.8.1 released.
263
Index: gcc/testsuite/gfortran.dg/typebound_override_4.f90
264
===================================================================
265
--- a/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../tags/gcc_4_8_1_release)
266
+++ b/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../branches/gcc-4_8-branch)
270
+! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check
272
+! Contributed by Salvatore Filippone <filippone.salvatore@gmail.com>
278
+ procedure, pass(map) :: clone => base_clone
281
+ subroutine base_clone(map,mapout)
282
+ class(base_type) :: map
283
+ class(base_type) :: mapout
290
+ type, extends(base_type) :: r_type
292
+ procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" }
295
+ subroutine r_clone(map,mapout)
296
+ class(r_type) :: map
297
+ class(r_type) :: mapout
301
+! { dg-final { cleanup-modules "base_mod r_mod" } }
302
Index: gcc/testsuite/ChangeLog
303
===================================================================
304
--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_1_release)
305
+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch)
307
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
308
+ Tobias Burnus <burnus@net-b.de>
311
+ * gfortran.dg/typebound_override_4.f90: New.
313
2013-05-31 Release Manager
315
* GCC 4.8.1 released.
316
Index: gcc/testsuite/g++.dg/cpp0x/initlist71.C
317
===================================================================
318
--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../tags/gcc_4_8_1_release)
319
+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../branches/gcc-4_8-branch)
322
+// { dg-require-effective-target c++11 }
323
+// { dg-options -Wconversion }
327
+ int x = sizeof(int);
328
+ int y { sizeof(int) };
330
Index: gcc/testsuite/g++.dg/cpp0x/defaulted44.C
331
===================================================================
332
--- a/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../tags/gcc_4_8_1_release)
333
+++ b/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../branches/gcc-4_8-branch)
336
+// { dg-require-effective-target c++11 }
340
+ struct B: virtual A { };
341
+ struct C: virtual B { };
345
+ void operator= (D &);
350
+ struct A { A& operator=(A&&); };
351
+ struct B: virtual A { }; // { dg-warning "move assignment" }
352
+ struct C: virtual B { }; // { dg-warning "move assignment" }
356
+ void operator= (D &);
359
Index: gcc/cp/class.c
360
===================================================================
361
--- a/src/gcc/cp/class.c (.../tags/gcc_4_8_1_release)
362
+++ b/src/gcc/cp/class.c (.../branches/gcc-4_8-branch)
363
@@ -4833,6 +4833,44 @@
367
+/* TYPE is being used as a virtual base, and has a non-trivial move
368
+ assignment. Return true if this is due to there being a user-provided
369
+ move assignment in TYPE or one of its subobjects; if there isn't, then
370
+ multiple move assignment can't cause any harm. */
373
+vbase_has_user_provided_move_assign (tree type)
375
+ /* Does the type itself have a user-provided move assignment operator? */
377
+ = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR));
378
+ fns; fns = OVL_NEXT (fns))
380
+ tree fn = OVL_CURRENT (fns);
381
+ if (move_fn_p (fn) && user_provided_p (fn))
385
+ /* Do any of its bases? */
386
+ tree binfo = TYPE_BINFO (type);
388
+ for (int i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
389
+ if (vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo)))
392
+ /* Or non-static data members? */
393
+ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
395
+ if (TREE_CODE (field) == FIELD_DECL
396
+ && CLASS_TYPE_P (TREE_TYPE (field))
397
+ && vbase_has_user_provided_move_assign (TREE_TYPE (field)))
405
/* If default-initialization leaves part of TYPE uninitialized, returns
406
a DECL for the field or TYPE itself (DR 253). */
408
Index: gcc/cp/method.c
409
===================================================================
410
--- a/src/gcc/cp/method.c (.../tags/gcc_4_8_1_release)
411
+++ b/src/gcc/cp/method.c (.../branches/gcc-4_8-branch)
412
@@ -1340,7 +1340,8 @@
413
if (diag && assign_p && move_p
414
&& BINFO_VIRTUAL_P (base_binfo)
415
&& rval && TREE_CODE (rval) == FUNCTION_DECL
416
- && move_fn_p (rval) && !trivial_fn_p (rval))
417
+ && move_fn_p (rval) && !trivial_fn_p (rval)
418
+ && vbase_has_user_provided_move_assign (basetype))
419
warning (OPT_Wvirtual_move_assign,
420
"defaulted move assignment for %qT calls a non-trivial "
421
"move assignment operator for virtual base %qT",
422
Index: gcc/cp/ChangeLog
423
===================================================================
424
--- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_1_release)
425
+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch)
427
+2013-05-31 Jason Merrill <jason@redhat.com>
430
+ * class.c (vbase_has_user_provided_move_assign): New.
431
+ * method.c (synthesized_method_walk): Check it.
432
+ * cp-tree.h: Declare it.
435
+ * call.c (convert_like_real): Use cp_convert_and_check.
436
+ * cvt.c (cp_convert_and_check): Use maybe_constant_value.
437
+ * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR.
438
+ (potential_constant_expression_1): Handle OMP_ATOMIC*.
440
2013-05-31 Release Manager
442
* GCC 4.8.1 released.
443
Index: gcc/cp/semantics.c
444
===================================================================
445
--- a/src/gcc/cp/semantics.c (.../tags/gcc_4_8_1_release)
446
+++ b/src/gcc/cp/semantics.c (.../branches/gcc-4_8-branch)
447
@@ -7990,6 +7990,7 @@
454
r = cxx_eval_binary_expression (call, t, allow_non_constant, addr,
455
@@ -8846,6 +8847,12 @@
460
+ case OMP_ATOMIC_READ:
461
+ case OMP_ATOMIC_CAPTURE_OLD:
462
+ case OMP_ATOMIC_CAPTURE_NEW:
466
if (objc_is_property_ref (t))
469
===================================================================
470
--- a/src/gcc/cp/call.c (.../tags/gcc_4_8_1_release)
471
+++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch)
472
@@ -6195,8 +6195,8 @@
473
if (convs->check_narrowing)
474
check_narrowing (totype, expr);
476
- if (issue_conversion_warnings && (complain & tf_warning))
477
- expr = convert_and_check (totype, expr);
478
+ if (issue_conversion_warnings)
479
+ expr = cp_convert_and_check (totype, expr, complain);
481
expr = convert (totype, expr);
484
===================================================================
485
--- a/src/gcc/cp/cvt.c (.../tags/gcc_4_8_1_release)
486
+++ b/src/gcc/cp/cvt.c (.../branches/gcc-4_8-branch)
489
if (TREE_TYPE (expr) == type)
492
+ if (TREE_CODE (expr) == SIZEOF_EXPR)
493
+ expr = maybe_constant_value (expr);
495
result = cp_convert (type, expr, complain);
497
Index: gcc/cp/cp-tree.h
498
===================================================================
499
--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_4_8_1_release)
500
+++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-4_8-branch)
501
@@ -5057,6 +5057,7 @@
502
extern bool user_provided_p (tree);
503
extern bool type_has_user_provided_constructor (tree);
504
extern bool type_has_user_provided_default_constructor (tree);
505
+extern bool vbase_has_user_provided_move_assign (tree);
506
extern tree default_init_uninitialized_part (tree);
507
extern bool trivial_default_constructor_is_constexpr (tree);
508
extern bool type_has_constexpr_default_constructor (tree);
509
Index: gcc/fortran/interface.c
510
===================================================================
511
--- a/src/gcc/fortran/interface.c (.../tags/gcc_4_8_1_release)
512
+++ b/src/gcc/fortran/interface.c (.../branches/gcc-4_8-branch)
513
@@ -1024,7 +1024,8 @@
514
bool type_must_agree, char *errmsg, int err_len)
516
/* Check type and rank. */
517
- if (type_must_agree && !compare_type_rank (s2, s1))
518
+ if (type_must_agree &&
519
+ (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1)))
521
snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'",
523
Index: gcc/fortran/ChangeLog
524
===================================================================
525
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_1_release)
526
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch)
528
+2013-05-31 Janus Weil <janus@gcc.gnu.org>
529
+ Tobias Burnus <burnus@net-b.de>
532
+ * interface.c (check_dummy_characteristics): Symmetrize type check.
534
2013-05-31 Release Manager
536
* GCC 4.8.1 released.
537
Index: gcc/config/i386/i386.c
538
===================================================================
539
--- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_8_1_release)
540
+++ b/src/gcc/config/i386/i386.c (.../branches/gcc-4_8-branch)
541
@@ -35444,6 +35444,46 @@
545
+/* Fix up a Windows system unwinder issue. If an EH region falls thru into
546
+ the epilogue, the Windows system unwinder will apply epilogue logic and
547
+ produce incorrect offsets. This can be avoided by adding a nop between
548
+ the last insn that can throw and the first insn of the epilogue. */
551
+ix86_seh_fixup_eh_fallthru (void)
556
+ FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
560
+ /* Find the beginning of the epilogue. */
561
+ for (insn = BB_END (e->src); insn != NULL; insn = PREV_INSN (insn))
562
+ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG)
567
+ /* We only care about preceeding insns that can throw. */
568
+ insn = prev_active_insn (insn);
569
+ if (insn == NULL || !can_throw_internal (insn))
572
+ /* Do not separate calls from their debug information. */
573
+ for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next))
575
+ && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION
576
+ || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION))
581
+ emit_insn_after (gen_nops (const1_rtx), insn);
585
/* Implement machine specific optimizations. We implement padding of returns
586
for K8 CPUs and pass to avoid 4 jumps in the single 16 byte window. */
588
@@ -35453,6 +35493,9 @@
589
with old MDEP_REORGS that are not CFG based. Recompute it now. */
590
compute_bb_for_insn ();
592
+ if (TARGET_SEH && current_function_has_exception_handlers ())
593
+ ix86_seh_fixup_eh_fallthru ();
595
if (optimize && optimize_function_for_speed_p (cfun))
597
if (TARGET_PAD_SHORT_FUNCTION)
598
Index: fixincludes/ChangeLog
599
===================================================================
600
--- a/src/fixincludes/ChangeLog (.../tags/gcc_4_8_1_release)
601
+++ b/src/fixincludes/ChangeLog (.../branches/gcc-4_8-branch)
603
+2013-05-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
605
+ Backport from mainline:
606
+ 2013-05-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
608
+ * inclhack.def (solaris_pow_int_overload): Update comment.
609
+ Change guard to match <cmath>.
610
+ * fixincl.x: Regenerate.
611
+ * tests/base/iso/math_iso.h [SOLARIS_POW_INT_OVERLOAD_CHECK]:
614
2013-05-31 Release Manager
616
* GCC 4.8.1 released.
617
Index: fixincludes/tests/base/iso/math_iso.h
618
===================================================================
619
--- a/src/fixincludes/tests/base/iso/math_iso.h (.../tags/gcc_4_8_1_release)
620
+++ b/src/fixincludes/tests/base/iso/math_iso.h (.../branches/gcc-4_8-branch)
624
#if defined( SOLARIS_POW_INT_OVERLOAD_CHECK )
625
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
626
+#if __cplusplus < 201103L
627
inline long double pow(long double __X, int __Y) { return
628
__powl(__X, (long double) (__Y)); }
630
Index: fixincludes/fixincl.x
631
===================================================================
632
--- a/src/fixincludes/fixincl.x (.../tags/gcc_4_8_1_release)
633
+++ b/src/fixincludes/fixincl.x (.../branches/gcc-4_8-branch)
636
* DO NOT EDIT THIS FILE (fixincl.x)
638
- * It has been AutoGen-ed Saturday December 29, 2012 at 09:17:09 AM BRST
639
+ * It has been AutoGen-ed Thursday May 16, 2013 at 03:34:25 PM MEST
640
* From the definitions inclhack.def
641
* and the template file fixincl
643
-/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Dec 29 09:17:10 BRST 2012
644
+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 16 15:34:25 MEST 2013
646
* You must regenerate it. Use the ./genfixes script.
648
@@ -6663,7 +6663,7 @@
650
static const char* apzSolaris_Pow_Int_OverloadPatch[] = {
652
- "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n\
653
+ "#if __cplusplus < 201103L\n\
657
Index: fixincludes/inclhack.def
658
===================================================================
659
--- a/src/fixincludes/inclhack.def (.../tags/gcc_4_8_1_release)
660
+++ b/src/fixincludes/inclhack.def (.../branches/gcc-4_8-branch)
661
@@ -3447,7 +3447,7 @@
665
- * The pow overloads with int were removed in C++ 2011.
666
+ * The pow overloads with int were removed in C++ 2011 DR 550.
669
hackname = solaris_pow_int_overload;
670
@@ -3456,7 +3456,7 @@
671
select = "^[ \t]*inline [a-z ]* pow\\([^()]*, int [^()]*\\)"
672
" *\\{[^{}]*\n[^{}]*\\}";
674
- c_fix_arg = "#ifndef __GXX_EXPERIMENTAL_CXX0X__\n%0\n#endif";
675
+ c_fix_arg = "#if __cplusplus < 201103L\n%0\n#endif";
678
" inline long double pow(long double __X, int __Y) { return\n"