[gcc-6] 297/401: * Update to SVN 20161124 (r242827, 6.2.1) from the gcc-6-branch.

Ximin Luo infinity0 at debian.org
Wed Apr 5 15:50:11 UTC 2017


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.

commit e5d9fc5c64e6d880bb32f6a13452ff2b1a4a3d8f
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Thu Nov 24 12:28:22 2016 +0000

      * Update to SVN 20161124 (r242827, 6.2.1) from the gcc-6-branch.
    
    
    git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@9130 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/changelog                |  11 +-
 debian/patches/svn-updates.diff | 452 ++++++++++++++++++++++++++++++++++++----
 2 files changed, 416 insertions(+), 47 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 2b25c38..a1986a1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,16 +1,17 @@
-gcc-6 (6.2.1-4.2) UNRELEASED; urgency=medium
+gcc-6 (6.2.1-5) unstable; urgency=medium
 
-  * Update to SVN 20161123 (r242770, 6.2.1) from the gcc-6-branch.
+  * Update to SVN 20161124 (r242827, 6.2.1) from the gcc-6-branch.
     - Fix PR target/77822 (AArch64), PR fortran/58001, PR fortran/69741,
-      PR libstdc++/78490, PR lto/78472, PR middle-end/78305,
+      PR libstdc++/78490, PR lto/78472, PR middle-end/78305, PR ipa/78309,
       PR middle-end/78333, PR tree-optimization/78228, PR middle-end/78185,
-      PR tree-optimization/77855, PR fortran/66227.
+      PR tree-optimization/77855, PR fortran/66227, PR fortran/78297,
+      PR middle-end/78429.
   * Don't apply the ada patches for stage builds.
   * Add pkg-config to the build dependencies.
   * Drop the work around for PR libstdc++/65913.
   * gdc: Link with the shared libgphobos runtime by default. Closes: #845377.
 
- -- Matthias Klose <doko at debian.org>  Wed, 23 Nov 2016 18:25:55 +0100
+ -- Matthias Klose <doko at debian.org>  Thu, 24 Nov 2016 12:41:33 +0100
 
 gcc-6 (6.2.1-4) unstable; urgency=medium
 
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
index 7bf72c6..bf8b560 100644
--- a/debian/patches/svn-updates.diff
+++ b/debian/patches/svn-updates.diff
@@ -1,10 +1,10 @@
-# DP: updates from the 6 branch upto 20161123 (r242770).
+# DP: updates from the 6 branch upto 20161124 (r242831).
 
 last_update()
 {
 	cat > ${dir}LAST_UPDATED <EOF
-Wed Nov 23 18:13:35 CET 2016
-Wed Nov 23 17:13:35 UTC 2016 (revision 242770)
+Thu Nov 24 13:10:52 CET 2016
+Thu Nov 24 12:10:52 UTC 2016 (revision 242831)
 EOF
 }
 
@@ -6703,7 +6703,7 @@ Index: gcc/DATESTAMP
 +++ b/src/gcc/DATESTAMP	(.../branches/gcc-6-branch)
 @@ -1 +1 @@
 -20160822
-+20161123
++20161124
 Index: gcc/tree.c
 ===================================================================
 --- a/src/gcc/tree.c	(.../tags/gcc_6_2_0_release)
@@ -6755,10 +6755,10 @@ Index: gcc/tree.c
    bool ok_for_low_bound, ok_for_high_bound;
    signop sgn_c = TYPE_SIGN (TREE_TYPE (c));
  
-+  /* Short-circuit boolean types since various transformations assume that
-+     they can only take values 0 and 1.  */
++  /* Non-standard boolean types can have arbitrary precision but various
++     transformations assume that they can only take values 0 and +/-1.  */
 +  if (TREE_CODE (type) == BOOLEAN_TYPE)
-+    return integer_zerop (c) || integer_onep (c);
++    return wi::fits_to_boolean_p (c, type);
 +
  retry:
    type_low_bound = TYPE_MIN_VALUE (type);
@@ -6810,18 +6810,39 @@ Index: gcc/tree.h
  extern tree array_type_nelts (const_tree);
  
  extern tree value_member (tree, tree);
