diff options
author | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2015-04-03 13:57:06 +0000 |
---|---|---|
committer | doko <doko@6ca36cf4-e1d1-0310-8c6f-e303bb2178ca> | 2015-04-03 13:57:06 +0000 |
commit | bcfe6259606761a34e2a4925e7af93545938601f (patch) | |
tree | 16f44e8c8634c23ca79a5947be7624c41d6a4135 /debian | |
parent | d3327883c2de0d8d59251a304a7616986e6881e5 (diff) | |
download | gcc-5-bcfe6259606761a34e2a4925e7af93545938601f.tar.gz |
* Update to SVN 20150403.
git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-5@7952 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
Diffstat (limited to 'debian')
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | debian/patches/svn-updates.diff | 426 | ||||
-rw-r--r-- | debian/rules.patch | 1 |
3 files changed, 4 insertions, 429 deletions
diff --git a/debian/changelog b/debian/changelog index 605ee0a..930b899 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ -gcc-5 (5-20150401-1) UNRELEASED; urgency=medium +gcc-5 (5-20150403-1) UNRELEASED; urgency=medium - * Update to SVN 20150401. + * Update to SVN 20150403. * Don't explicitly configure --with-gxx-include-dir and an absolute path, so the toolchain remains relocatible. Instead, canonicalize the include path names at runtime. @@ -14,7 +14,7 @@ gcc-5 (5-20150401-1) UNRELEASED; urgency=medium Instead, ignore the one differing file (gcc/ada/a-except.o) for now. See #781457, PR ada/65618. - -- Matthias Klose <doko@debian.org> Wed, 01 Apr 2015 11:42:38 +0200 + -- Matthias Klose <doko@debian.org> Fri, 03 Apr 2015 15:39:41 +0200 gcc-5 (5-20150329-1) experimental; urgency=medium diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff index 46b2c1a..9725770 100644 --- a/debian/patches/svn-updates.diff +++ b/debian/patches/svn-updates.diff @@ -15,428 +15,4 @@ LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_5_1_0_release svn://gcc.gnu.o LANG=C svn diff svn://gcc.gnu.org/svn/gcc/trunk@221805 svn://gcc.gnu.org/svn/gcc/trunk \ | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ | awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0' -Index: gcc/cgraph.h -=================================================================== ---- a/src/gcc/cgraph.h (revision -+++ b/src/gcc/cgraph.h (revision -@@ -1319,6 +1319,8 @@ - unsigned merged : 1; - /* True if function was created to be executed in parallel. */ - unsigned parallelized_function : 1; -+ /* True if function is part split out by ipa-split. */ -+ unsigned split_part : 1; - - private: - /* Worker for call_for_symbol_and_aliases. */ -Index: gcc/ChangeLog -=================================================================== ---- a/src/gcc/ChangeLog (revision -+++ b/src/gcc/ChangeLog (revision -@@ -1,3 +1,21 @@ -+2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com> -+ -+ PR target/65624 -+ * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_builtin): Increase -+ args array size by one to avoid buffer overflow. -+ -+2015-03-31 Jan Hubicka <hubicka@ucw.cz> -+ -+ * lto-cgraph.c (lto_output_node, input_overwrite_node): Stream -+ split_part. -+ * ipa-inline.c (edge_badness): Add wrapper penalty. -+ (sum_callers): Move up. -+ (inline_small_functions): Set single_caller. -+ * ipa-inline.h (inline_summary): Add single_caller. -+ * ipa-split.c (split_function): Set split_part. -+ (cgraph_node::create_clone): Do not shadow decl; copy split_part. -+ * cgraph.h (cgraph_node): Add split_part. -+ - 2015-03-31 Uros Bizjak <ubizjak@gmail.com> - - PR target/58945 -Index: gcc/testsuite/gcc.target/aarch64/pr65624.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/pr65624.c (revision -+++ b/src/gcc/testsuite/gcc.target/aarch64/pr65624.c (revision -@@ -0,0 +1,15 @@ -+/* { dg-do compile } */ -+ -+#include <arm_neon.h> -+ -+int32x4_t -+foo (void) -+{ -+ int32x4_t vector_int32x4; -+ int16x4_t vector3_int16x4; -+ int16x4_t vector4_int16x4; -+ static int32_t buffer_int32x4[32]; -+ -+ vector_int32x4 = vld1q_s32(buffer_int32x4); -+ return vqdmlsl_lane_s16(vector_int32x4, vector3_int16x4, vector4_int16x4, 0); -+} -Index: gcc/testsuite/gcc.dg/ipa/inlinehint-4.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/ipa/inlinehint-4.c (revision -+++ b/src/gcc/testsuite/gcc.dg/ipa/inlinehint-4.c (revision -@@ -0,0 +1,40 @@ -+/* { dg-options "-O3 -fdump-ipa-inline-details -fno-early-inlining --param large-unit-insns=1" } */ -+/* { dg-add-options bind_pic_locally } */ -+int *hashval; -+int *hash; -+int hash_size; -+ -+static int -+lookup_slow (int val) -+{ -+ int i = val % hash_size; -+ while (hashval[i] && hashval[i] != val) -+ i++; -+ return hash[i]; -+} -+ -+static inline int -+lookup (int val) -+{ -+ static int cache, cache_val; -+ if (val == cache_val) -+ return cache; -+ else -+ { -+ cache_val = val; -+ cache = lookup_slow (val); -+ return cache; -+ } -+} -+ -+int -+test (int i) -+{ -+ return lookup (i) + lookup (2 * i) + lookup (3 * i) + lookup (4 * i) + -+ lookup (5 * i) + lookup (6 * i) + lookup (7 * i) + lookup (8 * i) + -+ lookup (9 * i); -+} -+/* { dg-final { scan-ipa-dump "Wrapper penalty" "inline" } } */ -+/* { dg-final { scan-ipa-dump-not "Inlining lookup_slow to lookup" "inline" } } */ -+/* { dg-final { scan-ipa-dump "Inlining lookup to test" "inline" } } */ -+/* { dg-final { cleanup-ipa-dump "inline" } } */ -Index: gcc/testsuite/ChangeLog -=================================================================== ---- a/src/gcc/testsuite/ChangeLog (revision -+++ b/src/gcc/testsuite/ChangeLog (revision -@@ -1,3 +1,18 @@ -+2015-04-01 Marek Polacek <polacek@redhat.com> -+ -+ PR c++/65554 -+ * g++.dg/cpp0x/initlist93.C: New test. -+ * g++.dg/cpp0x/initlist94.C: New test. -+ -+2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com> -+ -+ PR target/65624 -+ * gcc.target/aarch64/pr65624.c: New test. -+ -+2015-03-31 Jan Hubicka <hubicka@ucw.cz> -+ -+ * gcc.dg/ipa/inlinehint-4.c: New testcase. -+ - 2015-03-31 Alex Velenko <Alex.Velenko@arm.com> - - * gcc.target/arm/pr45701-1.c (history_expand_line_internal): Add an -Index: gcc/testsuite/g++.dg/cpp0x/initlist94.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/initlist94.C (revision -+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist94.C (revision -@@ -0,0 +1,13 @@ -+// PR c++/65554 -+// { dg-do compile { target c++11 } } -+ -+typedef decltype (sizeof (int)) size_type; -+ -+namespace std -+{ -+template <class> class initializer_list -+{ -+ int *_M_array; -+ size_type _M_len; -+}; -+} -Index: gcc/testsuite/g++.dg/cpp0x/initlist93.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/initlist93.C (revision -+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist93.C (revision -@@ -0,0 +1,13 @@ -+// PR c++/65554 -+// { dg-do compile { target c++11 } } -+ -+namespace std -+{ -+template <class> class initializer_list // { dg-error "definition of std::initializer_list does not match" } -+{ -+ int *_M_array; -+ int _M_len; -+}; -+} -+ -+// { dg-prune-output "compilation terminated" } -Index: gcc/cp/class.c -=================================================================== ---- a/src/gcc/cp/class.c (revision -+++ b/src/gcc/cp/class.c (revision -@@ -6891,7 +6891,7 @@ - if (f && TREE_CODE (TREE_TYPE (f)) == POINTER_TYPE) - { - f = next_initializable_field (DECL_CHAIN (f)); -- if (f && TREE_CODE (TREE_TYPE (f)) == INTEGER_TYPE) -+ if (f && same_type_p (TREE_TYPE (f), size_type_node)) - ok = true; - } - } -Index: gcc/cp/ChangeLog -=================================================================== ---- a/src/gcc/cp/ChangeLog (revision -+++ b/src/gcc/cp/ChangeLog (revision -@@ -1,3 +1,9 @@ -+2015-04-01 Marek Polacek <polacek@redhat.com> -+ -+ PR c++/65554 -+ * class.c (finish_struct): Require that the second field of a -+ user-defined initializer_list be of size type. -+ - 2015-03-31 Marek Polacek <polacek@redhat.com> - - PR c++/65390 -Index: gcc/lto-cgraph.c -=================================================================== ---- a/src/gcc/lto-cgraph.c (revision -+++ b/src/gcc/lto-cgraph.c (revision -@@ -578,6 +578,7 @@ - bp_pack_enum (&bp, ld_plugin_symbol_resolution, - LDPR_NUM_KNOWN, node->resolution); - bp_pack_value (&bp, node->instrumentation_clone, 1); -+ bp_pack_value (&bp, node->split_part, 1); - streamer_write_bitpack (&bp); - streamer_write_data_stream (ob->main_stream, section, strlen (section) + 1); - -@@ -1214,6 +1215,7 @@ - node->resolution = bp_unpack_enum (bp, ld_plugin_symbol_resolution, - LDPR_NUM_KNOWN); - node->instrumentation_clone = bp_unpack_value (bp, 1); -+ node->split_part = bp_unpack_value (bp, 1); - gcc_assert (flag_ltrans - || (!node->in_other_partition - && !node->used_from_other_partition)); -Index: gcc/ipa-inline.c -=================================================================== ---- a/src/gcc/ipa-inline.c (revision -+++ b/src/gcc/ipa-inline.c (revision -@@ -1088,6 +1088,7 @@ - else if (opt_for_fn (caller->decl, flag_guess_branch_prob) || caller->count) - { - sreal numerator, denominator; -+ int overall_growth; - - numerator = (compute_uninlined_call_time (callee_info, edge) - - compute_inlined_call_time (edge, edge_time)); -@@ -1098,9 +1099,75 @@ - else if (opt_for_fn (caller->decl, flag_branch_probabilities)) - numerator = numerator >> 11; - denominator = growth; -- if (callee_info->growth > 0) -- denominator *= callee_info->growth * callee_info->growth; - -+ overall_growth = callee_info->growth; -+ -+ /* Look for inliner wrappers of the form: -+ -+ inline_caller () -+ { -+ do_fast_job... -+ if (need_more_work) -+ noninline_callee (); -+ } -+ Withhout panilizing this case, we usually inline noninline_callee -+ into the inline_caller because overall_growth is small preventing -+ further inlining of inline_caller. -+ -+ Penalize only callgraph edges to functions with small overall -+ growth ... -+ */ -+ if (growth > overall_growth -+ /* ... and having only one caller which is not inlined ... */ -+ && callee_info->single_caller -+ && !edge->caller->global.inlined_to -+ /* ... and edges executed only conditionally ... */ -+ && edge->frequency < CGRAPH_FREQ_BASE -+ /* ... consider case where callee is not inline but caller is ... */ -+ && ((!DECL_DECLARED_INLINE_P (edge->callee->decl) -+ && DECL_DECLARED_INLINE_P (caller->decl)) -+ /* ... or when early optimizers decided to split and edge -+ frequency still indicates splitting is a win ... */ -+ || (callee->split_part && !caller->split_part -+ && edge->frequency -+ < CGRAPH_FREQ_BASE -+ * PARAM_VALUE -+ (PARAM_PARTIAL_INLINING_ENTRY_PROBABILITY) / 100 -+ /* ... and do not overwrite user specified hints. */ -+ && (!DECL_DECLARED_INLINE_P (edge->callee->decl) -+ || DECL_DECLARED_INLINE_P (caller->decl))))) -+ { -+ struct inline_summary *caller_info = inline_summaries->get (caller); -+ int caller_growth = caller_info->growth; -+ -+ /* Only apply the penalty when caller looks like inline candidate, -+ and it is not called once and. */ -+ if (!caller_info->single_caller && overall_growth < caller_growth -+ && caller_info->inlinable -+ && caller_info->size -+ < (DECL_DECLARED_INLINE_P (caller->decl) -+ ? MAX_INLINE_INSNS_SINGLE : MAX_INLINE_INSNS_AUTO)) -+ { -+ if (dump) -+ fprintf (dump_file, -+ " Wrapper penalty. Increasing growth %i to %i\n", -+ overall_growth, caller_growth); -+ overall_growth = caller_growth; -+ } -+ } -+ if (overall_growth > 0) -+ { -+ /* Strongly preffer functions with few callers that can be inlined -+ fully. The square root here leads to smaller binaries at average. -+ Watch however for extreme cases and return to linear function -+ when growth is large. */ -+ if (overall_growth < 256) -+ overall_growth *= overall_growth; -+ else -+ overall_growth += 256 * 256 - 256; -+ denominator *= overall_growth; -+ } -+ - badness = - numerator / denominator; - - if (dump) -@@ -1109,13 +1176,15 @@ - " %f: guessed profile. frequency %f, count %"PRId64 - " caller count %"PRId64 - " time w/o inlining %f, time w inlining %f" -- " overall growth %i (current) %i (original)\n", -- badness.to_double (), (double)edge->frequency / CGRAPH_FREQ_BASE, -+ " overall growth %i (current) %i (original)" -+ " %i (compensated)\n", -+ badness.to_double (), -+ (double)edge->frequency / CGRAPH_FREQ_BASE, - edge->count, caller->count, - compute_uninlined_call_time (callee_info, edge).to_double (), - compute_inlined_call_time (edge, edge_time).to_double (), - estimate_growth (callee), -- callee_info->growth); -+ callee_info->growth, overall_growth); - } - } - /* When function local profile is not available or it does not give -@@ -1133,8 +1202,8 @@ - else - badness = badness << nest; - if (dump) -- fprintf (dump_file, " %f: no profile. nest %i\n", badness.to_double (), -- nest); -+ fprintf (dump_file, " %f: no profile. nest %i\n", -+ badness.to_double (), nest); - } - gcc_checking_assert (badness != 0); - -@@ -1649,6 +1718,20 @@ - && node->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED); - } - -+/* Count number of callers of NODE and store it into DATA (that -+ points to int. Worker for cgraph_for_node_and_aliases. */ -+ -+static bool -+sum_callers (struct cgraph_node *node, void *data) -+{ -+ struct cgraph_edge *e; -+ int *num_calls = (int *)data; -+ -+ for (e = node->callers; e; e = e->next_caller) -+ (*num_calls)++; -+ return false; -+} -+ - /* We use greedy algorithm for inlining of small functions: - All inline candidates are put into prioritized heap ordered in - increasing badness. -@@ -1693,6 +1776,12 @@ - if (inline_account_function_p (node)) - initial_size += info->size; - info->growth = estimate_growth (node); -+ -+ int num_calls = 0; -+ node->call_for_symbol_and_aliases (sum_callers, &num_calls, -+ true); -+ if (num_calls == 1) -+ info->single_caller = true; - if (dfs && dfs->next_cycle) - { - struct cgraph_node *n2; -@@ -2085,20 +2174,6 @@ - inline_update_overall_summary (node); - } - --/* Count number of callers of NODE and store it into DATA (that -- points to int. Worker for cgraph_for_node_and_aliases. */ -- --static bool --sum_callers (struct cgraph_node *node, void *data) --{ -- struct cgraph_edge *e; -- int *num_calls = (int *)data; -- -- for (e = node->callers; e; e = e->next_caller) -- (*num_calls)++; -- return false; --} -- - /* Inline NODE to all callers. Worker for cgraph_for_node_and_aliases. - DATA points to number of calls originally found so we avoid infinite - recursion. */ -Index: gcc/ipa-inline.h -=================================================================== ---- a/src/gcc/ipa-inline.h (revision -+++ b/src/gcc/ipa-inline.h (revision -@@ -129,6 +129,9 @@ - /* True when function contains cilk spawn (and thus we can not inline - into it). */ - unsigned contains_cilk_spawn : 1; -+ /* True wen there is only one caller of the function before small function -+ inlining. */ -+ unsigned int single_caller : 1; - - /* Information about function that will result after applying all the - inline decisions present in the callgraph. Generally kept up to -Index: gcc/ipa-split.c -=================================================================== ---- a/src/gcc/ipa-split.c (revision -+++ b/src/gcc/ipa-split.c (revision -@@ -1402,6 +1402,8 @@ - (vNULL, NULL, args_to_skip, !split_part_return_p, split_point->split_bbs, - split_point->entry_bb, "part"); - -+ node->split_part = true; -+ - /* Let's take a time profile for splitted function. */ - node->tp_first_run = cur_node->tp_first_run + 1; - -Index: gcc/config/aarch64/aarch64-builtins.c -=================================================================== ---- a/src/gcc/config/aarch64/aarch64-builtins.c (revision -+++ b/src/gcc/config/aarch64/aarch64-builtins.c (revision -@@ -1025,7 +1025,7 @@ - aarch64_simd_builtin_datum *d = - &aarch64_simd_builtin_data[fcode - AARCH64_SIMD_PATTERN_START]; - enum insn_code icode = d->code; -- builtin_simd_arg args[SIMD_MAX_BUILTIN_ARGS]; -+ builtin_simd_arg args[SIMD_MAX_BUILTIN_ARGS + 1]; - int num_args = insn_data[d->code].n_operands; - int is_void = 0; - int k; + diff --git a/debian/rules.patch b/debian/rules.patch index 4c26166..47c5af1 100644 --- a/debian/rules.patch +++ b/debian/rules.patch @@ -13,7 +13,6 @@ series_file ?= $(patchdir)/series # which patches should be applied? debian_patches = \ - svn-updates \ $(if $(with_linaro_branch),gcc-linaro) \ $(if $(with_linaro_branch),gcc-linaro-no-macros) \ |