diff options
author | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2014-05-14 17:14:46 +0000 |
---|---|---|
committer | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2014-05-14 17:14:46 +0000 |
commit | 3a1bc5ce89a470a55c24febbe05534fab7f74229 (patch) | |
tree | 22a728ff63d3103798fe7b3867f7cfdd61272c33 | |
parent | f5179fce33403e5a700d1ab7c247d8dcdb4a8974 (diff) | |
download | gcc-48-3a1bc5ce89a470a55c24febbe05534fab7f74229.tar.gz |
* Update to SVN 20140514 (r210436) from the gcc-4_8-branch.
* Remove patches applied upstream.
git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.8@7372 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | debian/patches/gcc-rs6000-update.diff | 70 | ||||
-rw-r--r-- | debian/patches/pr60609.diff | 289 | ||||
-rw-r--r-- | debian/patches/svn-updates.diff | 1203 | ||||
-rw-r--r-- | debian/rules.patch | 2 |
5 files changed, 1140 insertions, 434 deletions
diff --git a/debian/changelog b/debian/changelog index 0ce2733..5571efb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,10 @@ -gcc-4.8 (4.8.2-22) UNRELEASED; urgency=medium +gcc-4.8 (4.8.2-23) UNRELEASED; urgency=medium + + * Update to SVN 20140514 (r210436) from the gcc-4_8-branch. + + -- Matthias Klose <doko@debian.org> Wed, 14 May 2014 14:21:37 +0200 + +gcc-4.8 (4.8.2-22) unstable; urgency=medium * Update to SVN 20140508 (r210209) from the gcc-4_8-branch. * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 @@ -15,7 +21,7 @@ gcc-4.8 (4.8.2-22) UNRELEASED; urgency=medium (Helmit Grohne). Closes: #744782. * Apply the proposed patch for PR driver/61106. Closes: #747345. - -- Matthias Klose <doko@debian.org> Mon, 05 May 2014 20:29:25 +0200 + -- Matthias Klose <doko@debian.org> Thu, 08 May 2014 14:09:04 +0200 gcc-4.8 (4.8.2-21) unstable; urgency=medium diff --git a/debian/patches/gcc-rs6000-update.diff b/debian/patches/gcc-rs6000-update.diff deleted file mode 100644 index 1069b50..0000000 --- a/debian/patches/gcc-rs6000-update.diff +++ /dev/null @@ -1,70 +0,0 @@ -when trying to build Ada for powerpc64le-linux, I ran into an ICE -in fixup_args_size_notes. - -It turns out that the p8 fusion peephole acts on these two insns -from the epilog sequence: - -(insn 1693 1078 1079 91 (set (reg:DI 7 7) - (plus:DI (reg/f:DI 31 31) - (const_int 65536 [0x10000]))) 82 {*adddi3_internal1} - (nil)) -(insn 1079 1693 1511 91 (set (reg/f:DI 1 1) - (mem/c:DI (plus:DI (reg:DI 7 7) - (const_int -16096 [0xffffffffffffc120])) [233 %sfp+49440 S8 A64])) 519 {*movdi_internal64} - (expr_list:REG_DEAD (reg:DI 7 7) - (expr_list:REG_ARGS_SIZE (const_int 0 [0]) - (nil)))) - -and replaces them by: - -(insn 1776 1078 1777 91 (set (reg/f:DI 1 1) - (plus:DI (reg/f:DI 31 31) - (const_int 65536 [0x10000]))) -1 - (nil)) - -(insn 1777 1776 1511 91 (set (reg/f:DI 1 1) - (mem/c:DI (plus:DI (reg/f:DI 1 1) - (const_int -16096 [0xffffffffffffc120])) [233 S8 A8])) -1 - (expr_list:REG_ARGS_SIZE (const_int 0 [0]) - (nil))) - -Then peephole common code thinks it needs to re-create the REG_ARGS_SIZE -note and fails since the code is too complex for it to understand. (Which -is reasonable since it doesn't know what value is being restored from the -stack here.) - -However, the more fundamental problem seems to be that this transformation -should be invalid anyway, since it creates an intermediate state where -the stack pointer points to a location without proper backchain, which -violates the ABI. - -The following patch fixes this by disabling the fusion peephole in those -cases where it would introduce a new use of the stack pointer as temporary -register. - -Tested on powerpc64le-linux. OK for mainline (and 4.8 after the big patch -series is committed)? - -Bye, -Ulrich - -ChangeLog: - - * config/rs6000/rs6000.c (fusion_gpr_load_p): Refuse optimization - if it would clobber the stack pointer, even temporarily. - ---- a/src/gcc/config/rs6000/rs6000.c -+++ b/src/gcc/config/rs6000/rs6000.c -@@ -32519,6 +32519,11 @@ - - if (!peep2_reg_dead_p (2, addis_reg)) - return false; -+ -+ /* If the target register being loaded is the stack pointer, we must -+ avoid loading any other value into it, even temporarily. */ -+ if (REG_P (target) && REGNO (target) == STACK_POINTER_REGNUM) -+ return false; - } - - base_reg = XEXP (addr, 0); - diff --git a/debian/patches/pr60609.diff b/debian/patches/pr60609.diff deleted file mode 100644 index a0b204b..0000000 --- a/debian/patches/pr60609.diff +++ /dev/null @@ -1,289 +0,0 @@ -# DP: Fix PR target/60609, proposed patch - -2014-04-02 Charles Baylis <charles.baylis@linaro.org> - - PR target/60609 - * config/arm/arm.h (ASM_OUTPUT_CASE_END) Remove. - (LABEL_ALIGN_AFTER_BARRIER) Align barriers which occur after - ADDR_DIFF_VEC. - -2014-04-02 Charles Baylis <charles.baylis@linaro.org> - - PR target/60609 - * g++.dg/torture/pr60609.C: New test. - ---- a/src/gcc/config/arm/arm.h -+++ b/src/gcc/config/arm/arm.h -@@ -2194,14 +2194,9 @@ extern int making_const_table; - #undef ASM_OUTPUT_BEFORE_CASE_LABEL - #define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) /* Empty. */ - --/* Make sure subsequent insns are aligned after a TBB. */ --#define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE) \ -- do \ -- { \ -- if (GET_MODE (PATTERN (JUMPTABLE)) == QImode) \ -- ASM_OUTPUT_ALIGN (FILE, 1); \ -- } \ -- while (0) -+#define LABEL_ALIGN_AFTER_BARRIER(LABEL) \ -+ (GET_CODE (PATTERN (prev_active_insn (LABEL))) == ADDR_DIFF_VEC \ -+ ? 1 : 0) - - #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ - do \ ---- /dev/null -+++ b/src/gcc/testsuite/g++.dg/torture/pr60609.C -@@ -0,0 +1,252 @@ -+/* { dg-do assemble } */ -+ -+class exception -+{ -+}; -+class bad_alloc:exception -+{ -+}; -+class logic_error:exception -+{ -+}; -+class domain_error:logic_error -+{ -+}; -+class invalid_argument:logic_error -+{ -+}; -+class length_error:logic_error -+{ -+}; -+class overflow_error:exception -+{ -+}; -+typedef int mpz_t[]; -+template < class > class __gmp_expr; -+template <> class __gmp_expr < mpz_t > -+{ -+ ~__gmp_expr (); -+}; -+ -+class PIP_Solution_Node; -+class internal_exception -+{ -+ ~internal_exception (); -+}; -+class not_an_integer:internal_exception -+{ -+}; -+class not_a_variable:internal_exception -+{ -+}; -+class not_an_optimization_mode:internal_exception -+{ -+}; -+class not_a_bounded_integer_type_width:internal_exception -+{ -+}; -+class not_a_bounded_integer_type_representation:internal_exception -+{ -+}; -+class not_a_bounded_integer_type_overflow:internal_exception -+{ -+}; -+class not_a_complexity_class:internal_exception -+{ -+}; -+class not_a_control_parameter_name:internal_exception -+{ -+}; -+class not_a_control_parameter_value:internal_exception -+{ -+}; -+class not_a_pip_problem_control_parameter_name:internal_exception -+{ -+}; -+class not_a_pip_problem_control_parameter_value:internal_exception -+{ -+}; -+class not_a_relation:internal_exception -+{ -+}; -+class ppl_handle_mismatch:internal_exception -+{ -+}; -+class timeout_exception -+{ -+ ~timeout_exception (); -+}; -+class deterministic_timeout_exception:timeout_exception -+{ -+}; -+void __assert_fail (const char *, const char *, int, int *) -+__attribute__ ((__noreturn__)); -+void PL_get_pointer (void *); -+int Prolog_is_address (); -+inline int -+Prolog_get_address (void **p1) -+{ -+ Prolog_is_address ()? static_cast < -+ void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0); -+ PL_get_pointer (p1); -+ return 0; -+} -+ -+class non_linear:internal_exception -+{ -+}; -+class not_unsigned_integer:internal_exception -+{ -+}; -+class not_universe_or_empty:internal_exception -+{ -+}; -+class not_a_nil_terminated_list:internal_exception -+{ -+}; -+class PPL_integer_out_of_range -+{ -+ __gmp_expr < mpz_t > n; -+}; -+void handle_exception (); -+template < typename T > T * term_to_handle (int, const char *) -+{ -+ if (Prolog_is_address ()) -+ { -+ void *p; -+ Prolog_get_address (&p); -+ return static_cast < T * >(0); -+ } -+ throw; -+} -+ -+void -+ppl_new_MIP_Problem_from_MIP_Problem () -+try -+{ -+ term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2"); -+} -+ -+catch (exception &) -+{ -+} -+ -+int -+ppl_PIP_Tree_Node_parametric_values () -+{ -+ try -+ { -+ PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0); -+ (void)a; -+ return 1; -+ } -+ catch (internal_exception &) -+ { -+ } -+ catch (not_unsigned_integer &) -+ { -+ handle_exception (); -+ } -+ catch (non_linear &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_variable &) -+ { -+ handle_exception (); -+ } -+ catch (not_an_integer &) -+ { -+ handle_exception (); -+ } -+ catch (ppl_handle_mismatch &) -+ { -+ handle_exception (); -+ } -+ catch (not_an_optimization_mode &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_complexity_class &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_bounded_integer_type_width &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_bounded_integer_type_representation &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_bounded_integer_type_overflow &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_control_parameter_name &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_control_parameter_value &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_pip_problem_control_parameter_name &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_pip_problem_control_parameter_value &) -+ { -+ handle_exception (); -+ } -+ catch (not_universe_or_empty &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_relation &) -+ { -+ handle_exception (); -+ } -+ catch (not_a_nil_terminated_list &) -+ { -+ handle_exception (); -+ } -+ catch (PPL_integer_out_of_range &) -+ { -+ handle_exception (); -+ } -+ catch (int &) -+ { -+ } catch (timeout_exception &) -+ { -+ handle_exception (); -+ } catch (deterministic_timeout_exception &) -+ { -+ handle_exception (); -+ } catch (overflow_error &) -+ { -+ handle_exception (); -+ } catch (domain_error &) -+ { -+ handle_exception (); -+ } catch (length_error &) -+ { -+ handle_exception (); -+ } catch (invalid_argument &) -+ { -+ handle_exception (); -+ } catch (logic_error &) -+ { -+ handle_exception (); -+ } catch (bad_alloc &) -+ { -+ handle_exception (); -+ } catch (exception &) -+ { -+ handle_exception (); -+ } catch ( ...) -+ { -+ handle_exception (); -+ } -+ return 0; -+} diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff index f17eeb2..ad059e3 100644 --- a/debian/patches/svn-updates.diff +++ b/debian/patches/svn-updates.diff @@ -1,10 +1,10 @@ -# DP: updates from the 4.8 branch upto 20140508 (r210209). +# DP: updates from the 4.8 branch upto 20140514 (r210436). last_updated() { cat > ${dir}LAST_UPDATED <<EOF -Thu May 8 13:38:43 CEST 2014 -Thu May 8 11:38:43 UTC 2014 (revision 210209) +Wed May 14 18:55:18 CEST 2014 +Wed May 14 16:55:18 UTC 2014 (revision 210436) EOF } @@ -1042,6 +1042,19 @@ Index: libstdc++-v3/scripts/extract_symvers.in egrep -v ' (LOCAL|UND) ' |\ egrep -v ' (_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_PROCEDURE_LINKAGE_TABLE_|_edata|_end|_etext)$' |\ sed -e 's/ <processor specific>: / <processor_specific>:_/g' |\ +Index: libstdc++-v3/src/c++98/ios_init.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++98/ios_init.cc (.../tags/gcc_4_8_2_release) ++++ b/src/libstdc++-v3/src/c++98/ios_init.cc (.../branches/gcc-4_8-branch) +@@ -37,7 +37,7 @@ + { + using namespace __gnu_cxx; + +- // Extern declarations for global objects in src/globals.cc. ++ // Extern declarations for global objects in src/c++98/globals.cc. + extern stdio_sync_filebuf<char> buf_cout_sync; + extern stdio_sync_filebuf<char> buf_cin_sync; + extern stdio_sync_filebuf<char> buf_cerr_sync; Index: libstdc++-v3/src/c++11/thread.cc =================================================================== --- a/src/libstdc++-v3/src/c++11/thread.cc (.../tags/gcc_4_8_2_release) @@ -1055,6 +1068,19 @@ Index: libstdc++-v3/src/c++11/thread.cc # endif #elif defined(_GLIBCXX_HAVE_WIN32_SLEEP) unsigned long ms = __ns.count() / 1000000; +Index: libstdc++-v3/doc/xml/faq.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/faq.xml (.../tags/gcc_4_8_2_release) ++++ b/src/libstdc++-v3/doc/xml/faq.xml (.../branches/gcc-4_8-branch) +@@ -241,7 +241,7 @@ + </question> + <answer xml:id="a-license.what_restrictions"> + <para> +- None. We encourage such programs to be released as open source, ++ None. We encourage such programs to be released as free software, + but we won't punish you or sue you if you choose otherwise. + </para> + </answer> Index: libstdc++-v3/doc/xml/manual/abi.xml =================================================================== --- a/src/libstdc++-v3/doc/xml/manual/abi.xml (.../tags/gcc_4_8_2_release) @@ -1149,6 +1175,15 @@ Index: libstdc++-v3/doc/html/faq.html What is libstdc++? </a></dt><dt>1.2. <a href="faq.html#faq.why"> Why should I use libstdc++? +@@ -223,7 +223,7 @@ + </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what_restrictions"></a><a id="q-license.what_restrictions"></a><p><strong>2.4.</strong></p></td><td align="left" valign="top"><p> + I see. So, what restrictions are there on programs that use the library? + </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what_restrictions"></a></td><td align="left" valign="top"><p> +- None. We encourage such programs to be released as open source, ++ None. We encourage such programs to be released as free software, + but we won't punish you or sue you if you choose otherwise. + </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>3.1. <a href="faq.html#faq.how_to_install">How do I install libstdc++? + </a></dt><dt>3.2. <a href="faq.html#faq.how_to_get_sources">How does one get current libstdc++ sources? Index: libstdc++-v3/doc/html/index.html =================================================================== --- a/src/libstdc++-v3/doc/html/index.html (.../tags/gcc_4_8_2_release) @@ -3977,6 +4012,27 @@ Index: libstdc++-v3/include/debug/macros.h _M_message(__gnu_debug::__msg_unpartitioned_pred) \ ._M_iterator(_First, #_First) \ ._M_iterator(_Last, #_Last) \ +Index: libstdc++-v3/include/std/iostream +=================================================================== +--- a/src/libstdc++-v3/include/std/iostream (.../tags/gcc_4_8_2_release) ++++ b/src/libstdc++-v3/include/std/iostream (.../branches/gcc-4_8-branch) +@@ -48,13 +48,13 @@ + * + * The <iostream> header declares the eight <em>standard stream + * objects</em>. For other declarations, see +- * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html ++ * http://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html + * and the @link iosfwd I/O forward declarations @endlink + * + * They are required by default to cooperate with the global C + * library's @c FILE streams, and to be available during program +- * startup and termination. For more information, see the HOWTO +- * linked to above. ++ * startup and termination. For more information, see the section of the ++ * manual linked to above. + */ + //@{ + extern istream cin; /// Linked to standard input Index: libstdc++-v3/include/std/tuple =================================================================== --- a/src/libstdc++-v3/include/std/tuple (.../tags/gcc_4_8_2_release) @@ -4190,7 +4246,19 @@ Index: libstdc++-v3/ChangeLog =================================================================== --- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_8_2_release) +++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,188 @@ +@@ -1,3 +1,200 @@ ++2014-05-08 Joshua Gay <jgay@gnu.org> ++ ++ PR libstdc++/61117 ++ * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open ++ source" with "free software". ++ * doc/html/faq.html: Likewise. ++ ++2014-05-08 Jonathan Wakely <jwakely@redhat.com> ++ ++ * include/std/iostream: Fix URL in comment. ++ * src/c++98/ios_init.cc: Fix path in comment. ++ +2014-05-06 Jonathan Wakely <jwakely@redhat.com> + + Backport from mainline @@ -9155,7 +9223,7 @@ Index: gcc/DATESTAMP +++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch) @@ -1 +1 @@ -20131016 -+20140508 ++20140514 Index: gcc/value-prof.c =================================================================== --- a/src/gcc/value-prof.c (.../tags/gcc_4_8_2_release) @@ -9649,7 +9717,44 @@ Index: gcc/builtins.c static tree fold_builtin_strncat (location_t, tree, tree, tree); static tree fold_builtin_strspn (location_t, tree, tree); static tree fold_builtin_strcspn (location_t, tree, tree); -@@ -1958,6 +1957,7 @@ +@@ -906,9 +905,24 @@ + if (! HAVE_nonlocal_goto) + #endif + { ++ /* First adjust our frame pointer to its actual value. It was ++ previously set to the start of the virtual area corresponding to ++ the stacked variables when we branched here and now needs to be ++ adjusted to the actual hardware fp value. ++ ++ Assignments to virtual registers are converted by ++ instantiate_virtual_regs into the corresponding assignment ++ to the underlying register (fp in this case) that makes ++ the original assignment true. ++ So the following insn will actually be decrementing fp by ++ STARTING_FRAME_OFFSET. */ + emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); +- /* This might change the hard frame pointer in ways that aren't +- apparent to early optimization passes, so force a clobber. */ ++ ++ /* Restoring the frame pointer also modifies the hard frame pointer. ++ Mark it used (so that the previous assignment remains live once ++ the frame pointer is eliminated) and clobbered (to represent the ++ implicit update from the assignment). */ ++ emit_use (hard_frame_pointer_rtx); + emit_clobber (hard_frame_pointer_rtx); + } + +@@ -949,8 +963,7 @@ + + /* We must not allow the code we just generated to be reordered by + scheduling. Specifically, the update of the frame pointer must +- happen immediately, not later. Similarly, we must block +- (frame-related) register values to be used across this code. */ ++ happen immediately, not later. */ + emit_insn (gen_blockage ()); + } + +@@ -1958,6 +1971,7 @@ tree fndecl = get_callee_fndecl (exp); enum machine_mode mode; bool errno_set = false; @@ -9657,7 +9762,7 @@ Index: gcc/builtins.c tree arg; if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) -@@ -1969,6 +1969,7 @@ +@@ -1969,6 +1983,7 @@ { CASE_FLT_FN (BUILT_IN_SQRT): errno_set = ! tree_expr_nonnegative_p (arg); @@ -9665,7 +9770,7 @@ Index: gcc/builtins.c builtin_optab = sqrt_optab; break; CASE_FLT_FN (BUILT_IN_EXP): -@@ -2025,8 +2026,10 @@ +@@ -2025,8 +2040,10 @@ if (! flag_errno_math || ! HONOR_NANS (mode)) errno_set = false; @@ -9678,7 +9783,7 @@ Index: gcc/builtins.c && (!errno_set || !optimize_insn_for_size_p ())) { rtx result = gen_reg_rtx (mode); -@@ -5347,7 +5350,7 @@ +@@ -5347,7 +5364,7 @@ expand_builtin_atomic_compare_exchange (enum machine_mode mode, tree exp, rtx target) { @@ -9687,7 +9792,7 @@ Index: gcc/builtins.c enum memmodel success, failure; tree weak; bool is_weak; -@@ -5385,14 +5388,26 @@ +@@ -5385,14 +5402,26 @@ if (host_integerp (weak, 0) && tree_low_cst (weak, 0) != 0) is_weak = true; @@ -9719,7 +9824,7 @@ Index: gcc/builtins.c return target; } -@@ -5846,6 +5861,9 @@ +@@ -5846,6 +5875,9 @@ switch (fcode) { CASE_FLT_FN (BUILT_IN_FABS): @@ -9729,7 +9834,7 @@ Index: gcc/builtins.c target = expand_builtin_fabs (exp, target, subtarget); if (target) return target; -@@ -10298,6 +10316,9 @@ +@@ -10298,6 +10330,9 @@ return fold_builtin_strlen (loc, type, arg0); CASE_FLT_FN (BUILT_IN_FABS): @@ -9739,7 +9844,7 @@ Index: gcc/builtins.c return fold_builtin_fabs (loc, arg0, type); case BUILT_IN_ABS: -@@ -10766,7 +10787,7 @@ +@@ -10766,7 +10801,7 @@ return fold_builtin_strstr (loc, arg0, arg1, type); case BUILT_IN_STRCAT: @@ -9748,7 +9853,7 @@ Index: gcc/builtins.c case BUILT_IN_STRSPN: return fold_builtin_strspn (loc, arg0, arg1); -@@ -11809,8 +11830,9 @@ +@@ -11809,8 +11844,9 @@ COMPOUND_EXPR in the chain will contain the tree for the simplified form of the builtin function call. */ @@ -9760,7 +9865,7 @@ Index: gcc/builtins.c { if (!validate_arg (dst, POINTER_TYPE) || !validate_arg (src, POINTER_TYPE)) -@@ -11828,22 +11850,17 @@ +@@ -11828,22 +11864,17 @@ /* See if we can store by pieces into (dst + strlen(dst)). */ tree newdst, call; tree strlen_fn = builtin_decl_implicit (BUILT_IN_STRLEN); @@ -9791,7 +9896,7 @@ Index: gcc/builtins.c /* Stabilize the argument list. */ dst = builtin_save_expr (dst); -@@ -11855,7 +11872,11 @@ +@@ -11855,7 +11886,11 @@ newdst = fold_build_pointer_plus_loc (loc, dst, newdst); newdst = builtin_save_expr (newdst); @@ -10115,7 +10220,80 @@ Index: gcc/ChangeLog =================================================================== --- a/src/gcc/ChangeLog (.../tags/gcc_4_8_2_release) +++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,5367 @@ +@@ -1,3 +1,5440 @@ ++2014-05-14 Matthias Klose <doko@ubuntu.com> ++ ++ Revert: ++ 2014-05-08 Manuel López-Ibáñez <manu@gcc.gnu.org> ++ Matthias Klose <doko@ubuntu.com> ++ ++ PR driver/61106 ++ * optc-gen.awk: Fix option handling for -Wunused-parameter. ++ ++2014-05-13 Peter Bergner <bergner@vnet.ibm.com> ++ ++ * doc/sourcebuild.texi: (dfp_hw): Document. ++ (p8vector_hw): Likewise. ++ (powerpc_eabi_ok): Likewise. ++ (powerpc_elfv2): Likewise. ++ (powerpc_htm_ok): Likewise. ++ (ppc_recip_hw): Likewise. ++ (vsx_hw): Likewise. ++ ++2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> ++ ++ Backport from mainline ++ 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> ++ ++ PR target/60991 ++ * config/avr/avr.c (avr_out_store_psi): Use correct constant ++ to restore Y. ++ ++2014-05-09 Georg-Johann Lay <avr@gjlay.de> ++ ++ Backport from 2014-05-09 trunk r210267 ++ ++ PR target/61055 ++ * config/avr/avr.md (cc): Add new attribute set_vzn. ++ (addqi3, addqq3, adduqq3, subqi3, subqq3, subuqq3, negqi2) [cc]: ++ Set cc insn attribute to set_vzn instead of set_zn for alternatives ++ with INC, DEC or NEG. ++ * config/avr/avr.c (avr_notice_update_cc): Handle SET_VZN. ++ (avr_out_plus_1): ADIW sets cc0 to CC_SET_CZN. ++ INC, DEC and ADD+ADC set cc0 to CC_CLOBBER. ++ ++2014-05-09 Richard Sandiford <rdsandiford@googlemail.com> ++ ++ * builtins.c (expand_builtin_setjmp_receiver): Emit a use of ++ the hard frame pointer. Synchronize commentary with mainline. ++ * cse.c (cse_insn): Only check for volatile asms. ++ * cselib.c (cselib_process_insn): Likewise. ++ * dse.c (scan_insn): Likewise. ++ * stmt.c (expand_nl_goto_receiver): Emit a use and a clobber of ++ the hard frame pointer. ++ ++2014-05-08 Manuel López-Ibáñez <manu@gcc.gnu.org> ++ Matthias Klose <doko@ubuntu.com> ++ ++ PR driver/61106 ++ * optc-gen.awk: Fix option handling for -Wunused-parameter. ++ ++2014-05-08 Uros Bizjak <ubizjak@gmail.com> ++ ++ PR target/59952 ++ * config/i386/i386.c (ix86_option_override_internal): Remove PTA_RTM ++ from core-avx2. ++ ++2014-05-08 Charles Baylis <charles.baylis@linaro.org> ++ ++ Backport from mainline ++ 2014-04-07 Charles Baylis <charles.baylis@linaro.org> ++ ++ PR target/60609 ++ * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove. ++ (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after ++ ADDR_DIFF_VEC. ++ +2014-05-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + * config.gcc (aarch64*-*-*): Use ISA flags from aarch64-arches.def. @@ -11319,19 +11497,19 @@ Index: gcc/ChangeLog + (altivec_expand_stvex_be): New function. + + Backport from mainline -+ 2014-02-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com> ++ 2014-02-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + * config/rs6000/rs6000.c (rs6000_emit_le_vsx_move): Relax assert + to permit subregs. + + Backport from mainline -+ 2014-02-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com> ++ 2014-02-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + * config/rs6000/vector.md (*vector_unordered<mode>): Change split + to use canonical form for nor<mode>3. + +2014-04-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + Backport from mainline -+ 2014-02-04 Michael Meissner <meissner@linux.vnet.ibm.com> ++ 2014-02-04 Michael Meissner <meissner@linux.vnet.ibm.com> + + * config/rs6000/rs6000.opt (-mlra): Add switch to enable the LRA + register allocator. @@ -13709,9 +13887,9 @@ Index: gcc/ChangeLog + +2014-03-26 Martin Jambor <mjambor@suse.cz> + -+ PR ipa/60419 -+ * ipa.c (symtab_remove_unreachable_nodes): Clear thunk and -+ alias flags of nodes in the border. ++ PR ipa/60419 ++ * ipa.c (symtab_remove_unreachable_nodes): Clear thunk and ++ alias flags of nodes in the border. + +2014-03-26 Eric Botcazou <ebotcazou@adacore.com> + @@ -13920,13 +14098,13 @@ Index: gcc/ChangeLog + Backport from mainline + 2014-02-21 Richard Biener <rguenther@suse.de> + -+ PR tree-optimization/60276 -+ * tree-vectorizer.h (struct _stmt_vec_info): Add min_neg_dist field. -+ (STMT_VINFO_MIN_NEG_DIST): New macro. -+ * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Record -+ STMT_VINFO_MIN_NEG_DIST. -+ * tree-vect-stmts.c (vectorizable_load): Verify if assumptions -+ made for negative dependence distances still hold. ++ PR tree-optimization/60276 ++ * tree-vectorizer.h (struct _stmt_vec_info): Add min_neg_dist field. ++ (STMT_VINFO_MIN_NEG_DIST): New macro. ++ * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Record ++ STMT_VINFO_MIN_NEG_DIST. ++ * tree-vect-stmts.c (vectorizable_load): Verify if assumptions ++ made for negative dependence distances still hold. + +2014-02-25 Richard Biener <rguenther@suse.de> + @@ -15483,7 +15661,7 @@ Index: gcc/ChangeLog 2013-10-16 Release Manager * GCC 4.8.2 released. -@@ -639,7 +6008,7 @@ +@@ -639,7 +6081,7 @@ 2013-07-31 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> Backport from mainline @@ -20202,7 +20380,7 @@ Index: gcc/testsuite/gcc.target/powerpc/pack03.c +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */ -+/* { dg-require-effective-target dfprt } */ ++/* { dg-require-effective-target dfp_hw } */ +/* { dg-options "-O2 -mhard-dfp" } */ + +#include <stddef.h> @@ -21650,6 +21828,125 @@ Index: gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c int64x1_t test_vshrd_n_s64 (int64x1_t a) { +Index: gcc/testsuite/gcc.target/avr/torture/pr61055.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/avr/torture/pr61055.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr61055.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,88 @@ ++/* { dg-do run } */ ++/* { dg-options { -fno-peephole2 } } */ ++ ++#include <stdlib.h> ++ ++typedef __UINT16_TYPE__ uint16_t; ++typedef __INT16_TYPE__ int16_t; ++typedef __UINT8_TYPE__ uint8_t; ++ ++uint8_t __attribute__((noinline,noclone)) ++fun_inc (uint8_t c0) ++{ ++ register uint8_t c asm ("r15") = c0; ++ ++ /* Force target value into R15 (lower register) */ ++ asm ("" : "+l" (c)); ++ ++ c++; ++ if (c >= 0x80) ++ c = 0; ++ ++ asm ("" : "+l" (c)); ++ ++ return c; ++} ++ ++uint8_t __attribute__((noinline,noclone)) ++fun_dec (uint8_t c0) ++{ ++ register uint8_t c asm ("r15") = c0; ++ ++ /* Force target value into R15 (lower register) */ ++ asm ("" : "+l" (c)); ++ ++ c--; ++ if (c < 0x80) ++ c = 0; ++ ++ asm ("" : "+l" (c)); ++ ++ return c; ++} ++ ++ ++uint8_t __attribute__((noinline,noclone)) ++fun_neg (uint8_t c0) ++{ ++ register uint8_t c asm ("r15") = c0; ++ ++ c = -c; ++ if (c >= 0x80) ++ c = 0; ++ ++ return c; ++} ++ ++uint16_t __attribute__((noinline,noclone)) ++fun_adiw (uint16_t c0) ++{ ++ register uint16_t c asm ("r24") = c0; ++ ++ /* Force target value into R24 (for ADIW) */ ++ asm ("" : "+r" (c)); ++ ++ c += 2; ++ if (c >= 0x8000) ++ c = 0; ++ ++ asm ("" : "+r" (c)); ++ ++ return c; ++} ++ ++ ++int main() ++{ ++ if (fun_inc (0x7f) != 0) ++ abort(); ++ ++ if (fun_neg (0x80) != 0) ++ abort(); ++ ++ if (fun_adiw (0x7ffe) != 0) ++ abort(); ++ ++ exit (0); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/avr/pr60991.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/avr/pr60991.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.target/avr/pr60991.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++/* This testcase (simplified from the original bug report) exposes ++ PR60991. The code generated for writing the __int24 value corrupts ++ the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */ ++ ++#include <stdlib.h> ++ ++int main(void) ++{ ++ volatile char junk[62]; ++ junk[0] = 5; ++ volatile __int24 staticConfig = 0; ++ ++ if (junk[0] != 5) ++ abort(); ++ ++ exit(0); ++ return 0; ++} Index: gcc/testsuite/gcc.target/i386/pr59405.c =================================================================== --- a/src/gcc/testsuite/gcc.target/i386/pr59405.c (.../tags/gcc_4_8_2_release) @@ -25863,7 +26160,40 @@ Index: gcc/testsuite/lib/target-supports.exp # Return 1 if the target supports executing VSX instructions, 0 # otherwise. Cache the result. -@@ -2672,6 +2698,33 @@ +@@ -1858,6 +1884,32 @@ + }] + } + ++# Return 1 if the target supports executing DFP hardware instructions, ++# 0 otherwise. Cache the result. ++ ++proc check_dfp_hw_available { } { ++ return [check_cached_effective_target dfp_hw_available { ++ # For now, disable on Darwin ++ if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] || [istarget *-*-darwin*]} { ++ expr 0 ++ } else { ++ check_runtime_nocache dfp_hw_available { ++ volatile _Decimal64 r; ++ volatile _Decimal64 a = 4.0DD; ++ volatile _Decimal64 b = 2.0DD; ++ int main() ++ { ++ asm volatile ("dadd %0,%1,%2" : "=d" (r) : "d" (a), "d" (b)); ++ asm volatile ("dsub %0,%1,%2" : "=d" (r) : "d" (a), "d" (b)); ++ asm volatile ("dmul %0,%1,%2" : "=d" (r) : "d" (a), "d" (b)); ++ asm volatile ("ddiv %0,%1,%2" : "=d" (r) : "d" (a), "d" (b)); ++ return 0; ++ } ++ } "-mcpu=power6 -mhard-float" ++ } ++ }] ++} ++ + # Return 1 if the target supports compiling and assembling UCN, 0 otherwise. + + proc check_effective_target_ucn_nocache { } { +@@ -2672,6 +2724,33 @@ } } @@ -25897,7 +26227,7 @@ Index: gcc/testsuite/lib/target-supports.exp # Return 1 if this is a PowerPC target supporting -mvsx proc check_effective_target_powerpc_vsx_ok { } { -@@ -2699,6 +2752,27 @@ +@@ -2699,6 +2778,27 @@ } } @@ -25925,7 +26255,7 @@ Index: gcc/testsuite/lib/target-supports.exp # Return 1 if this is a PowerPC target supporting -mcpu=cell. proc check_effective_target_powerpc_ppu_ok { } { -@@ -2794,6 +2868,22 @@ +@@ -2794,6 +2894,22 @@ } } @@ -25948,23 +26278,27 @@ Index: gcc/testsuite/lib/target-supports.exp # Return 1 if this is a SPU target with a toolchain that # supports automatic overlay generation. -@@ -4499,6 +4589,7 @@ +@@ -4499,7 +4615,9 @@ switch $arg { "vmx_hw" { set selected [check_vmx_hw_available] } "vsx_hw" { set selected [check_vsx_hw_available] } + "p8vector_hw" { set selected [check_p8vector_hw_available] } "ppc_recip_hw" { set selected [check_ppc_recip_hw_available] } ++ "dfp_hw" { set selected [check_dfp_hw_available] } "named_sections" { set selected [check_named_sections_available] } "gc_sections" { set selected [check_gc_sections_available] } -@@ -4520,6 +4611,7 @@ + "cxa_atexit" { set selected [check_cxa_atexit_available] } +@@ -4520,7 +4638,9 @@ switch $arg { "vmx_hw" { return 1 } "vsx_hw" { return 1 } + "p8vector_hw" { return 1 } "ppc_recip_hw" { return 1 } ++ "dfp_hw" { return 1 } "named_sections" { return 1 } "gc_sections" { return 1 } -@@ -5077,7 +5169,9 @@ + "cxa_atexit" { return 1 } +@@ -5077,7 +5197,9 @@ } lappend DEFAULT_VECTCFLAGS "-maltivec" @@ -32599,6 +32933,15 @@ Index: gcc/testsuite/gcc.dg/torture/pr59330.c + free(p); + return 0; +} +Index: gcc/testsuite/gcc.dg/unused-8b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/unused-8b.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.dg/unused-8b.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,4 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Wall -Wno-unused -Wextra" } */ ++ ++void foo(int x) { } Index: gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c (.../tags/gcc_4_8_2_release) @@ -32967,7 +33310,41 @@ Index: gcc/testsuite/ChangeLog =================================================================== --- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_2_release) +++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,1827 @@ +@@ -1,3 +1,1861 @@ ++2014-05-14 Matthias Klose <doko@ubuntu.com> ++ ++ PR driver/61106 ++ * gcc-dg/unused-8a.c: Remove. ++ ++2014-05-13 Peter Bergner <bergner@vnet.ibm.com> ++ ++ * lib/target-support.exp (check_dfp_hw_available): New function. ++ (is-effective-target): Check $arg for dfp_hw. ++ (is-effective-target-keyword): Likewise. ++ * gcc.target/powerpc/pack03.c: (dg-require-effective-target): ++ Change target to dfp_hw. ++ ++2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> ++ ++ Backport from mainline ++ 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> ++ ++ PR target/60991 ++ * gcc.target/avr/pr60991.c: New testcase. ++ ++2014-05-09 Georg-Johann Lay <avr@gjlay.de> ++ ++ Backport from 2014-05-09 trunk r210267 ++ ++ PR target/61055 ++ * gcc.target/avr/torture/pr61055.c: New test. ++ ++2014-05-08 Matthias Klose <doko@ubuntu.com> ++ ++ PR driver/61106 ++ * gcc-dg/unused-8a.c: New. ++ * gcc-dg/unused-8b.c: Likewise. ++ +2014-05-07 Richard Biener <rguenther@suse.de> + + PR tree-optimization/57864 @@ -33133,7 +33510,7 @@ Index: gcc/testsuite/ChangeLog + + Backport from mainline + PR libfortran/60810 -+ gfortran.dg/arrayio_13.f90: New test. ++ * gfortran.dg/arrayio_13.f90: New test. + +2014-04-11 Hans-Peter Nilsson <hp@axis.com> + @@ -33208,9 +33585,9 @@ Index: gcc/testsuite/ChangeLog +2014-04-07 Martin Jambor <mjambor@suse.cz> + + PR ipa/60640 -+ * g++.dg/ipa/pr60640-1.C: New test. -+ * g++.dg/ipa/pr60640-2.C: Likewise. -+ * g++.dg/ipa/pr60640-3.C: Likewise. ++ * g++.dg/ipa/pr60640-1.C: New test. ++ * g++.dg/ipa/pr60640-2.C: Likewise. ++ * g++.dg/ipa/pr60640-3.C: Likewise. + +2014-04-06 Dominique d'Humieres <dominiq@lps.ens.fr> + Iain Sandoe <iain@codesourcery.com> @@ -33543,8 +33920,8 @@ Index: gcc/testsuite/ChangeLog + + Power8 HTM Support + Backport from mainline -+ * lib/target-supports.exp (check_effective_target_powerpc_htm_ok): New -+ function to test if HTM is available. ++ * lib/target-supports.exp (check_effective_target_powerpc_htm_ok): New ++ function to test if HTM is available. + * gcc.target/powerpc/htm-xl-intrin-1.c: New test. + * gcc.target/powerpc/htm-builtin-1.c: New test. + @@ -33752,8 +34129,8 @@ Index: gcc/testsuite/ChangeLog + +2014-03-26 Martin Jambor <mjambor@suse.cz> + -+ PR ipa/60419 -+ * g++.dg/ipa/pr60419.C: New test. ++ PR ipa/60419 ++ * g++.dg/ipa/pr60419.C: New test. + +2014-03-26 Eric Botcazou <ebotcazou@adacore.com> + @@ -34795,7 +35172,7 @@ Index: gcc/testsuite/ChangeLog 2013-10-16 Release Manager * GCC 4.8.2 released. -@@ -39,9 +1863,9 @@ +@@ -39,9 +1897,9 @@ Backport from mainline 2013-06-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> @@ -34808,7 +35185,7 @@ Index: gcc/testsuite/ChangeLog 2013-10-04 Tobias Burnus <burnus@net-b.de> -@@ -307,8 +2131,8 @@ +@@ -307,8 +2165,8 @@ Backport from mainline 2013-08-12 Perez Read <netfirewall@gmail.com> @@ -34819,7 +35196,7 @@ Index: gcc/testsuite/ChangeLog 2013-08-11 Janus Weil <janus@gcc.gnu.org> -@@ -494,7 +2318,7 @@ +@@ -494,7 +2352,7 @@ 2013-06-19 Wei Mi <wmi@google.com> PR rtl-optimization/57518 @@ -34828,7 +35205,7 @@ Index: gcc/testsuite/ChangeLog 2013-06-11 Tobias Burnus <burnus@net-b.de> -@@ -623,8 +2447,8 @@ +@@ -623,8 +2481,8 @@ 2013-05-09 Martin Jambor <mjambor@suse.cz> @@ -34839,7 +35216,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-08 Marc Glisse <marc.glisse@inria.fr> -@@ -701,7 +2525,7 @@ +@@ -701,7 +2559,7 @@ 2013-04-25 Marek Polacek <polacek@redhat.com> PR tree-optimization/57066 @@ -34848,7 +35225,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Jakub Jelinek <jakub@redhat.com> -@@ -727,8 +2551,8 @@ +@@ -727,8 +2585,8 @@ Backport from mainline 2013-04-24 Vladimir Makarov <vmakarov@redhat.com> @@ -34859,7 +35236,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov <vmakarov@redhat.com> -@@ -735,8 +2559,8 @@ +@@ -735,8 +2593,8 @@ Backport from mainline 2013-04-22 Vladimir Makarov <vmakarov@redhat.com> @@ -34870,7 +35247,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov <vmakarov@redhat.com> -@@ -743,8 +2567,8 @@ +@@ -743,8 +2601,8 @@ Backport from mainline 2013-04-18 Jakub Jelinek <jakub@redhat.com> @@ -34881,7 +35258,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov <vmakarov@redhat.com> -@@ -751,8 +2575,8 @@ +@@ -751,8 +2609,8 @@ Backport from mainline 2013-04-19 Vladimir Makarov <vmakarov@redhat.com> @@ -34892,7 +35269,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Ian Bolton <ian.bolton@arm.com> -@@ -1102,7 +2926,7 @@ +@@ -1102,7 +2960,7 @@ 2013-03-29 Tobias Burnus <burnus@net-b.de> PR fortran/56737 @@ -34901,7 +35278,7 @@ Index: gcc/testsuite/ChangeLog 2013-04-02 Richard Biener <rguenther@suse.de> -@@ -1636,7 +3460,7 @@ +@@ -1636,7 +3494,7 @@ 2013-02-20 Jan Hubicka <jh@suse.cz> PR tree-optimization/56265 @@ -34910,7 +35287,7 @@ Index: gcc/testsuite/ChangeLog 2013-02-20 Richard Biener <rguenther@suse.de> -@@ -1823,11 +3647,9 @@ +@@ -1823,11 +3681,9 @@ Avoid instrumenting duplicated memory access in the same basic block * c-c++-common/asan/no-redundant-instrumentation-1.c: New test. @@ -35447,6 +35824,16 @@ Index: gcc/testsuite/g++.dg/tree-prof/pr59255.C + s.fn = foo; + } +} +Index: gcc/testsuite/g++.dg/expr/cast2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/expr/cast2.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/expr/cast2.C (.../branches/gcc-4_8-branch) +@@ -1,3 +1,5 @@ ++// { dg-options "-pedantic" } ++ + void (*p)(); + + void f() { Index: gcc/testsuite/g++.dg/gomp/for-20.C =================================================================== --- a/src/gcc/testsuite/g++.dg/gomp/for-20.C (.../tags/gcc_4_8_2_release) @@ -35532,6 +35919,18 @@ Index: gcc/testsuite/g++.dg/diagnostic/pr58979.C +// { dg-do compile } + +int i = 0->*0; // { dg-error "invalid type argument of" } +Index: gcc/testsuite/g++.dg/conversion/dr195.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/conversion/dr195.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/conversion/dr195.C (.../branches/gcc-4_8-branch) +@@ -6,6 +6,7 @@ + // it (yet). + + // This checks we warn when being pedantic. ++// { dg-options "-pedantic" } + + typedef void (*PF)(void); + typedef void *PV; Index: gcc/testsuite/g++.dg/conversion/simd1.C =================================================================== --- a/src/gcc/testsuite/g++.dg/conversion/simd1.C (.../tags/gcc_4_8_2_release) @@ -35917,6 +36316,36 @@ Index: gcc/testsuite/g++.dg/cpp0x/alias-decl-41.C +template <template <class, class> class C, class A = F<D<int>>> +void doSomething(C<D<char>, A> &); +A::A(D<char> const &) : A() { doSomething(m_elements); } +Index: gcc/testsuite/g++.dg/cpp0x/initlist81.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist81.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist81.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,25 @@ ++// PR c++/60713 ++// { dg-options "-O" } ++// { dg-do compile { target c++11 } } ++ ++template < class x0, class x1, class x2, class x3, class x4 > ++int *x5 (x0 *, x2 (x1::*)(x3, x4)); ++ ++class x6 ++{ ++ void x7 (); ++ struct x8 ++ { ++ int *x9; ++ }; ++ void x10 (x8); ++ void x11 (int *, int *); ++}; ++ ++void ++x6::x7 () ++{ ++ x10 ({ ++ x5 (this, &x6::x11) ++ }); ++} Index: gcc/testsuite/g++.dg/cpp0x/nsdmi-union3.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi-union3.C (.../tags/gcc_4_8_2_release) @@ -36096,6 +36525,20 @@ Index: gcc/testsuite/g++.dg/cpp0x/variadic148.C +template<typename T> struct X {}; +template<template<typename...> class D, typename ...U> int test(D<U...>*); +int n = test<X, int>(0); // { dg-error "no match" } +Index: gcc/testsuite/g++.dg/cpp0x/auto42.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/auto42.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/auto42.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,9 @@ ++// PR c++/60628 ++// { dg-do compile { target c++11 } } ++ ++#include <initializer_list> ++ ++void foo(int i) ++{ ++ auto x[1] = { 0 }; // { dg-error "array of .auto" } ++} Index: gcc/testsuite/g++.dg/cpp0x/nsdmi9.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp0x/nsdmi9.C (.../tags/gcc_4_8_2_release) @@ -36144,6 +36587,31 @@ Index: gcc/testsuite/g++.dg/cpp0x/variadic150.C +{ + foo<0>; // { dg-error "" } +} +Index: gcc/testsuite/g++.dg/cpp0x/initlist82.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist82.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist82.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,20 @@ ++// PR c++/60708 ++// { dg-do compile { target c++11 } } ++ ++template <class T, class U> struct mypair { ++ mypair(T, U) {} ++}; ++ ++template<typename T> struct S { ++ mypair<T *, int> get_pair() noexcept { ++ return mypair<T*,int>(nullptr, 0); ++ } ++}; ++ ++static void foo(const mypair<char *, int> (&a)[2]) noexcept { } ++ ++int main() ++{ ++ S<char> s; ++ foo({s.get_pair(), s.get_pair()}); ++} Index: gcc/testsuite/g++.dg/cpp0x/static_assert9.C =================================================================== --- a/src/gcc/testsuite/g++.dg/cpp0x/static_assert9.C (.../tags/gcc_4_8_2_release) @@ -36342,6 +36810,263 @@ Index: gcc/testsuite/g++.dg/torture/pr38565.C #define vector __attribute__((vector_size(16) )) vector unsigned int f(int a) { +Index: gcc/testsuite/g++.dg/torture/pr60609.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr60609.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr60609.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,252 @@ ++/* { dg-do assemble } */ ++ ++class exception ++{ ++}; ++class bad_alloc:exception ++{ ++}; ++class logic_error:exception ++{ ++}; ++class domain_error:logic_error ++{ ++}; ++class invalid_argument:logic_error ++{ ++}; ++class length_error:logic_error ++{ ++}; ++class overflow_error:exception ++{ ++}; ++typedef int mpz_t[]; ++template < class > class __gmp_expr; ++template <> class __gmp_expr < mpz_t > ++{ ++ ~__gmp_expr (); ++}; ++ ++class PIP_Solution_Node; ++class internal_exception ++{ ++ ~internal_exception (); ++}; ++class not_an_integer:internal_exception ++{ ++}; ++class not_a_variable:internal_exception ++{ ++}; ++class not_an_optimization_mode:internal_exception ++{ ++}; ++class not_a_bounded_integer_type_width:internal_exception ++{ ++}; ++class not_a_bounded_integer_type_representation:internal_exception ++{ ++}; ++class not_a_bounded_integer_type_overflow:internal_exception ++{ ++}; ++class not_a_complexity_class:internal_exception ++{ ++}; ++class not_a_control_parameter_name:internal_exception ++{ ++}; ++class not_a_control_parameter_value:internal_exception ++{ ++}; ++class not_a_pip_problem_control_parameter_name:internal_exception ++{ ++}; ++class not_a_pip_problem_control_parameter_value:internal_exception ++{ ++}; ++class not_a_relation:internal_exception ++{ ++}; ++class ppl_handle_mismatch:internal_exception ++{ ++}; ++class timeout_exception ++{ ++ ~timeout_exception (); ++}; ++class deterministic_timeout_exception:timeout_exception ++{ ++}; ++void __assert_fail (const char *, const char *, int, int *) ++__attribute__ ((__noreturn__)); ++void PL_get_pointer (void *); ++int Prolog_is_address (); ++inline int ++Prolog_get_address (void **p1) ++{ ++ Prolog_is_address ()? static_cast < ++ void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0); ++ PL_get_pointer (p1); ++ return 0; ++} ++ ++class non_linear:internal_exception ++{ ++}; ++class not_unsigned_integer:internal_exception ++{ ++}; ++class not_universe_or_empty:internal_exception ++{ ++}; ++class not_a_nil_terminated_list:internal_exception ++{ ++}; ++class PPL_integer_out_of_range ++{ ++ __gmp_expr < mpz_t > n; ++}; ++void handle_exception (); ++template < typename T > T * term_to_handle (int, const char *) ++{ ++ if (Prolog_is_address ()) ++ { ++ void *p; ++ Prolog_get_address (&p); ++ return static_cast < T * >(0); ++ } ++ throw; ++} ++ ++void ++ppl_new_MIP_Problem_from_MIP_Problem () ++try ++{ ++ term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2"); ++} ++ ++catch (exception &) ++{ ++} ++ ++int ++ppl_PIP_Tree_Node_parametric_values () ++{ ++ try ++ { ++ PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0); ++ (void)a; ++ return 1; ++ } ++ catch (internal_exception &) ++ { ++ } ++ catch (not_unsigned_integer &) ++ { ++ handle_exception (); ++ } ++ catch (non_linear &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_variable &) ++ { ++ handle_exception (); ++ } ++ catch (not_an_integer &) ++ { ++ handle_exception (); ++ } ++ catch (ppl_handle_mismatch &) ++ { ++ handle_exception (); ++ } ++ catch (not_an_optimization_mode &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_complexity_class &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_bounded_integer_type_width &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_bounded_integer_type_representation &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_bounded_integer_type_overflow &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_control_parameter_name &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_control_parameter_value &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_pip_problem_control_parameter_name &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_pip_problem_control_parameter_value &) ++ { ++ handle_exception (); ++ } ++ catch (not_universe_or_empty &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_relation &) ++ { ++ handle_exception (); ++ } ++ catch (not_a_nil_terminated_list &) ++ { ++ handle_exception (); ++ } ++ catch (PPL_integer_out_of_range &) ++ { ++ handle_exception (); ++ } ++ catch (int &) ++ { ++ } catch (timeout_exception &) ++ { ++ handle_exception (); ++ } catch (deterministic_timeout_exception &) ++ { ++ handle_exception (); ++ } catch (overflow_error &) ++ { ++ handle_exception (); ++ } catch (domain_error &) ++ { ++ handle_exception (); ++ } catch (length_error &) ++ { ++ handle_exception (); ++ } catch (invalid_argument &) ++ { ++ handle_exception (); ++ } catch (logic_error &) ++ { ++ handle_exception (); ++ } catch (bad_alloc &) ++ { ++ handle_exception (); ++ } catch (exception &) ++ { ++ handle_exception (); ++ } catch ( ...) ++ { ++ handle_exception (); ++ } ++ return 0; ++} Index: gcc/testsuite/g++.dg/torture/pr57499.C =================================================================== --- a/src/gcc/testsuite/g++.dg/torture/pr57499.C (.../tags/gcc_4_8_2_release) @@ -36705,6 +37430,33 @@ Index: gcc/testsuite/g++.dg/ipa/pr60419.C +{ + h->l->bar (); +} +Index: gcc/testsuite/g++.dg/overload/defarg8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/overload/defarg8.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/overload/defarg8.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,22 @@ ++// PR c++/60367 ++// { dg-do run { target c++11 } } ++ ++extern "C" int printf (const char *, ...); ++extern "C" void abort(); ++ ++void *p; ++struct foo { ++ foo() { p = this; } ++ foo (const foo &) { abort(); } ++ ~foo() { if (p != this) abort(); } ++}; ++ ++void do_something( foo f = {} ) ++{ ++ if (&f != p) abort(); ++} ++ ++int main() ++{ ++ do_something(); ++} Index: gcc/testsuite/g++.dg/template/ref7.C =================================================================== --- a/src/gcc/testsuite/g++.dg/template/ref7.C (.../tags/gcc_4_8_2_release) @@ -37552,7 +38304,22 @@ Index: gcc/cp/decl.c if (!TREE_CONSTANT (size)) size = osize; } -@@ -11891,7 +11893,10 @@ +@@ -8473,6 +8475,14 @@ + return error_mark_node; + } + ++ /* 8.3.4p1: ...if the type of the identifier of D contains the auto ++ type-specifier, the program is ill-formed. */ ++ if (type_uses_auto (type)) ++ { ++ error ("%qD declared as array of %qT", name, type); ++ return error_mark_node; ++ } ++ + /* Figure out the index type for the array. */ + if (size) + itype = compute_array_index_type (name, size, tf_warning_or_error); +@@ -11891,7 +11901,10 @@ if (decl && (DECL_CLASS_TEMPLATE_P (decl) @@ -37582,7 +38349,24 @@ Index: gcc/cp/ChangeLog =================================================================== --- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_2_release) +++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,251 @@ +@@ -1,3 +1,268 @@ ++2014-05-13 Jason Merrill <jason@redhat.com> ++ ++ PR c++/60708 ++ * call.c (build_array_conv): Call complete_type. ++ ++ PR c++/60713 ++ * typeck2.c (PICFLAG_SIDE_EFFECTS): New. ++ (picflag_from_initializer): Return it. ++ (process_init_constructor): Handle it. ++ ++ PR c++/60628 ++ * decl.c (create_array_type_for_decl): Complain about array of auto. ++ ++ PR c++/60367 ++ * call.c (convert_default_arg): Remove special handling for ++ CONSTRUCTOR. ++ +2014-04-28 Daniel Gutson <daniel.gutson@tallertechnologies.com> + + * typeck.c (build_reinterpret_cast_1): Pass proper argument to @@ -37834,6 +38618,46 @@ Index: gcc/cp/ChangeLog 2013-10-16 Release Manager * GCC 4.8.2 released. +Index: gcc/cp/typeck2.c +=================================================================== +--- a/src/gcc/cp/typeck2.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/cp/typeck2.c (.../branches/gcc-4_8-branch) +@@ -1015,6 +1015,7 @@ + #define PICFLAG_ERRONEOUS 1 + #define PICFLAG_NOT_ALL_CONSTANT 2 + #define PICFLAG_NOT_ALL_SIMPLE 4 ++#define PICFLAG_SIDE_EFFECTS 8 + + /* Given an initializer INIT, return the flag (PICFLAG_*) which better + describe it. */ +@@ -1025,7 +1026,12 @@ + if (init == error_mark_node) + return PICFLAG_ERRONEOUS; + else if (!TREE_CONSTANT (init)) +- return PICFLAG_NOT_ALL_CONSTANT; ++ { ++ if (TREE_SIDE_EFFECTS (init)) ++ return PICFLAG_SIDE_EFFECTS; ++ else ++ return PICFLAG_NOT_ALL_CONSTANT; ++ } + else if (!initializer_constant_valid_p (init, TREE_TYPE (init))) + return PICFLAG_NOT_ALL_SIMPLE; + return 0; +@@ -1392,7 +1398,12 @@ + TREE_TYPE (init) = type; + if (TREE_CODE (type) == ARRAY_TYPE && TYPE_DOMAIN (type) == NULL_TREE) + cp_complete_array_type (&TREE_TYPE (init), init, /*do_default=*/0); +- if (flags & PICFLAG_NOT_ALL_CONSTANT) ++ if (flags & PICFLAG_SIDE_EFFECTS) ++ { ++ TREE_CONSTANT (init) = false; ++ TREE_SIDE_EFFECTS (init) = true; ++ } ++ else if (flags & PICFLAG_NOT_ALL_CONSTANT) + /* Make sure TREE_CONSTANT isn't set from build_constructor. */ + TREE_CONSTANT (init) = false; + else Index: gcc/cp/pt.c =================================================================== --- a/src/gcc/cp/pt.c (.../tags/gcc_4_8_2_release) @@ -38462,7 +39286,17 @@ Index: gcc/cp/call.c else { if (empty_ctor == NULL_TREE) -@@ -5806,9 +5809,11 @@ +@@ -940,6 +943,9 @@ + bool user = false; + enum conversion_rank rank = cr_exact; + ++ /* We might need to propagate the size from the element to the array. */ ++ complete_type (type); ++ + if (TYPE_DOMAIN (type)) + { + unsigned HOST_WIDE_INT alen = tree_low_cst (array_type_nelts_top (type), 1); +@@ -5806,9 +5812,11 @@ && convs->kind != ck_ambig && (convs->kind != ck_ref_bind || convs->user_conv_p) @@ -38475,7 +39309,7 @@ Index: gcc/cp/call.c conversion *t = convs; /* Give a helpful error if this is bad because of excess braces. */ -@@ -5816,7 +5821,14 @@ +@@ -5816,7 +5824,14 @@ && SCALAR_TYPE_P (totype) && CONSTRUCTOR_NELTS (expr) > 0 && BRACE_ENCLOSED_INITIALIZER_P (CONSTRUCTOR_ELT (expr, 0)->value)) @@ -38491,7 +39325,7 @@ Index: gcc/cp/call.c for (; t ; t = next_conversion (t)) { -@@ -5853,8 +5865,9 @@ +@@ -5853,8 +5868,9 @@ break; } @@ -38503,7 +39337,7 @@ Index: gcc/cp/call.c if (fn) permerror (DECL_SOURCE_LOCATION (fn), " initializing argument %P of %qD", argnum, fn); -@@ -5999,6 +6012,8 @@ +@@ -5999,6 +6015,8 @@ to avoid the error about taking the address of a temporary. */ array = cp_build_addr_expr (array, complain); array = cp_convert (build_pointer_type (elttype), array, complain); @@ -38512,7 +39346,7 @@ Index: gcc/cp/call.c /* Build up the initializer_list object. */ totype = complete_type (totype); -@@ -6023,8 +6038,11 @@ +@@ -6023,8 +6041,11 @@ return fold_if_not_in_template (expr); } expr = reshape_init (totype, expr, complain); @@ -38525,7 +39359,32 @@ Index: gcc/cp/call.c default: break; -@@ -7414,7 +7432,7 @@ +@@ -6405,20 +6426,10 @@ + /* We must make a copy of ARG, in case subsequent processing + alters any part of it. */ + arg = break_out_target_exprs (arg); +- if (TREE_CODE (arg) == CONSTRUCTOR) +- { +- arg = digest_init (type, arg, complain); +- arg = convert_for_initialization (0, type, arg, LOOKUP_IMPLICIT, +- ICR_DEFAULT_ARGUMENT, fn, parmnum, +- complain); +- } +- else +- { +- arg = convert_for_initialization (0, type, arg, LOOKUP_IMPLICIT, +- ICR_DEFAULT_ARGUMENT, fn, parmnum, +- complain); +- arg = convert_for_arg_passing (type, arg, complain); +- } ++ arg = convert_for_initialization (0, type, arg, LOOKUP_IMPLICIT, ++ ICR_DEFAULT_ARGUMENT, fn, parmnum, ++ complain); ++ arg = convert_for_arg_passing (type, arg, complain); + pop_deferring_access_checks(); + + pop_defarg_context (); +@@ -7414,7 +7425,7 @@ struct z_candidate *candidates = 0, *cand; tree explicit_targs = NULL_TREE; tree basetype = NULL_TREE; @@ -38534,7 +39393,7 @@ Index: gcc/cp/call.c tree optype; tree first_mem_arg = NULL_TREE; tree instance_ptr; -@@ -7454,6 +7472,7 @@ +@@ -7454,6 +7465,7 @@ if (!conversion_path) conversion_path = BASELINK_BINFO (fns); access_binfo = BASELINK_ACCESS_BINFO (fns); @@ -38542,7 +39401,7 @@ Index: gcc/cp/call.c optype = BASELINK_OPTYPE (fns); fns = BASELINK_FUNCTIONS (fns); if (TREE_CODE (fns) == TEMPLATE_ID_EXPR) -@@ -7697,13 +7716,13 @@ +@@ -7697,13 +7709,13 @@ { /* Optimize away vtable lookup if we know that this function can't be overridden. We need to check if @@ -38806,7 +39665,20 @@ Index: gcc/cse.c else return 0; } -@@ -6082,6 +6082,18 @@ +@@ -5659,9 +5659,10 @@ + invalidate (XEXP (dest, 0), GET_MODE (dest)); + } + +- /* A volatile ASM or an UNSPEC_VOLATILE invalidates everything. */ ++ /* A volatile ASM invalidates everything. */ + if (NONJUMP_INSN_P (insn) +- && volatile_insn_p (PATTERN (insn))) ++ && GET_CODE (PATTERN (insn)) == ASM_OPERANDS ++ && MEM_VOLATILE_P (PATTERN (insn))) + flush_hash_table (); + + /* Don't cse over a call to setjmp; on some machines (eg VAX) +@@ -6082,6 +6083,18 @@ return x; } @@ -41970,6 +42842,20 @@ Index: gcc/ada/system-rtems.ads Null_Address : constant Address; Storage_Unit : constant := Standard'Storage_Unit; +Index: gcc/dse.c +=================================================================== +--- a/src/gcc/dse.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/dse.c (.../branches/gcc-4_8-branch) +@@ -2518,7 +2518,8 @@ + /* Cselib clears the table for this case, so we have to essentially + do the same. */ + if (NONJUMP_INSN_P (insn) +- && volatile_insn_p (PATTERN (insn))) ++ && GET_CODE (PATTERN (insn)) == ASM_OPERANDS ++ && MEM_VOLATILE_P (PATTERN (insn))) + { + add_wild_read (bb_info); + insn_info->cannot_delete = true; Index: gcc/gimple-ssa-strength-reduction.c =================================================================== --- a/src/gcc/gimple-ssa-strength-reduction.c (.../tags/gcc_4_8_2_release) @@ -45008,6 +45894,22 @@ Index: gcc/cselib.c { has_mem = true; num_mems++; +@@ -2623,12 +2623,13 @@ + + cselib_current_insn = insn; + +- /* Forget everything at a CODE_LABEL, a volatile insn, or a setjmp. */ ++ /* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp. */ + if ((LABEL_P (insn) + || (CALL_P (insn) + && find_reg_note (insn, REG_SETJMP, NULL)) + || (NONJUMP_INSN_P (insn) +- && volatile_insn_p (PATTERN (insn)))) ++ && GET_CODE (PATTERN (insn)) == ASM_OPERANDS ++ && MEM_VOLATILE_P (PATTERN (insn)))) + && !cselib_preserve_constants) + { + cselib_reset_table (next_uid); Index: gcc/tree-cfgcleanup.c =================================================================== --- a/src/gcc/tree-cfgcleanup.c (.../tags/gcc_4_8_2_release) @@ -49822,6 +50724,15 @@ Index: gcc/config/i386/i386.c static bool gate_insert_vzeroupper (void) +@@ -2920,7 +2886,7 @@ + | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX | PTA_AVX2 + | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL | PTA_FSGSBASE + | PTA_RDRND | PTA_F16C | PTA_BMI | PTA_BMI2 | PTA_LZCNT +- | PTA_FMA | PTA_MOVBE | PTA_RTM | PTA_HLE | PTA_FXSR | PTA_XSAVE ++ | PTA_FMA | PTA_MOVBE | PTA_HLE | PTA_FXSR | PTA_XSAVE + | PTA_XSAVEOPT}, + {"atom", PROCESSOR_ATOM, CPU_ATOM, + PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 @@ -2983,7 +2949,7 @@ {"bdver3", PROCESSOR_BDVER3, CPU_BDVER3, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 @@ -51870,6 +52781,46 @@ Index: gcc/config/microblaze/microblaze.h /* Stack layout; function entry, exit and calling. */ #define STACK_GROWS_DOWNWARD +Index: gcc/config/avr/avr.md +=================================================================== +--- a/src/gcc/config/avr/avr.md (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/config/avr/avr.md (.../branches/gcc-4_8-branch) +@@ -89,7 +89,7 @@ + (include "constraints.md") + + ;; Condition code settings. +-(define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber, ++(define_attr "cc" "none,set_czn,set_zn,set_vzn,set_n,compare,clobber, + plus,ldi" + (const_string "none")) + +@@ -1097,7 +1097,7 @@ + inc %0\;inc %0 + dec %0\;dec %0" + [(set_attr "length" "1,1,1,1,2,2") +- (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")]) ++ (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")]) + + ;; "addhi3" + ;; "addhq3" "adduhq3" +@@ -1368,7 +1368,7 @@ + dec %0\;dec %0 + inc %0\;inc %0" + [(set_attr "length" "1,1,1,1,2,2") +- (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")]) ++ (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")]) + + ;; "subhi3" + ;; "subhq3" "subuhq3" +@@ -3991,7 +3991,7 @@ + "" + "neg %0" + [(set_attr "length" "1") +- (set_attr "cc" "set_zn")]) ++ (set_attr "cc" "set_vzn")]) + + (define_insn "*negqihi2" + [(set (match_operand:HI 0 "register_operand" "=r") Index: gcc/config/avr/avr.c =================================================================== --- a/src/gcc/config/avr/avr.c (.../tags/gcc_4_8_2_release) @@ -51891,7 +52842,55 @@ Index: gcc/config/avr/avr.c /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC startet using this when it switched from SIGNAL and INTERRUPT to ISR. */ -@@ -6806,8 +6810,8 @@ +@@ -2339,6 +2343,12 @@ + } + break; + ++ case CC_SET_VZN: ++ /* Insn like INC, DEC, NEG that set Z,N,V. We currently don't make use ++ of this combination, cf. also PR61055. */ ++ CC_STATUS_INIT; ++ break; ++ + case CC_SET_CZN: + /* Insn sets the Z,N,C flags of CC to recog_operand[0]. + The V flag may or may not be known but that's ok because +@@ -3977,7 +3987,7 @@ + "std Y+61,%A1" CR_TAB + "std Y+62,%B1" CR_TAB + "std Y+63,%C1" CR_TAB +- "sbiw r28,%o0-60", op, plen, -5); ++ "sbiw r28,%o0-61", op, plen, -5); + + return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB + "sbci r29,hi8(-%o0)" CR_TAB +@@ -6274,7 +6284,7 @@ + + if (REG_P (xop[2])) + { +- *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_SET_N; ++ *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_CLOBBER; + + for (i = 0; i < n_bytes; i++) + { +@@ -6383,7 +6393,7 @@ + op, plen, 1); + + if (n_bytes == 2 && PLUS == code) +- *pcc = CC_SET_ZN; ++ *pcc = CC_SET_CZN; + } + + i++; +@@ -6406,6 +6416,7 @@ + { + avr_asm_len ((code == PLUS) ^ (val8 == 1) ? "dec %0" : "inc %0", + op, plen, 1); ++ *pcc = CC_CLOBBER; + break; + } + +@@ -6806,8 +6817,8 @@ /* Work out the shortest sequence. */ @@ -78244,6 +79243,24 @@ Index: gcc/config/arm/arm.h && reg_classes_intersect_p (VFP_REGS, (CLASS))) /* The class value for index registers, and the one for base regs. */ +@@ -2139,14 +2143,9 @@ + #undef ASM_OUTPUT_BEFORE_CASE_LABEL + #define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) /* Empty. */ + +-/* Make sure subsequent insns are aligned after a TBB. */ +-#define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE) \ +- do \ +- { \ +- if (GET_MODE (PATTERN (JUMPTABLE)) == QImode) \ +- ASM_OUTPUT_ALIGN (FILE, 1); \ +- } \ +- while (0) ++#define LABEL_ALIGN_AFTER_BARRIER(LABEL) \ ++ (GET_CODE (PATTERN (prev_active_insn (LABEL))) == ADDR_DIFF_VEC \ ++ ? 1 : 0) + + #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ + do \ Index: gcc/config/arm/vfp.md =================================================================== --- a/src/gcc/config/arm/vfp.md (.../tags/gcc_4_8_2_release) @@ -79624,6 +80641,50 @@ Index: gcc/config/mips/mips.h /* ISA has data prefetch instructions. This controls use of 'pref'. */ #define ISA_HAS_PREFETCH ((ISA_MIPS4 \ || TARGET_LOONGSON_2EF \ +Index: gcc/stmt.c +=================================================================== +--- a/src/gcc/stmt.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/stmt.c (.../branches/gcc-4_8-branch) +@@ -1602,19 +1602,28 @@ + #ifdef HAVE_nonlocal_goto + if (! HAVE_nonlocal_goto) + #endif +- /* First adjust our frame pointer to its actual value. It was +- previously set to the start of the virtual area corresponding to +- the stacked variables when we branched here and now needs to be +- adjusted to the actual hardware fp value. ++ { ++ /* First adjust our frame pointer to its actual value. It was ++ previously set to the start of the virtual area corresponding to ++ the stacked variables when we branched here and now needs to be ++ adjusted to the actual hardware fp value. + +- Assignments are to virtual registers are converted by +- instantiate_virtual_regs into the corresponding assignment +- to the underlying register (fp in this case) that makes +- the original assignment true. +- So the following insn will actually be +- decrementing fp by STARTING_FRAME_OFFSET. */ +- emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); ++ Assignments to virtual registers are converted by ++ instantiate_virtual_regs into the corresponding assignment ++ to the underlying register (fp in this case) that makes ++ the original assignment true. ++ So the following insn will actually be decrementing fp by ++ STARTING_FRAME_OFFSET. */ ++ emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); + ++ /* Restoring the frame pointer also modifies the hard frame pointer. ++ Mark it used (so that the previous assignment remains live once ++ the frame pointer is eliminated) and clobbered (to represent the ++ implicit update from the assignment). */ ++ emit_use (hard_frame_pointer_rtx); ++ emit_clobber (hard_frame_pointer_rtx); ++ } ++ + #if !HARD_FRAME_POINTER_IS_ARG_POINTER + if (fixed_regs[ARG_POINTER_REGNUM]) + { Index: gcc/params.def =================================================================== --- a/src/gcc/params.def (.../tags/gcc_4_8_2_release) diff --git a/debian/rules.patch b/debian/rules.patch index 13f0d03..3f11455 100644 --- a/debian/rules.patch +++ b/debian/rules.patch @@ -90,8 +90,6 @@ debian_patches += \ $(if $(with_linaro_branch),aarch64-abi-fix) \ fix-ffi_call_VFP-with-no-VFP-argument \ $(if $(with_linaro_branch),pr60034) \ - pr60609 \ - gcc-rs6000-update \ pr61106 \ # FIXME: still necessary for cross building the native compiler? |