-@@ -5289,6 +5289,11 @@
+@@ -5278,6 +5278,9 @@
+ namespace wi
+ {
+   template <typename T>
++  bool fits_to_boolean_p (const T &x, const_tree);
++
++  template <typename T>
+   bool fits_to_tree_p (const T &x, const_tree);
+ 
+   wide_int min_value (const_tree);
+@@ -5287,9 +5290,21 @@
+ 
+ template <typename T>
  bool
++wi::fits_to_boolean_p (const T &x, const_tree type)
++{
++  return eq_p (x, 0) || eq_p (x, TYPE_UNSIGNED (type) ? 1 : -1);
++}
++
++template <typename T>
++bool
  wi::fits_to_tree_p (const T &x, const_tree type)
  {
-+  /* Short-circuit boolean types since various transformations assume that
-+     they can only take values 0 and 1.  */
+-  if (TYPE_SIGN (type) == UNSIGNED)
++  /* Non-standard boolean types can have arbitrary precision but various
++     transformations assume that they can only take values 0 and +/-1.  */
 +  if (TREE_CODE (type) == BOOLEAN_TYPE)
-+    return eq_p (x, 0) || eq_p (x, 1);
++    return fits_to_boolean_p (x, type);
 +
-   if (TYPE_SIGN (type) == UNSIGNED)
++  if (TYPE_UNSIGNED (type))
      return eq_p (x, zext (x, TYPE_PRECISION (type)));
    else
+     return eq_p (x, sext (x, TYPE_PRECISION (type)));
 Index: gcc/incpath.c
 ===================================================================
 --- a/src/gcc/incpath.c	(.../tags/gcc_6_2_0_release)
@@ -7134,7 +7155,34 @@ Index: gcc/ChangeLog
 ===================================================================
 --- a/src/gcc/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,900 @@
+@@ -1,3 +1,927 @@
++2016-11-24  Eric Botcazou  <ebotcazou at adacore.com>
++
++	PR middle-end/78429
++	* tree.h (wi::fits_to_boolean_p): New predicate.
++	(wi::fits_to_tree_p): Use it for boolean types.
++	* tree.c (int_fits_type_p): Likewise.
++
++2016-11-24  Martin Liska  <mliska at suse.cz>
++
++	Backported from mainline
++	2016-11-22  Martin Liska  <mliska at suse.cz>
++
++	PR ipa/78309
++	* ipa-icf.c (void sem_item::set_hash): Update m_hash_set.
++	(sem_function::get_hash): Use the new field.
++	(sem_function::parse): Remove an argument from ctor.
++	(sem_variable::parse): Likewise.
++	(sem_variable::get_hash): Use the new field.
++	(sem_item_optimizer::read_section): Use new ctor and set hash.
++	* ipa-icf.h: _hash is removed from sem_item::sem_item,
++	sem_variable::sem_variable, sem_function::sem_function.
++
++2016-11-23  Uros Bizjak  <ubizjak at gmail.com>
++
++	* config/i386/i386.md (*<any_or:code>hi_1): Fix operand 2 constraints.
++	(kxnor<mode>): Return "#" for alternative 0.
++
 +2016-11-23  Richard Biener  <rguenther at suse.de>
 +
 +	Backport from mainline
@@ -7180,7 +7228,7 @@ Index: gcc/ChangeLog
 +
 +	Backport from mainline
 +	2016-11-22  Walter Lee  <walt at tilera.com>
-+	
++
 +	* config/tilegx/tilegx.md (trap): New pattern.
 +	* config/tilepro/tilepro.md (trap): Likewise.
 +
@@ -7188,7 +7236,7 @@ Index: gcc/ChangeLog
 +
 +	Backport from mainline
 +	2016-11-22  Walter Lee  <walt at tilera.com>
-+	
++
 +	* config/tilegx/tilegx.md (*zero_extract): Use
 +	define_insn_and_split instead of define_insn; Handle pos + size >
 +	64.
@@ -8035,7 +8083,7 @@ Index: gcc/ChangeLog
  2016-08-22  Release Manager
  
  	* GCC 6.2.0 released.
-@@ -205,9 +1102,9 @@
+@@ -205,9 +1129,9 @@
  
  2016-08-09  Martin Jambor  <mjambor at suse.cz>
  
@@ -9835,6 +9883,22 @@ Index: gcc/testsuite/gfortran.dg/interface_6.f90
  END INTERFACE BAD8
  real :: a, b
  integer :: i, j
+Index: gcc/testsuite/gfortran.dg/pr78297.f90
+===================================================================
+--- a/src/gcc/testsuite/gfortran.dg/pr78297.f90	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gfortran.dg/pr78297.f90	(.../branches/gcc-6-branch)
+@@ -0,0 +1,11 @@
++! { dg-do compile }
++module m
++   real :: a(2), b(2)
++   real :: c(2), d(2)
++   equivalence (a, b)
++   equivalence (c, d)
++   common /xcom/ a
++end
++block data
++   use m
++end block data
 Index: gcc/testsuite/gfortran.dg/inquire_17.f90
 ===================================================================
 --- a/src/gcc/testsuite/gfortran.dg/inquire_17.f90	(.../tags/gcc_6_2_0_release)
@@ -11420,6 +11484,33 @@ Index: gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
 -verbose result
 +dump_compare $src $options
  return 1
+Index: gcc/testsuite/gcc.c-torture/compile/20161124-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/compile/20161124-1.c	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/testsuite/gcc.c-torture/compile/20161124-1.c	(.../branches/gcc-6-branch)
+@@ -0,0 +1,22 @@
++/* PR middle-end/78429 */
++/* Testcase by Chengnian Sun <chengniansun at gmail.com> */
++
++int a[6];
++char b;
++unsigned c;
++short d;
++volatile int e;
++
++int foo (void)
++{
++  int f;
++  for (; c <= 2; c++) {
++    d = 3;
++    for (; d >= 0; d--) {
++      int g = b;
++      f = a[d] || b;
++    }
++    f || e;
++  }
++  return 0;
++}
 Index: gcc/testsuite/gnat.dg/renaming11.adb
 ===================================================================
 --- a/src/gcc/testsuite/gnat.dg/renaming11.adb	(.../tags/gcc_6_2_0_release)
@@ -11860,10 +11951,23 @@ Index: gcc/testsuite/gcc.dg/pr78333.c
 ===================================================================
 --- a/src/gcc/testsuite/gcc.dg/pr78333.c	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/testsuite/gcc.dg/pr78333.c	(.../branches/gcc-6-branch)
-@@ -0,0 +1,9 @@
+@@ -0,0 +1,22 @@
 +/* { dg-do link } */
 +/* { dg-options "-finstrument-functions" } */
 +
++/* Add empty implementations of __cyg_profile_func_enter() and
++   __cyg_profile_func_exit() to avoid problems on non-glibc
++   systems.  */
++void __attribute__((no_instrument_function))
++__cyg_profile_func_enter(void *this_fn, void *call_site)
++{
++}
++
++void __attribute__((no_instrument_function))
++__cyg_profile_func_exit(void *this_fn, void *call_site)
++{
++}
++
 +extern inline __attribute__((gnu_inline, always_inline)) int foo () { }
 +int main()
 +{
@@ -12665,7 +12769,25 @@ Index: gcc/testsuite/ChangeLog
 ===================================================================
 --- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,827 @@
+@@ -1,3 +1,845 @@
++2016-11-24  Eric Botcazou  <ebotcazou at adacore.com>
++
++	* gcc.c-torture/compile/20161124-1.c: New test.
++
++2016-11-24  Christophe Lyon  <christophe.lyon at linaro.org>
++
++	Backport from mainline
++	2016-11-17  Christophe Lyon  <christophe.lyon at linaro.org>
++
++	* gcc.dg/pr78333.c: Add empty implementations of
++	__cyg_profile_func_enter() and __cyg_profile_func_exit() to avoid
++	problems on non-glibc systems.
++
++2016-11-23  Steven G. Kargl  <kargl at gcc.gnu.org>
++
++	PR fortran/78297
++	* gfortran.dg/pr78297.f90: New test.
++
 +2016-11-23  Janus Weil  <janus at gcc.gnu.org>
 +
 +	Backport from trunk
@@ -13493,7 +13615,7 @@ Index: gcc/testsuite/ChangeLog
  2016-08-22  Release Manager
  
  	* GCC 6.2.0 released.
-@@ -150,8 +974,8 @@
+@@ -150,8 +992,8 @@
  
  2016-08-09  Martin Jambor  <mjambor at suse.cz>
  
@@ -13504,7 +13626,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-08-09  Richard Biener  <rguenther at suse.de>
  
-@@ -276,8 +1100,8 @@
+@@ -276,8 +1118,8 @@
  
  2016-07-20  Martin Jambor  <mjambor at suse.cz>
  
@@ -13515,7 +13637,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-07-19  Jakub Jelinek  <jakub at redhat.com>
  
-@@ -418,7 +1242,7 @@
+@@ -418,7 +1260,7 @@
  	2016-07-06  Yuri Rumyantsev  <ysrumyan at gmail.com>
  
  	PR tree-optimization/71518
@@ -13524,7 +13646,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-07-09  Thomas Koenig  <tkoenig at gcc.gnu.org>
  
-@@ -1639,7 +2463,7 @@
+@@ -1639,7 +2481,7 @@
  	* g++.dg/cpp1y/vla13.C: Same.
  	* g++.dg/cpp1y/vla14.C: Same.
  	* g++.dg/cpp1y/vla3.C: Same.
@@ -13533,7 +13655,7 @@ Index: gcc/testsuite/ChangeLog
  	* g++.dg/ubsan/vla-1.C: Same.
  
  2016-04-14  Marek Polacek  <polacek at redhat.com>
-@@ -1671,7 +2495,7 @@
+@@ -1671,7 +2513,7 @@
  	* g++.dg/cpp1y/vla13.C: New test.
  	* g++.dg/cpp1y/vla14.C: New test.
  	* g++.dg/cpp1y/vla3.C: Restore deleted test.
@@ -13542,7 +13664,7 @@ Index: gcc/testsuite/ChangeLog
  	* g++.dg/ubsan/vla-1.C: Disable exceptions.
  
  2016-04-13  Jakub Jelinek  <jakub at redhat.com>
-@@ -1699,8 +2523,8 @@
+@@ -1699,8 +2541,8 @@
  2016-04-13  Marek Polacek  <polacek at redhat.com>
  
  	PR c/70436
@@ -13553,7 +13675,7 @@ Index: gcc/testsuite/ChangeLog
  
  2016-04-13  Ilya Enkovich  <ilya.enkovich at intel.com>
  
-@@ -1947,7 +2771,7 @@
+@@ -1947,7 +2789,7 @@
  2016-04-06  Vladimir Makarov  <vmakarov at redhat.com>
  
  	PR rtl-optimization/70398
@@ -18272,6 +18394,21 @@ Index: gcc/fortran/trans-common.c
   
        if (mpz_sgn (extent) < 0)
          mpz_set_ui (extent, 0);
+@@ -1229,8 +1242,12 @@
+ 	  {
+ 	    c = gfc_get_common_head ();
+ 	    /* We've lost the real location, so use the location of the
+-	       enclosing procedure.  */
+-	    c->where = ns->proc_name->declared_at;
++	       enclosing procedure.  If we're in a BLOCK DATA block, then
++	       use the location in the sym_root.  */
++	    if (ns->proc_name)
++	      c->where = ns->proc_name->declared_at;
++	    else if (ns->is_block_data)
++	      c->where = ns->sym_root->n.sym->declared_at;
+ 	    strcpy (c->name, z->module);
+ 	  }
+ 	else
 Index: gcc/fortran/array.c
 ===================================================================
 --- a/src/gcc/fortran/array.c	(.../tags/gcc_6_2_0_release)
@@ -18422,7 +18559,12 @@ Index: gcc/fortran/ChangeLog
 ===================================================================
 --- a/src/gcc/fortran/ChangeLog	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/fortran/ChangeLog	(.../branches/gcc-6-branch)
-@@ -1,3 +1,292 @@
+@@ -1,3 +1,297 @@
++2016-11-23  Steven G. Kargl  <kargl at gcc.gnu.org>
++
++	PR fortran/78297
++	* trans-common.c (finish_equivalences): Do not dereference a NULL pointer.
++
 +2016-11-23  Janus Weil  <janus at gcc.gnu.org>
 +
 +	Backport from trunk
@@ -592377,7 +592519,28 @@ Index: gcc/config/i386/i386.md
  ;; Mapping of logic operators
  (define_code_iterator any_logic [and ior xor])
  (define_code_iterator any_or [ior xor])
-@@ -9675,7 +9684,7 @@
+@@ -8751,7 +8760,7 @@
+   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,rm,!k")
+ 	(any_or:HI
+ 	 (match_operand:HI 1 "nonimmediate_operand" "%0,0,k")
+-	 (match_operand:HI 2 "general_operand" "<g>,r<i>,k")))
++	 (match_operand:HI 2 "general_operand" "rmn,rn,k")))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (<CODE>, HImode, operands)"
+   "@
+@@ -8833,7 +8842,10 @@
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_AVX512F"
+ {
+-  if (which_alternative == 1 && <MODE>mode == QImode && TARGET_AVX512DQ)
++  if (which_alternative == 0)
++    return "#";
++
++  if (<MODE>mode == QImode && TARGET_AVX512DQ)
+     return "kxnorb\t{%2, %1, %0|%0, %1, %2}";
+   return "kxnorw\t{%2, %1, %0|%0, %1, %2}";
+ }
+@@ -9675,7 +9687,7 @@
    "ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;")
  
  (define_insn "*ashl<mode>3_doubleword"
@@ -592386,7 +592549,7 @@ Index: gcc/config/i386/i386.md
  	(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0")
  		    (match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c")))
     (clobber (reg:CC FLAGS_REG))]
-@@ -10308,7 +10317,7 @@
+@@ -10308,7 +10320,7 @@
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*<shift_insn><mode>3_doubleword"
@@ -592395,7 +592558,7 @@ Index: gcc/config/i386/i386.md
  	(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
  			 (match_operand:QI 2 "nonmemory_operand" "<S>c")))
     (clobber (reg:CC FLAGS_REG))]
