[gcc/f21] 4.9.2-1

Jakub Jelinek jakub at fedoraproject.org
Sat Nov 1 16:49:04 UTC 2014


commit 72541ade180e1bf97b797d5b9ac646e866b3ce12
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Sat Nov 1 09:17:01 2014 +0100

    4.9.2-1

 .gitignore                 |    1 +
 gcc.spec                   |   22 ++++++--
 gcc49-libstdc++-docs.patch |    4 +-
 gcc49-pr63659.patch        |  134 ++++++++++++++++++++++++++++++++++++++++++++
 sources                    |    2 +-
 5 files changed, 155 insertions(+), 8 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 23eafeb..d9c5c08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@
 /gcc-4.9.1-20140930.tar.bz2
 /gcc-4.9.1-20141017.tar.bz2
 /gcc-4.9.1-20141024.tar.bz2
+/gcc-4.9.2-20141101.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index ced5e7f..f39355e 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20141024
-%global SVNREV 216625
-%global gcc_version 4.9.1
+%global DATE 20141101
+%global SVNREV 216995
+%global gcc_version 4.9.2
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 13
+%global gcc_release 1
 %global _unpackaged_files_terminate_build 0
 %global _performance_build 1
 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
@@ -200,6 +200,7 @@ Patch15: gcc49-color-auto.patch
 Patch16: gcc49-libgo-p224.patch
 Patch17: gcc49-aarch64-async-unw-tables.patch
 Patch18: gcc49-aarch64-unwind-opt.patch
+Patch19: gcc49-pr63659.patch
 
 Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
 
@@ -728,6 +729,7 @@ package or when debugging this package.
 rm -f libgo/go/crypto/elliptic/p224{,_test}.go
 %patch17 -p0 -b .aarch64-async-unw-tables~
 %patch18 -p0 -b .aarch64-unwind-opt~
+%patch19 -p0 -b .pr63659~
 
 %if 0%{?_enable_debug_packages}
 cat > split-debuginfo.sh <<\EOF
@@ -778,7 +780,7 @@ chmod 755 split-debuginfo.sh
 
 %patch1100 -p0 -b .cloog-ppc64le-config~
 
-sed -i -e 's/4\.9\.2/4.9.1/' gcc/BASE-VER
+sed -i -e 's/4\.9\.3/4.9.2/' gcc/BASE-VER
 echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
 
 %if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
@@ -2052,6 +2054,9 @@ fi
 %if %{build_libcilkrts}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cilk
 %endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/sanitizer
+%endif
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a
@@ -2800,6 +2805,13 @@ fi
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
 %changelog
+* Sat Nov  1 2014 Jakub Jelinek <jakub at redhat.com> 4.9.2-1
+- update from the 4.9 branch
+  - GCC 4.9.2 release
+  - PRs sanitizer/63638, sanitizer/63697, tree-optimization/63530
+- handle REG_EQ* notes in REE (PR rtl-optimization/63659)
+- include asan/lsan sanitizer/ includes
+
 * Fri Oct 24 2014 Jakub Jelinek <jakub at redhat.com> 4.9.1-13
 - update from the 4.9 branch
   - PRs bootstrap/63632, libfortran/63589, libstdc++/63500,
diff --git a/gcc49-libstdc++-docs.patch b/gcc49-libstdc++-docs.patch
index 2c8c2b8..ee8598a 100644
--- a/gcc49-libstdc++-docs.patch
+++ b/gcc49-libstdc++-docs.patch
@@ -4,7 +4,7 @@
        <a class="link" href="http://www.fsf.org/" target="_top">FSF
        </a>
      </p><p>
-+      Release 4.9.1
++      Release 4.9.2
 +    </p><p>
        Permission is granted to copy, distribute and/or modify this
        document under the terms of the GNU Free Documentation
@@ -18,7 +18,7 @@
 -  The API documentation, rendered into HTML, can be viewed online:
 +  The API documentation, rendered into HTML, can be viewed here:
  </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
-+      <a class="link" href="api/index.html" target="_top">for the 4.9.1 release, local
++      <a class="link" href="api/index.html" target="_top">for the 4.9.2 release, local
 +      </a>
 +    </p></li><li class="listitem"><p>
        <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
