[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