-@@ -10873,8 +10882,9 @@
+@@ -10873,8 +10885,9 @@
    [(set (match_dup 0)
  	(rotatert:SWI48 (match_dup 1) (match_dup 2)))]
  {
@@ -592407,7 +592570,7 @@ Index: gcc/config/i386/i386.md
  })
  
  (define_split
-@@ -10940,8 +10950,9 @@
+@@ -10940,8 +10953,9 @@
    [(set (match_dup 0)
  	(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))]
  {
@@ -592419,7 +592582,7 @@ Index: gcc/config/i386/i386.md
  })
  
  (define_split
-@@ -12805,9 +12816,9 @@
+@@ -12805,9 +12819,9 @@
  
  (define_expand "ctz<mode>2"
    [(parallel
@@ -592432,7 +592595,7 @@ Index: gcc/config/i386/i386.md
       (clobber (reg:CC FLAGS_REG))])])
  
  ; False dependency happens when destination is only updated by tzcnt,
-@@ -12855,8 +12866,8 @@
+@@ -12855,8 +12869,8 @@
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ctz<mode>2"
@@ -592443,7 +592606,7 @@ Index: gcc/config/i386/i386.md
     (clobber (reg:CC FLAGS_REG))]
    ""
  {
-@@ -12881,15 +12892,78 @@
+@@ -12881,15 +12895,78 @@
         (const_string "0")))
     (set_attr "mode" "<MODE>")])
  