diff --git a/gcc49-pr63659.patch b/gcc49-pr63659.patch
new file mode 100644
index 0000000..b4762ab
--- /dev/null
+++ b/gcc49-pr63659.patch
@@ -0,0 +1,134 @@
+2014-10-31  Jakub Jelinek  <jakub at redhat.com>
+
+	PR rtl-optimization/63659
+	* ree.c (update_reg_equal_equiv_notes): New function.
+	(combine_set_extension, transform_ifelse): Use it.
+
+	* gcc.c-torture/execute/pr63659.c: New test.
+
+--- gcc/ree.c.jj	2014-10-22 15:52:18.000000000 +0200
++++ gcc/ree.c	2014-10-27 19:18:37.287412478 +0100
+@@ -266,6 +266,50 @@ typedef struct ext_cand
+ 
+ static int max_insn_uid;
+ 
++/* Update or remove REG_EQUAL or REG_EQUIV notes for INSN.  */
++
++static bool
++update_reg_equal_equiv_notes (rtx_insn *insn, enum machine_mode new_mode,
++			      enum machine_mode old_mode, enum rtx_code code)
++{
++  rtx *loc = &REG_NOTES (insn);
++  while (*loc)
++    {
++      enum reg_note kind = REG_NOTE_KIND (*loc);
++      if (kind == REG_EQUAL || kind == REG_EQUIV)
++	{
++	  rtx orig_src = XEXP (*loc, 0);
++	  /* Update equivalency constants.  Recall that RTL constants are
++	     sign-extended.  */
++	  if (GET_CODE (orig_src) == CONST_INT
++	      && HOST_BITS_PER_WIDE_INT >= GET_MODE_BITSIZE (new_mode))
++	    {
++	      if (INTVAL (orig_src) >= 0 || code == SIGN_EXTEND)
++		/* Nothing needed.  */;
++	      else
++		{
++		  /* Zero-extend the negative constant by masking out the
++		     bits outside the source mode.  */
++		  rtx new_const_int
++		    = gen_int_mode (INTVAL (orig_src)
++				    & GET_MODE_MASK (old_mode),
++				    new_mode);
++		  if (!validate_change (insn, &XEXP (*loc, 0),
++					new_const_int, true))
++		    return false;
++		}
++	      loc = &XEXP (*loc, 1);
++	    }
++	  /* Drop all other notes, they assume a wrong mode.  */
++	  else if (!validate_change (insn, loc, XEXP (*loc, 1), true))
++	    return false;
++	}
++      else
++	loc = &XEXP (*loc, 1);
++    }
++  return true;
++}
++
+ /* Given a insn (CURR_INSN), an extension candidate for removal (CAND)
+    and a pointer to the SET rtx (ORIG_SET) that needs to be modified,
+    this code modifies the SET rtx to a new SET rtx that extends the
+@@ -287,6 +331,7 @@ static bool
+ combine_set_extension (ext_cand *cand, rtx_insn *curr_insn, rtx *orig_set)
+ {
+   rtx orig_src = SET_SRC (*orig_set);
++  enum machine_mode orig_mode = GET_MODE (SET_DEST (*orig_set));
+   rtx new_set;
+   rtx cand_pat = PATTERN (cand->insn);
+ 
+@@ -323,9 +368,8 @@ combine_set_extension (ext_cand *cand, r
+ 	{
+ 	  /* Zero-extend the negative constant by masking out the bits outside
+ 	     the source mode.  */
+-	  enum machine_mode src_mode = GET_MODE (SET_DEST (*orig_set));
+ 	  rtx new_const_int
+-	    = gen_int_mode (INTVAL (orig_src) & GET_MODE_MASK (src_mode),
++	    = gen_int_mode (INTVAL (orig_src) & GET_MODE_MASK (orig_mode),
+ 			    GET_MODE (new_reg));
+ 	  new_set = gen_rtx_SET (VOIDmode, new_reg, new_const_int);
+ 	}
+@@ -364,7 +408,9 @@ combine_set_extension (ext_cand *cand, r
+ 
+   /* This change is a part of a group of changes.  Hence,
+      validate_change will not try to commit the change.  */
+-  if (validate_change (curr_insn, orig_set, new_set, true))
++  if (validate_change (curr_insn, orig_set, new_set, true)
++      && update_reg_equal_equiv_notes (curr_insn, cand->mode, orig_mode,
++				       cand->code))
+     {
+       if (dump_file)
+         {
+@@ -414,7 +460,9 @@ transform_ifelse (ext_cand *cand, rtx_in
+   ifexpr = gen_rtx_IF_THEN_ELSE (cand->mode, cond, map_srcreg, map_srcreg2);
+   new_set = gen_rtx_SET (VOIDmode, map_dstreg, ifexpr);
+ 
+-  if (validate_change (def_insn, &PATTERN (def_insn), new_set, true))
++  if (validate_change (def_insn, &PATTERN (def_insn), new_set, true)
++      && update_reg_equal_equiv_notes (def_insn, cand->mode, GET_MODE (dstreg),
++				       cand->code))
+     {
+       if (dump_file)
+         {
+--- gcc/testsuite/gcc.c-torture/execute/pr63659.c.jj	2014-10-27 19:26:57.720902738 +0100
++++ gcc/testsuite/gcc.c-torture/execute/pr63659.c	2014-10-27 19:26:36.000000000 +0100
+@@ -0,0 +1,29 @@
++/* PR rtl-optimization/63659 */
++
++int a, b, c, *d = &b, g, h, i;
++unsigned char e;
++char f;
++
++int
++main ()
++{
++  while (a)
++    {
++      for (a = 0; a; a++)
++	for (; c; c++)
++	  ;
++      if (i)
++	break;
++    }
++
++  char j = c, k = -1, l;
++  l = g = j >> h;
++  f = l == 0 ? k : k % l;
++  e = 0 ? 0 : f;
++  *d = e;
++
++  if (b != 255)
++    __builtin_abort ();
++
++  return 0;
++}
diff --git a/sources b/sources
index 6c52d35..1ba3b76 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
 e34fca0540d840e5d0f6427e98c92252  cloog-0.18.1.tar.gz
-715eda9680ef1144dec3b44b913f3b16  gcc-4.9.1-20141024.tar.bz2
+3b5578a7f9e33fb0b6321ab5283c4cbf  gcc-4.9.2-20141101.tar.bz2
 e039bfcfb6c2ab039b8ee69bf883e824  isl-0.12.2.tar.bz2


More information about the scm-commits mailing list