Date: Saturday, June 22, 2019 @ 21:16:32
  Author: bpiotrowski
Revision: 356789

9.1.0-2

- backport fixes for BZ#90397 and BZ#90949
- fix go provides version (FS#62862)

Added:
  gcc/trunk/bz90397.patch
  gcc/trunk/bz90949.patch
Modified:
  gcc/trunk/PKGBUILD

---------------+
 PKGBUILD      |   18 ++++++++---
 bz90397.patch |   14 ++++++++
 bz90949.patch |   88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 116 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2019-06-22 21:12:21 UTC (rev 356788)
+++ PKGBUILD    2019-06-22 21:16:32 UTC (rev 356789)
@@ -8,7 +8,7 @@
 pkgver=9.1.0
 _majorver=${pkgver:0:1}
 _islver=0.21
-pkgrel=1
+pkgrel=2
 pkgdesc='The GNU Compiler Collection'
 arch=(x86_64)
 license=(GPL LGPL FDL custom)
@@ -20,7 +20,9 @@
 source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig}
 #source=(gcc::svn://gcc.gnu.org/svn/gcc/branches/gcc-${_majorver}-branch
         http://isl.gforge.inria.fr/isl-${_islver}.tar.xz
-        c89 c99)
+        c89 c99
+        bz90397.patch
+        bz90949.patch)
 validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9  # 
bpiotrow...@archlinux.org
               86CFFCA918CF3AF47147588051E8B148A9999C34  # 
evange...@foutrelis.com
               13975A70E63C361C73AE69EF6EEB81F8981C74C7  # 
richard.guent...@gmail.com
@@ -29,7 +31,9 @@
             'SKIP'
             '777058852a3db9500954361e294881214f6ecd4b594c00da5eee974cd6a54960'
             'de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931'
-            '2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a')
+            '2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a'
+            'cc20d05bcc6cb35bf0944b391f0b0380af375f2a8a03ce1cd67835884bc41fac'
+            'c860819e730faf1621e1286ebe3a0179df6e25182b81a9ca0a3db02633982a14')
 
 _svnrev=264010
 _svnurl=svn://gcc.gnu.org/svn/gcc/branches/gcc-${_majorver}-branch
@@ -57,6 +61,12 @@
   [[ ! -d gcc ]] && ln -s gcc-${pkgver/+/-} gcc
   cd gcc
 
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90397
+  patch -p0 -i "$srcdir/bz90397.patch"
+
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90949 
+  patch -p0 -i "$srcdir/bz90949.patch"
+
   # link isl for in-tree build
   ln -s ../isl-${_islver} isl
 
@@ -332,7 +342,7 @@
 package_gcc-go() {
   pkgdesc='Go front-end for GCC'
   depends=("gcc=$pkgver-$pkgrel")
-  provides=("go=1.10.1" $pkgname-multilib)
+  provides=("go=1.12.2" $pkgname-multilib)
   replaces=($pkgname-multilib)
   conflicts=(go)
 

Added: bz90397.patch
===================================================================
--- bz90397.patch                               (rev 0)
+++ bz90397.patch       2019-06-22 21:16:32 UTC (rev 356789)
@@ -0,0 +1,14 @@
+Index: libstdc++-v3/include/std/variant
+===================================================================
+--- libstdc++-v3/include/std/variant   (revision 271082)
++++ libstdc++-v3/include/std/variant   (revision 271083)
+@@ -1556,7 +1556,8 @@
+ #endif
+ 
+       template<size_t _Np, typename _Vp>
+-      friend constexpr decltype(auto) __detail::__variant::__get(_Vp&& __v);
++      friend constexpr decltype(auto)
++      __detail::__variant::__get(_Vp&& __v) noexcept;
+ 
+       template<typename _Vp>
+       friend void* __detail::__variant::__get_storage(_Vp&& __v);

Added: bz90949.patch
===================================================================
--- bz90949.patch                               (rev 0)
+++ bz90949.patch       2019-06-22 21:16:32 UTC (rev 356789)
@@ -0,0 +1,88 @@
+Index: gcc/testsuite/gcc.c-torture/execute/pr90949.c
+===================================================================
+--- gcc/testsuite/gcc.c-torture/execute/pr90949.c      (nonexistent)
++++ gcc/testsuite/gcc.c-torture/execute/pr90949.c      (revision 272555)
+@@ -0,0 +1,42 @@
++void __attribute__ ((noipa, noinline)) my_puts (const char *str) { }
++
++void __attribute__ ((noipa, noinline)) my_free (void *p) { }
++
++
++struct Node
++{
++  struct Node *child;
++};
++
++struct Node space[2] = { };
++
++struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes)
++{
++  return &space[0];
++}
++
++void
++walk (struct Node *module, int cleanup)
++{
++  if (module == 0)
++    {
++      return;
++    }
++  if (!cleanup)
++    {
++      my_puts ("No cleanup");
++    }
++  walk (module->child, cleanup);
++  if (cleanup)
++    {
++      my_free (module);
++    }
++}
++
++int
++main ()
++{
++  struct Node *node = my_malloc (sizeof (struct Node));
++  node->child = 0;
++  walk (node, 1);
++}
+Index: gcc/tree-ssa-copy.c
+===================================================================
+--- gcc/tree-ssa-copy.c        (revision 272554)
++++ gcc/tree-ssa-copy.c        (revision 272555)
+@@ -545,13 +545,12 @@
+             duplicate_ssa_name_ptr_info (copy_of[i].value,
+                                          SSA_NAME_PTR_INFO (var));
+             /* Points-to information is cfg insensitive,
+-               but alignment info might be cfg sensitive, if it
+-               e.g. is derived from VRP derived non-zero bits.
+-               So, do not copy alignment info if the two SSA_NAMEs
+-               aren't defined in the same basic block.  */
++               but [E]VRP might record context sensitive alignment
++               info, non-nullness, etc.  So reset context sensitive
++               info if the two SSA_NAMEs aren't defined in the same
++               basic block.  */
+             if (var_bb != copy_of_bb)
+-              mark_ptr_info_alignment_unknown
+-                              (SSA_NAME_PTR_INFO (copy_of[i].value));
++              reset_flow_sensitive_info (copy_of[i].value);
+           }
+         else if (!POINTER_TYPE_P (TREE_TYPE (var))
+                  && SSA_NAME_RANGE_INFO (var)
+Index: gcc/tree-ssanames.c
+===================================================================
+--- gcc/tree-ssanames.c        (revision 272554)
++++ gcc/tree-ssanames.c        (revision 272555)
+@@ -820,7 +820,12 @@
+     {
+       /* points-to info is not flow-sensitive.  */
+       if (SSA_NAME_PTR_INFO (name))
+-      mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
++      {
++        /* [E]VRP can derive context sensitive alignment info and
++           non-nullness properties.  We must reset both.  */
++        mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name));
++        SSA_NAME_PTR_INFO (name)->pt.null = 1;
++      }
+     }
+   else
+     SSA_NAME_RANGE_INFO (name) = NULL;

Reply via email to