From 2951ec3f2c9bd51093c429401c67fd65885c4366 Mon Sep 17 00:00:00 2001 From: doko Date: Thu, 8 May 2014 11:55:34 +0000 Subject: * Update to SVN 20140508 (r210209) from the gcc-4_8-branch. git-svn-id: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.8@7364 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca --- debian/changelog | 2 +- debian/patches/svn-updates.diff | 507 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 477 insertions(+), 32 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1a41ead..9db3e88 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ gcc-4.8 (4.8.2-22) UNRELEASED; urgency=medium - * Update to SVN 20140505 (r210076) from the gcc-4_8-branch. + * Update to SVN 20140508 (r210209) from the gcc-4_8-branch. * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 cross compiler, update hppa64 alternatives. Closes: #745967. * Fix the as and ld symlinks for the hppa64 cross compiler. diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff index 139ea0f..f17eeb2 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 20140505 (r210076). +# DP: updates from the 4.8 branch upto 20140508 (r210209). last_updated() { cat > ${dir}LAST_UPDATED <()) + (std::declval<_ArgTypes>()...) ); + ++ // Used so the return type convertibility checks aren't done when ++ // performing overload resolution for copy construction/assignment. ++ template ++ using _NotSelf = __not_>; ++ + template +- using _Callable = __check_func_return_type<_Invoke<_Functor>, _Res>; ++ using _Callable ++ = __and_<_NotSelf<_Functor>, ++ __check_func_return_type<_Invoke<_Functor>, _Res>>; + + template + using _Requires = typename enable_if<_Cond::value, _Tp>::type; +@@ -2323,7 +2330,7 @@ + * reference_wrapper, this function will not throw. + */ + template +- _Requires<_Callable<_Functor>, function&> ++ _Requires<_Callable::type>, function&> + operator=(_Functor&& __f) + { + function(std::forward<_Functor>(__f)).swap(*this); Index: libstdc++-v3/include/bits/atomic_base.h =================================================================== --- a/src/libstdc++-v3/include/bits/atomic_base.h (.../tags/gcc_4_8_2_release) @@ -4160,7 +4190,17 @@ 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,178 @@ +@@ -1,3 +1,188 @@ ++2014-05-06 Jonathan Wakely ++ ++ Backport from mainline ++ 2014-04-15 Jonathan Wakely ++ ++ PR libstdc++/60594 ++ * include/std/functional (function::_Callable): Exclude own type ++ from the callable checks. ++ * testsuite/20_util/function/60594.cc: New. ++ +2014-04-27 Jonathan Wakely + + PR libstdc++/60497 @@ -4893,6 +4933,47 @@ Index: libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc + std::unique_ptr y; + std::shared_ptr x = std::move(y); +} +Index: libstdc++-v3/testsuite/20_util/function/60594.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function/60594.cc (.../tags/gcc_4_8_2_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function/60594.cc (.../branches/gcc-4_8-branch) +@@ -0,0 +1,36 @@ ++// { dg-options "-std=gnu++11" } ++// { dg-do compile } ++ ++// Copyright (C) 2011-2014 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// libstdc++/60594 ++ ++#include ++#include ++struct bar; ++using F = std::function; ++// check for copy constructible and assignable while 'bar' is incomplete ++constexpr int c = std::is_copy_constructible::value; ++constexpr int a = std::is_copy_assignable::value; ++struct bar { }; ++bar func(); ++void test() ++{ ++ F g{ &func }; ++ g = func; ++} Index: libstdc++-v3/testsuite/20_util/bind/57899.cc =================================================================== --- a/src/libstdc++-v3/testsuite/20_util/bind/57899.cc (.../tags/gcc_4_8_2_release) @@ -8007,6 +8088,42 @@ Index: gcc/tree-ssa-loop-im.c } } +@@ -1992,6 +2067,7 @@ + gimple_stmt_iterator gsi; + gimple stmt; + struct prev_flag_edges *prev_edges = (struct prev_flag_edges *) ex->aux; ++ bool irr = ex->flags & EDGE_IRREDUCIBLE_LOOP; + + /* ?? Insert store after previous store if applicable. See note + below. */ +@@ -2006,8 +2082,9 @@ + old_dest = ex->dest; + new_bb = split_edge (ex); + then_bb = create_empty_bb (new_bb); +- if (current_loops && new_bb->loop_father) +- add_bb_to_loop (then_bb, new_bb->loop_father); ++ if (irr) ++ then_bb->flags = BB_IRREDUCIBLE_LOOP; ++ add_bb_to_loop (then_bb, new_bb->loop_father); + + gsi = gsi_start_bb (new_bb); + stmt = gimple_build_cond (NE_EXPR, flag, boolean_false_node, +@@ -2019,9 +2096,12 @@ + stmt = gimple_build_assign (unshare_expr (mem), tmp_var); + gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); + +- make_edge (new_bb, then_bb, EDGE_TRUE_VALUE); +- make_edge (new_bb, old_dest, EDGE_FALSE_VALUE); +- then_old_edge = make_edge (then_bb, old_dest, EDGE_FALLTHRU); ++ make_edge (new_bb, then_bb, ++ EDGE_TRUE_VALUE | (irr ? EDGE_IRREDUCIBLE_LOOP : 0)); ++ make_edge (new_bb, old_dest, ++ EDGE_FALSE_VALUE | (irr ? EDGE_IRREDUCIBLE_LOOP : 0)); ++ then_old_edge = make_edge (then_bb, old_dest, ++ EDGE_FALLTHRU | (irr ? EDGE_IRREDUCIBLE_LOOP : 0)); + + set_immediate_dominator (CDI_DOMINATORS, then_bb, new_bb); + Index: gcc/tree-ssa-tail-merge.c =================================================================== --- a/src/gcc/tree-ssa-tail-merge.c (.../tags/gcc_4_8_2_release) @@ -8358,7 +8475,20 @@ Index: gcc/c-family/c-opts.c =================================================================== --- a/src/gcc/c-family/c-opts.c (.../tags/gcc_4_8_2_release) +++ b/src/gcc/c-family/c-opts.c (.../branches/gcc-4_8-branch) -@@ -1258,17 +1258,18 @@ +@@ -840,6 +840,12 @@ + if (flag_objc_exceptions && !flag_objc_sjlj_exceptions) + flag_exceptions = 1; + ++ /* If -ffreestanding, -fno-hosted or -fno-builtin then disable ++ pattern recognition. */ ++ if (!global_options_set.x_flag_tree_loop_distribute_patterns ++ && flag_no_builtin) ++ flag_tree_loop_distribute_patterns = 0; ++ + /* -Woverlength-strings is off by default, but is enabled by -Wpedantic. + It is never enabled in C++, as the minimum limit is not normative + in that standard. */ +@@ -1258,17 +1264,18 @@ { size_t i; @@ -8390,7 +8520,13 @@ Index: gcc/c-family/ChangeLog =================================================================== --- a/src/gcc/c-family/ChangeLog (.../tags/gcc_4_8_2_release) +++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,72 @@ +@@ -1,3 +1,78 @@ ++2014-05-06 Richard Biener ++ ++ * c-opts.c (c_common_post_options): For -freestanding, ++ -fno-hosted and -fno-builtin disable pattern recognition ++ if not enabled explicitely. ++ +2014-04-10 Jakub Jelinek + + Backport from mainline @@ -9019,7 +9155,7 @@ Index: gcc/DATESTAMP +++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch) @@ -1 +1 @@ -20131016 -+20140505 ++20140508 Index: gcc/value-prof.c =================================================================== --- a/src/gcc/value-prof.c (.../tags/gcc_4_8_2_release) @@ -9685,7 +9821,25 @@ Index: gcc/fold-const.c =================================================================== --- a/src/gcc/fold-const.c (.../tags/gcc_4_8_2_release) +++ b/src/gcc/fold-const.c (.../branches/gcc-4_8-branch) -@@ -2664,10 +2664,11 @@ +@@ -461,8 +461,6 @@ + + case TRUNC_DIV_EXPR: + case ROUND_DIV_EXPR: +- case FLOOR_DIV_EXPR: +- case CEIL_DIV_EXPR: + case EXACT_DIV_EXPR: + /* In general we can't negate A / B, because if A is INT_MIN and + B is 1, we may turn this into INT_MIN / -1 which is undefined +@@ -644,8 +642,6 @@ + + case TRUNC_DIV_EXPR: + case ROUND_DIV_EXPR: +- case FLOOR_DIV_EXPR: +- case CEIL_DIV_EXPR: + case EXACT_DIV_EXPR: + /* In general we can't negate A / B, because if A is INT_MIN and + B is 1, we may turn this into INT_MIN / -1 which is undefined +@@ -2664,10 +2660,11 @@ case COMPONENT_REF: /* Handle operand 2 the same as for ARRAY_REF. Operand 0 may be NULL when we're called to compare MEM_EXPRs. */ @@ -9699,7 +9853,7 @@ Index: gcc/fold-const.c case BIT_FIELD_REF: if (!OP_SAME (0)) -@@ -4920,12 +4921,16 @@ +@@ -4920,12 +4917,16 @@ int in0_p, in1_p, in_p; tree low0, low1, low, high0, high1, high; bool strict_overflow_p = false; @@ -9719,7 +9873,7 @@ Index: gcc/fold-const.c /* If this is an OR operation, invert both sides; we will invert again at the end. */ if (or_op) -@@ -10927,6 +10932,13 @@ +@@ -10927,6 +10928,13 @@ fold_build2_loc (loc, MULT_EXPR, type, build_int_cst (type, 2) , arg1)); @@ -9733,7 +9887,7 @@ Index: gcc/fold-const.c strict_overflow_p = false; if (TREE_CODE (arg1) == INTEGER_CST && 0 != (tem = extract_muldiv (op0, arg1, code, NULL_TREE, -@@ -16587,7 +16599,7 @@ +@@ -16587,7 +16595,7 @@ unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT; tree index = bitsize_int (indexi); @@ -9961,7 +10115,45 @@ 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,5329 @@ +@@ -1,3 +1,5367 @@ ++2014-05-06 Kyrylo Tkachov ++ ++ * config.gcc (aarch64*-*-*): Use ISA flags from aarch64-arches.def. ++ Do not define target_cpu_default2 to generic. ++ ++2014-05-06 Richard Biener ++ ++ Backport from mainline ++ 2014-04-14 Richard Biener ++ ++ PR middle-end/55022 ++ * fold-const.c (negate_expr_p): Don't negate directional rounding ++ division. ++ (fold_negate_expr): Likewise. ++ ++2014-05-06 Richard Biener ++ ++ Backport from mainline ++ 2014-04-17 Richard Biener ++ ++ PR middle-end/60849 ++ * tree-ssa-propagate.c (valid_gimple_rhs_p): Only allow effective ++ boolean results for comparisons. ++ ++ 2014-04-07 Richard Biener ++ ++ PR tree-optimization/60766 ++ * tree-ssa-loop-ivopts.c (cand_value_at): Compute in an ++ unsigned type. ++ (may_eliminate_iv): Convert cand_value_at result to desired ++ type. ++ ++ 2014-04-23 Richard Biener ++ ++ PR tree-optimization/60903 ++ * tree-ssa-loop-im.c (execute_sm_if_changed): Properly apply ++ IRREDUCIBLE_LOOP loop flags to newly created BBs and edges. ++ +2014-05-05 Richard Biener + + Backport from mainline @@ -15291,7 +15483,7 @@ Index: gcc/ChangeLog 2013-10-16 Release Manager * GCC 4.8.2 released. -@@ -639,7 +5970,7 @@ +@@ -639,7 +6008,7 @@ 2013-07-31 Andreas Krebbel Backport from mainline @@ -31167,6 +31359,38 @@ Index: gcc/testsuite/gcc.dg/20050922-2.c #if __INT_MAX__ == 2147483647 typedef unsigned int uint32_t; +Index: gcc/testsuite/gcc.dg/graphite/pr55022.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/graphite/pr55022.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.dg/graphite/pr55022.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fgraphite-identity" } */ ++ ++extern void abort (void); ++ ++void __attribute__((noinline,noclone)) ++f(int *limit, int minLen, int maxLen) ++{ ++ int i; ++ ++ for (i = minLen; i <= maxLen; i++) { ++ limit[i] = i; ++ } ++} ++ ++int main() ++{ ++ int limit[256], i; ++ f (limit, 0, 255); ++ for (i = 0; i < 256; ++i) ++ { ++ if (limit[i] != i) ++ abort (); ++ __asm__ volatile ("" : : : "memory"); ++ } ++ return 0; ++} Index: gcc/testsuite/gcc.dg/graphite/pr59817-2.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/graphite/pr59817-2.c (.../tags/gcc_4_8_2_release) @@ -31755,6 +31979,33 @@ Index: gcc/testsuite/gcc.dg/torture/pr58079.c + dvb_dmx_swfilter_packet(demux, buf); + } +} +Index: gcc/testsuite/gcc.dg/torture/pr60903.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr60903.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr60903.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++ ++extern int a, b, k, q; ++ ++void ++foo () ++{ ++ if (a) ++ { ++ while (q) ++ { ++ lbl: ++ if (a) ++ { ++ a = 0; ++ goto lbl; ++ } ++ } ++ b = k; ++ } ++ goto lbl; ++} Index: gcc/testsuite/gcc.dg/torture/pr58830.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/torture/pr58830.c (.../tags/gcc_4_8_2_release) @@ -32208,6 +32459,48 @@ Index: gcc/testsuite/gcc.dg/torture/pr53922.c int x(int a) { +Index: gcc/testsuite/gcc.dg/torture/pr57864.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr57864.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr57864.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do compile } */ ++ ++union U { ++ double val; ++ union U *ptr; ++}; ++ ++union U *d; ++double a; ++int b; ++int c; ++ ++static void fn1(union U *p1, int p2, _Bool p3) ++{ ++ union U *e; ++ ++ if (p2 == 0) ++ a = ((union U*)((unsigned long)p1 & ~1))->val; ++ ++ if (b) { ++ e = p1; ++ } else if (c) { ++ e = ((union U*)((unsigned long)p1 & ~1))->ptr; ++ d = e; ++ } else { ++ e = 0; ++ d = ((union U*)0)->ptr; ++ } ++ ++ fn1 (e, 0, 0); ++ fn1 (0, 0, p3); ++} ++ ++void fn2 (void) ++{ ++ fn1 (0, 0, 0); ++} Index: gcc/testsuite/gcc.dg/torture/pr59288.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/torture/pr59288.c (.../tags/gcc_4_8_2_release) @@ -32222,6 +32515,26 @@ Index: gcc/testsuite/gcc.dg/torture/pr59288.c + for (i = 0, j = 0, k = 0; i < 512; i = (int) i + 1, j = (int) j + 1, k = (int) k + 3) + d[i] = j ^ (i * 3) ^ (2 * k + 2); +} +Index: gcc/testsuite/gcc.dg/torture/pr60766.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr60766.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr60766.c (.../branches/gcc-4_8-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do run } */ ++ ++int m = 9; ++ ++int main() ++{ ++ int n, x; ++ ++ n = m; ++ for (x = 0; x <= n; x++) ++ if (n == x + (x + 1) + (x + 2)) ++ return 0; ++ ++ __builtin_abort(); ++} Index: gcc/testsuite/gcc.dg/torture/pr57425-1.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/torture/pr57425-1.c (.../tags/gcc_4_8_2_release) @@ -32654,7 +32967,38 @@ 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,1796 @@ +@@ -1,3 +1,1827 @@ ++2014-05-07 Richard Biener ++ ++ PR tree-optimization/57864 ++ * gcc.dg/torture/pr57864.c: New testcase. ++ ++2014-05-06 Richard Biener ++ ++ Backport from mainline ++ 2014-04-14 Richard Biener ++ ++ PR middle-end/55022 ++ * gcc.dg/graphite/pr55022.c: New testcase. ++ ++2014-05-06 Richard Biener ++ ++ Backport from mainline ++ 2014-04-17 Richard Biener ++ ++ PR middle-end/60849 ++ * g++.dg/opt/pr60849.C: New testcase. ++ ++ 2014-04-07 Richard Biener ++ ++ PR tree-optimization/60766 ++ * gcc.dg/torture/pr60766.c: New testcase. ++ ++ 2014-04-23 Richard Biener ++ ++ PR tree-optimization/60903 ++ * gcc.dg/torture/pr60903.c: New testcase. ++ +2014-05-05 Richard Biener + + Backport from mainline @@ -34451,7 +34795,7 @@ Index: gcc/testsuite/ChangeLog 2013-10-16 Release Manager * GCC 4.8.2 released. -@@ -39,9 +1832,9 @@ +@@ -39,9 +1863,9 @@ Backport from mainline 2013-06-27 Andreas Krebbel @@ -34464,7 +34808,7 @@ Index: gcc/testsuite/ChangeLog 2013-10-04 Tobias Burnus -@@ -307,8 +2100,8 @@ +@@ -307,8 +2131,8 @@ Backport from mainline 2013-08-12 Perez Read @@ -34475,7 +34819,7 @@ Index: gcc/testsuite/ChangeLog 2013-08-11 Janus Weil -@@ -494,7 +2287,7 @@ +@@ -494,7 +2318,7 @@ 2013-06-19 Wei Mi PR rtl-optimization/57518 @@ -34484,7 +34828,7 @@ Index: gcc/testsuite/ChangeLog 2013-06-11 Tobias Burnus -@@ -623,8 +2416,8 @@ +@@ -623,8 +2447,8 @@ 2013-05-09 Martin Jambor @@ -34495,7 +34839,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-08 Marc Glisse -@@ -701,7 +2494,7 @@ +@@ -701,7 +2525,7 @@ 2013-04-25 Marek Polacek PR tree-optimization/57066 @@ -34504,7 +34848,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Jakub Jelinek -@@ -727,8 +2520,8 @@ +@@ -727,8 +2551,8 @@ Backport from mainline 2013-04-24 Vladimir Makarov @@ -34515,7 +34859,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov -@@ -735,8 +2528,8 @@ +@@ -735,8 +2559,8 @@ Backport from mainline 2013-04-22 Vladimir Makarov @@ -34526,7 +34870,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov -@@ -743,8 +2536,8 @@ +@@ -743,8 +2567,8 @@ Backport from mainline 2013-04-18 Jakub Jelinek @@ -34537,7 +34881,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Vladimir Makarov -@@ -751,8 +2544,8 @@ +@@ -751,8 +2575,8 @@ Backport from mainline 2013-04-19 Vladimir Makarov @@ -34548,7 +34892,7 @@ Index: gcc/testsuite/ChangeLog 2013-05-02 Ian Bolton -@@ -1102,7 +2895,7 @@ +@@ -1102,7 +2926,7 @@ 2013-03-29 Tobias Burnus PR fortran/56737 @@ -34557,7 +34901,7 @@ Index: gcc/testsuite/ChangeLog 2013-04-02 Richard Biener -@@ -1636,7 +3429,7 @@ +@@ -1636,7 +3460,7 @@ 2013-02-20 Jan Hubicka PR tree-optimization/56265 @@ -34566,7 +34910,7 @@ Index: gcc/testsuite/ChangeLog 2013-02-20 Richard Biener -@@ -1823,11 +3616,9 @@ +@@ -1823,11 +3647,9 @@ Avoid instrumenting duplicated memory access in the same basic block * c-c++-common/asan/no-redundant-instrumentation-1.c: New test. @@ -34795,6 +35139,24 @@ Index: gcc/testsuite/g++.dg/vect/pr60729.cc +} + +// { dg-final { cleanup-tree-dump "vect" } } +Index: gcc/testsuite/g++.dg/opt/pr60849.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr60849.C (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr60849.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,13 @@ ++// { dg-do compile } ++// { dg-options "-O2" } ++ ++int g; ++ ++extern "C" int isnan (); ++ ++void foo(float a) { ++ int (*xx)(...); ++ xx = isnan; ++ if (xx(a)) ++ g++; ++} Index: gcc/testsuite/g++.dg/opt/pr59647.C =================================================================== --- a/src/gcc/testsuite/g++.dg/opt/pr59647.C (.../tags/gcc_4_8_2_release) @@ -38325,6 +38687,41 @@ Index: gcc/builtins.def DEF_C99_BUILTIN (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) +Index: gcc/tree-ssa-loop-ivopts.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-4_8-branch) +@@ -4236,8 +4236,10 @@ + tree steptype = type; + if (POINTER_TYPE_P (type)) + steptype = sizetype; ++ steptype = unsigned_type_for (type); + +- tree_to_aff_combination (iv->step, steptype, &step); ++ tree_to_aff_combination (iv->step, TREE_TYPE (iv->step), &step); ++ aff_combination_convert (&step, steptype); + tree_to_aff_combination (niter, TREE_TYPE (niter), &nit); + aff_combination_convert (&nit, steptype); + aff_combination_mult (&nit, &step, &delta); +@@ -4245,6 +4247,8 @@ + aff_combination_add (&delta, &step); + + tree_to_aff_combination (iv->base, type, val); ++ if (!POINTER_TYPE_P (type)) ++ aff_combination_convert (val, steptype); + aff_combination_add (val, &delta); + } + +@@ -4623,7 +4627,8 @@ + + cand_value_at (loop, cand, use->stmt, desc->niter, &bnd); + +- *bound = aff_combination_to_tree (&bnd); ++ *bound = fold_convert (TREE_TYPE (cand->iv->base), ++ aff_combination_to_tree (&bnd)); + *comp = iv_elimination_compare (data, use); + + /* It is unlikely that computing the number of iterations using division Index: gcc/mode-switching.c =================================================================== --- a/src/gcc/mode-switching.c (.../tags/gcc_4_8_2_release) @@ -38458,6 +38855,30 @@ Index: gcc/tree-ssa-math-opts.c n->n = n1.n | n2.n; if (!verify_symbolic_number_p (n, stmt)) +Index: gcc/tree-ssa-propagate.c +=================================================================== +--- a/src/gcc/tree-ssa-propagate.c (.../tags/gcc_4_8_2_release) ++++ b/src/gcc/tree-ssa-propagate.c (.../branches/gcc-4_8-branch) +@@ -556,8 +556,18 @@ + /* All constants are ok. */ + break; + ++ case tcc_comparison: ++ /* GENERIC allows comparisons with non-boolean types, reject ++ those for GIMPLE. Let vector-typed comparisons pass - rules ++ for GENERIC and GIMPLE are the same here. */ ++ if (!(INTEGRAL_TYPE_P (TREE_TYPE (expr)) ++ && (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE ++ || TYPE_PRECISION (TREE_TYPE (expr)) == 1)) ++ && TREE_CODE (TREE_TYPE (expr)) != VECTOR_TYPE) ++ return false; ++ ++ /* Fallthru. */ + case tcc_binary: +- case tcc_comparison: + if (!is_gimple_val (TREE_OPERAND (expr, 0)) + || !is_gimple_val (TREE_OPERAND (expr, 1))) + return false; Index: gcc/sel-sched.c =================================================================== --- a/src/gcc/sel-sched.c (.../tags/gcc_4_8_2_release) @@ -45731,7 +46152,19 @@ Index: gcc/config.gcc ;; esac -@@ -3494,7 +3522,7 @@ +@@ -3122,6 +3150,11 @@ + ${srcdir}/config/aarch64/$def | \ + sed -e 's/^[^,]*,[ ]*//' | \ + sed -e 's/,.*$//'` ++ # Extract the architecture flags from aarch64-arches.def ++ ext_mask=`grep "^$pattern(\"$base_val\"," \ ++ ${srcdir}/config/aarch64/$def | \ ++ sed -e 's/)$//' | \ ++ sed -e 's/^.*,//'` + else + base_id=`grep "^$pattern(\"$base_val\"," \ + ${srcdir}/config/aarch64/$def | \ +@@ -3494,7 +3527,7 @@ ;; powerpc*-*-* | rs6000-*-*) @@ -45740,7 +46173,7 @@ Index: gcc/config.gcc for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do eval "val=\$with_$which" -@@ -3531,6 +3559,16 @@ +@@ -3531,6 +3564,16 @@ ;; esac done @@ -45757,7 +46190,7 @@ Index: gcc/config.gcc ;; s390*-*-*) -@@ -3587,7 +3625,7 @@ +@@ -3587,7 +3630,7 @@ case ${val} in "" | sparc | sparcv9 | sparc64 \ | v7 | cypress \ @@ -45766,7 +46199,19 @@ Index: gcc/config.gcc | sparclite | f930 | f934 | sparclite86x \ | sparclet | tsc701 \ | v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \ -@@ -3745,15 +3783,6 @@ +@@ -3661,10 +3704,8 @@ + target_cpu_default2= + case ${target} in + aarch64*-*-*) +- if test x$target_cpu_cname = x ++ if test x"$target_cpu_cname" != x + then +- target_cpu_default2=TARGET_CPU_generic +- else + target_cpu_default2=$target_cpu_cname + fi + ;; +@@ -3745,15 +3786,6 @@ cxx_target_objs="${cxx_target_objs} sh-c.o" ;; @@ -45782,7 +46227,7 @@ Index: gcc/config.gcc sparc*-*-*) # Some standard aliases. case x$with_cpu in -@@ -3765,6 +3794,17 @@ +@@ -3765,6 +3797,17 @@ ;; esac -- cgit v1.2.3