@@ -592526,7 +592689,7 @@ Index: gcc/config/i386/i386.md
        (clobber (reg:CC FLAGS_REG))])]
    ""
  {
-@@ -12903,9 +12977,9 @@
+@@ -12903,9 +12980,9 @@
  
  (define_expand "clz<mode>2_lzcnt"
    [(parallel
@@ -592539,7 +592702,7 @@ Index: gcc/config/i386/i386.md
       (clobber (reg:CC FLAGS_REG))])]
    "TARGET_LZCNT")
  
-@@ -12942,8 +13016,8 @@
+@@ -12942,8 +13019,8 @@
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*clz<mode>2_lzcnt"
@@ -592550,7 +592713,7 @@ Index: gcc/config/i386/i386.md
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_LZCNT"
    "lzcnt{<imodesuffix>}\t{%1, %0|%0, %1}"
-@@ -12951,6 +13025,69 @@
+@@ -12951,6 +13028,69 @@
     (set_attr "type" "bitmanip")
     (set_attr "mode" "<MODE>")])
  
@@ -592620,7 +592783,7 @@ Index: gcc/config/i386/i386.md
  ;; BMI instructions.
  (define_insn "*bmi_andn_<mode>"
    [(set (match_operand:SWI48 0 "register_operand" "=r,r")
-@@ -17383,14 +17520,6 @@
+@@ -17383,14 +17523,6 @@
  ;; Their operands are not commutative, and thus they may be used in the
  ;; presence of -0.0 and NaN.
  
@@ -592635,7 +592798,7 @@ Index: gcc/config/i386/i386.md
  (define_insn "*ieee_s<ieee_maxmin><mode>3"
    [(set (match_operand:MODEF 0 "register_operand" "=x,v")
  	(unspec:MODEF
-@@ -18530,7 +18659,7 @@
+@@ -18530,7 +18662,7 @@
    [(prefetch (match_operand 0 "address_operand")
  	     (match_operand:SI 1 "const_int_operand")
  	     (match_operand:SI 2 "const_int_operand"))]
@@ -592644,7 +592807,7 @@ Index: gcc/config/i386/i386.md
  {
    bool write = INTVAL (operands[1]) != 0;
    int locality = INTVAL (operands[2]);
-@@ -18538,15 +18667,36 @@
+@@ -18538,15 +18670,36 @@
    gcc_assert (IN_RANGE (locality, 0, 3));
  
    /* Use 3dNOW prefetch in case we are asking for write prefetch not
@@ -592689,7 +592852,7 @@ Index: gcc/config/i386/i386.md
  })
  
  (define_insn "*prefetch_sse"
-@@ -18574,7 +18724,7 @@
+@@ -18574,7 +18727,7 @@
    [(prefetch (match_operand 0 "address_operand" "p")
  	     (match_operand:SI 1 "const_int_operand" "n")
  	     (const_int 3))]
@@ -592698,7 +592861,7 @@ Index: gcc/config/i386/i386.md
  {
    if (INTVAL (operands[1]) == 0)
      return "prefetch\t%a0";
-@@ -19231,13 +19381,6 @@
+@@ -19231,13 +19384,6 @@
    [(set_attr "type" "other")
     (set_attr "length" "3")])
  
@@ -594400,7 +594563,79 @@ Index: gcc/ipa-icf.c
 ===================================================================
 --- a/src/gcc/ipa-icf.c	(.../tags/gcc_6_2_0_release)
 +++ b/src/gcc/ipa-icf.c	(.../branches/gcc-6-branch)
-@@ -1185,11 +1185,12 @@
+@@ -131,27 +131,20 @@
+ 
+ /* Constructor for key value pair, where _ITEM is key and _INDEX is a target.  */
+ 
+-sem_usage_pair::sem_usage_pair (sem_item *_item, unsigned int _index):
+-  item (_item), index (_index)
++sem_usage_pair::sem_usage_pair (sem_item *_item, unsigned int _index)
++: item (_item), index (_index)
+ {
+ }
+ 
+-/* Semantic item constructor for a node of _TYPE, where STACK is used
+-   for bitmap memory allocation.  */
+-
+-sem_item::sem_item (sem_item_type _type,
+-		    bitmap_obstack *stack): type (_type), m_hash (0)
++sem_item::sem_item (sem_item_type _type, bitmap_obstack *stack)
++: type (_type), m_hash (-1), m_hash_set (false)
+ {
+   setup (stack);
+ }
+ 
+-/* Semantic item constructor for a node of _TYPE, where STACK is used
+-   for bitmap memory allocation. The item is based on symtab node _NODE
+-   with computed _HASH.  */
+-
+ sem_item::sem_item (sem_item_type _type, symtab_node *_node,
+-		    hashval_t _hash, bitmap_obstack *stack): type(_type),
+-  node (_node), m_hash (_hash)
++		    bitmap_obstack *stack)
++: type (_type), node (_node), m_hash (-1), m_hash_set (false)
+ {
+   decl = node->decl;
+   setup (stack);
+@@ -230,23 +223,20 @@
+ void sem_item::set_hash (hashval_t hash)
+ {
+   m_hash = hash;
++  m_hash_set = true;
+ }
+ 
+ /* Semantic function constructor that uses STACK as bitmap memory stack.  */
+ 
+-sem_function::sem_function (bitmap_obstack *stack): sem_item (FUNC, stack),
+-  m_checker (NULL), m_compared_func (NULL)
++sem_function::sem_function (bitmap_obstack *stack)
++: sem_item (FUNC, stack), m_checker (NULL), m_compared_func (NULL)
+ {
+   bb_sizes.create (0);
+   bb_sorted.create (0);
+ }
+ 
+-/*  Constructor based on callgraph node _NODE with computed hash _HASH.
+-    Bitmap STACK is used for memory allocation.  */
+-sem_function::sem_function (cgraph_node *node, hashval_t hash,
+-			    bitmap_obstack *stack):
+-  sem_item (FUNC, node, hash, stack),
+-  m_checker (NULL), m_compared_func (NULL)
++sem_function::sem_function (cgraph_node *node, bitmap_obstack *stack)
++: sem_item (FUNC, node, stack), m_checker (NULL), m_compared_func (NULL)
+ {
+   bb_sizes.create (0);
+   bb_sorted.create (0);
+@@ -279,7 +269,7 @@
+ hashval_t
+ sem_function::get_hash (void)
+ {
+-  if (!m_hash)
++  if (!m_hash_set)
+     {
+       inchash::hash hstate;
+       hstate.add_int (177454); /* Random number for function type.  */
+@@ -1185,11 +1175,12 @@
  	    fprintf (dump_file,
  		     "Wrapper cannot be created because of COMDAT\n");
  	}
@@ -594415,6 +594650,139 @@ Index: gcc/ipa-icf.c
          }
        /* TODO: We can also deal with variadic functions never calling
  	 VA_START.  */
+@@ -1702,7 +1693,7 @@
+       || DECL_STATIC_DESTRUCTOR (node->decl))
+     return NULL;
+ 
+-  sem_function *f = new sem_function (node, 0, stack);
++  sem_function *f = new sem_function (node, stack);
+ 
+   f->init ();
+ 
+@@ -1805,19 +1796,12 @@
+     return (*bb_dict)[source] == target;
+ }
+ 
+-
+-/* Semantic variable constructor that uses STACK as bitmap memory stack.  */
+-
+ sem_variable::sem_variable (bitmap_obstack *stack): sem_item (VAR, stack)
+ {
+ }
+ 
+-/*  Constructor based on varpool node _NODE with computed hash _HASH.
+-    Bitmap STACK is used for memory allocation.  */
+-
+-sem_variable::sem_variable (varpool_node *node, hashval_t _hash,
+-			    bitmap_obstack *stack): sem_item(VAR,
+-				  node, _hash, stack)
++sem_variable::sem_variable (varpool_node *node, bitmap_obstack *stack)
++: sem_item (VAR, node, stack)
+ {
+   gcc_checking_assert (node);
+   gcc_checking_assert (get_node ());
+@@ -2102,7 +2086,7 @@
+       || node->alias)
+     return NULL;
+ 
+-  sem_variable *v = new sem_variable (node, 0, stack);
++  sem_variable *v = new sem_variable (node, stack);
+ 
+   v->init ();
+ 
+@@ -2114,7 +2098,7 @@
+ hashval_t
+ sem_variable::get_hash (void)
+ {
+-  if (m_hash)
++  if (m_hash_set)
+     return m_hash;
+ 
+   /* All WPA streamed in symbols should have their hashes computed at compile
+@@ -2281,8 +2265,9 @@
+ 
+ unsigned int sem_item_optimizer::class_id = 0;
+ 
+-sem_item_optimizer::sem_item_optimizer (): worklist (0), m_classes (0),
+-  m_classes_count (0), m_cgraph_node_hooks (NULL), m_varpool_node_hooks (NULL)
++sem_item_optimizer::sem_item_optimizer ()
++: worklist (0), m_classes (0), m_classes_count (0), m_cgraph_node_hooks (NULL),
++  m_varpool_node_hooks (NULL)
+ {
+   m_items.create (0);
+   bitmap_obstack_initialize (&m_bmstack);
+@@ -2402,13 +2387,17 @@
+ 	{
+ 	  cgraph_node *cnode = dyn_cast <cgraph_node *> (node);
+ 
+-	  m_items.safe_push (new sem_function (cnode, hash, &m_bmstack));
++	  sem_function *fn = new sem_function (cnode, &m_bmstack);
++	  fn->set_hash (hash);
++	  m_items.safe_push (fn);
+ 	}
+       else
+ 	{
+ 	  varpool_node *vnode = dyn_cast <varpool_node *> (node);
+ 
+-	  m_items.safe_push (new sem_variable (vnode, hash, &m_bmstack));
++	  sem_variable *var = new sem_variable (vnode, &m_bmstack);
++	  var->set_hash (hash);
++	  m_items.safe_push (var);
+ 	}
+     }
+ 
+Index: gcc/ipa-icf.h
+===================================================================
+--- a/src/gcc/ipa-icf.h	(.../tags/gcc_6_2_0_release)
++++ b/src/gcc/ipa-icf.h	(.../branches/gcc-6-branch)
+@@ -151,10 +151,8 @@
+   sem_item (sem_item_type _type, bitmap_obstack *stack);
+ 
+   /* Semantic item constructor for a node of _TYPE, where STACK is used
+-     for bitmap memory allocation. The item is based on symtab node _NODE
+-     with computed _HASH.  */
+-  sem_item (sem_item_type _type, symtab_node *_node, hashval_t _hash,
+-	    bitmap_obstack *stack);
++     for bitmap memory allocation.  The item is based on symtab node _NODE.  */
++  sem_item (sem_item_type _type, symtab_node *_node, bitmap_obstack *stack);
+ 
+   virtual ~sem_item ();
+ 
+@@ -274,6 +272,9 @@
+   /* Hash of item.  */
+   hashval_t m_hash;
+ 
++  /* Indicated whether a hash value has been set or not.  */
++  bool m_hash_set;
++
+ private:
+   /* Initialize internal data structures. Bitmap STACK is used for
+      bitmap memory allocation process.  */
+@@ -286,9 +287,9 @@
+   /* Semantic function constructor that uses STACK as bitmap memory stack.  */
+   sem_function (bitmap_obstack *stack);
+ 
+-  /*  Constructor based on callgraph node _NODE with computed hash _HASH.
++  /*  Constructor based on callgraph node _NODE.
+       Bitmap STACK is used for memory allocation.  */
+-  sem_function (cgraph_node *_node, hashval_t _hash, bitmap_obstack *stack);
++  sem_function (cgraph_node *_node, bitmap_obstack *stack);
+ 
+   ~sem_function ();
+ 
+@@ -394,10 +395,10 @@
+   /* Semantic variable constructor that uses STACK as bitmap memory stack.  */
+   sem_variable (bitmap_obstack *stack);
+ 
+-  /*  Constructor based on callgraph node _NODE with computed hash _HASH.
++  /*  Constructor based on callgraph node _NODE.
+       Bitmap STACK is used for memory allocation.  */
+ 
+-  sem_variable (varpool_node *_node, hashval_t _hash, bitmap_obstack *stack);
++  sem_variable (varpool_node *_node, bitmap_obstack *stack);
+ 
+   inline virtual void init_wpa (void) {}
+ 
 Index: gcc
 ===================================================================
 --- a/src/gcc	(.../tags/gcc_6_2_0_release)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git



More information about the Reproducible-commits mailing list