[arch-commits] Commit in gcc-multilib/trunk (PKGBUILD pr65882.patch pr66647.patch)

Evangelos Foutras foutrelis at archlinux.org
Thu Jun 25 03:44:02 UTC 2015


    Date: Thursday, June 25, 2015 @ 05:44:01
  Author: foutrelis
Revision: 135838

5.1.0-5

Added:
  gcc-multilib/trunk/pr66647.patch
Modified:
  gcc-multilib/trunk/PKGBUILD
  gcc-multilib/trunk/pr65882.patch

---------------+
 PKGBUILD      |   17 +++++---
 pr65882.patch |  106 ++++++++++++++++++++++++++++++++++++++------------------
 pr66647.patch |   87 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 171 insertions(+), 39 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-06-25 03:24:53 UTC (rev 135837)
+++ PKGBUILD	2015-06-25 03:44:01 UTC (rev 135838)
@@ -9,8 +9,8 @@
 pkgver=5.1.0
 _pkgver=5
 _islver=0.14.1
-pkgrel=4
-_snapshot=5-20150519
+pkgrel=5
+_snapshot=5-20150623
 pkgdesc="The GNU Compiler Collection for multilib"
 arch=('x86_64')
 license=('GPL' 'LGPL' 'FDL' 'custom')
@@ -23,10 +23,12 @@
         ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
         http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
         pr65882.patch
+        pr66647.patch
         pr66035.patch)
-md5sums=('84f261b2f23e154ec6d9bd4149851a21'
+md5sums=('69432bf92cb6cdc8399c1bfc28c4f801'
          '118d1a379abf7606a3334c98a8411c79'
-         '9a9cc98e916fd37c7b3dad50f29d2f48'
+         'f64c1781d8bcac1ea168c2b7091ca2bd'
+         '720df658a726b6e0e541c58296bd5672'
          '5b980076cd5fcbc3aff6014f306282dd')
 
 if [ -n "${_snapshot}" ]; then
@@ -54,9 +56,12 @@
   # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
   sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
 
-  # https://gcc.gnu.org/ml/gcc-patches/2015-04/msg01558.html
-  patch -p1 -i ${srcdir}/pr65882.patch
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65882
+  patch -p0 -i ${srcdir}/pr65882.patch
 
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66647
+  patch -p0 -i ${srcdir}/pr66647.patch
+
   # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66035
   patch -p1 -i ${srcdir}/pr66035.patch
 

Modified: pr65882.patch
===================================================================
--- pr65882.patch	2015-06-25 03:24:53 UTC (rev 135837)
+++ pr65882.patch	2015-06-25 03:44:01 UTC (rev 135838)
@@ -1,36 +1,7 @@
-diff --git a/gcc/cp/call.c b/gcc/cp/call.c
-index 7bdf236..689d542 100644
---- a/gcc/cp/call.c
-+++ b/gcc/cp/call.c
-@@ -5677,8 +5677,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
-     case TRUTH_ORIF_EXPR:
-     case TRUTH_AND_EXPR:
-     case TRUTH_OR_EXPR:
--      warn_logical_operator (loc, code, boolean_type_node,
--			     code_orig_arg1, arg1, code_orig_arg2, arg2);
-+      if (complain & tf_warning)
-+	warn_logical_operator (loc, code, boolean_type_node,
-+			       code_orig_arg1, arg1, code_orig_arg2, arg2);
-       /* Fall through.  */
-     case GT_EXPR:
-     case LT_EXPR:
-@@ -5686,8 +5687,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
-     case LE_EXPR:
-     case EQ_EXPR:
-     case NE_EXPR:
--      if ((code_orig_arg1 == BOOLEAN_TYPE)
--	  ^ (code_orig_arg2 == BOOLEAN_TYPE))
-+      if ((complain & tf_warning)
-+	  && ((code_orig_arg1 == BOOLEAN_TYPE)
-+	      ^ (code_orig_arg2 == BOOLEAN_TYPE)))
- 	maybe_warn_bool_compare (loc, code, arg1, arg2);
-       /* Fall through.  */
-     case PLUS_EXPR:
-diff --git a/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C
-new file mode 100644
-index 0000000..5655eb4
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C
+Index: gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C
+===================================================================
+--- gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C	(revision 0)
++++ gcc/testsuite/g++.dg/diagnostic/inhibit-warn-1.C	(revision 224864)
 @@ -0,0 +1,32 @@
 +// PR c++/65882
 +// { dg-do compile { target c++11 } }
@@ -64,3 +35,72 @@
 +{
 +  foo<int>();
 +}
+Index: gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C
+===================================================================
+--- gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C	(revision 0)
++++ gcc/testsuite/g++.dg/diagnostic/inhibit-warn-2.C	(revision 224864)
+@@ -0,0 +1,36 @@
++// PR c++/65882
++// PR c++/66467
++// { dg-do compile }
++
++template <bool>
++struct A
++{
++  typedef int type;
++};
++
++struct B
++{
++  static const int value = 0;
++};
++
++template <class>
++struct C
++{
++  typedef int type;
++};
++
++template <class>
++struct F : B {};
++
++class D
++{
++  template <class Expr>
++  typename A<F<typename C<Expr>::type>::value || B::value>::type
++  operator=(Expr); // { dg-message "declared" }
++};
++
++void fn1()
++{
++  D opt;
++  opt = 0; // { dg-error "private" }
++}
+Index: gcc/cp/call.c
+===================================================================
+--- gcc/cp/call.c	(revision 224863)
++++ gcc/cp/call.c	(revision 224864)
+@@ -5687,8 +5687,9 @@
+     case TRUTH_ORIF_EXPR:
+     case TRUTH_AND_EXPR:
+     case TRUTH_OR_EXPR:
+-      warn_logical_operator (loc, code, boolean_type_node,
+-			     code_orig_arg1, arg1, code_orig_arg2, arg2);
++      if (complain & tf_warning)
++	warn_logical_operator (loc, code, boolean_type_node,
++			       code_orig_arg1, arg1, code_orig_arg2, arg2);
+       /* Fall through.  */
+     case GT_EXPR:
+     case LT_EXPR:
+@@ -5696,8 +5697,9 @@
+     case LE_EXPR:
+     case EQ_EXPR:
+     case NE_EXPR:
+-      if ((code_orig_arg1 == BOOLEAN_TYPE)
+-	  ^ (code_orig_arg2 == BOOLEAN_TYPE))
++      if ((complain & tf_warning)
++	  && ((code_orig_arg1 == BOOLEAN_TYPE)
++	      ^ (code_orig_arg2 == BOOLEAN_TYPE)))
+ 	maybe_warn_bool_compare (loc, code, arg1, arg2);
+       /* Fall through.  */
+     case PLUS_EXPR:

Added: pr66647.patch
===================================================================
--- pr66647.patch	                        (rev 0)
+++ pr66647.patch	2015-06-25 03:44:01 UTC (rev 135838)
@@ -0,0 +1,87 @@
+Index: gcc/testsuite/g++.dg/cpp0x/alias-decl-49.C
+===================================================================
+--- gcc/testsuite/g++.dg/cpp0x/alias-decl-49.C	(revision 0)
++++ gcc/testsuite/g++.dg/cpp0x/alias-decl-49.C	(revision 224921)
+@@ -0,0 +1,54 @@
++// PR c++/66647
++// { dg-do compile { target c++11 } }
++
++template <typename _Tp> struct A
++{
++  static constexpr _Tp value = 1;
++};
++template <typename> class B
++{
++public:
++  template <typename> struct rebind
++  {
++  };
++};
++
++template <typename _Alloc, typename _Tp> class C
++{
++  template <typename _Alloc2, typename _Tp2>
++  static A<int> _S_chk (typename _Alloc2::template rebind<_Tp2> *);
++
++public:
++  using __type = decltype (_S_chk<_Alloc, _Tp> (0));
++};
++
++template <typename _Alloc, typename _Tp, int = C<_Alloc, _Tp>::__type::value>
++struct D;
++template <typename _Alloc, typename _Tp> struct D<_Alloc, _Tp, 1>
++{
++  typedef typename _Alloc::template rebind<_Tp> __type;
++};
++template <typename _Alloc> struct F
++{
++  template <typename _Tp> using rebind_alloc = typename D<_Alloc, _Tp>::__type;
++};
++template <typename _Alloc> struct __alloc_traits
++{
++  template <typename> struct rebind
++  {
++    typedef typename F<_Alloc>::template rebind_alloc<int> other;
++  };
++};
++template <typename _Alloc> struct G
++{
++  typename __alloc_traits<_Alloc>::template rebind<int>::other _Tp_alloc_type;
++};
++template <typename _Tp, typename _Alloc = B<_Tp> > class vector : G<_Alloc>
++{
++};
++
++template <int> using tfuncptr = void();
++template <int d> struct H
++{
++  vector<tfuncptr<d> > funcs;
++};
+Index: gcc/cp/pt.c
+===================================================================
+--- gcc/cp/pt.c	(revision 224920)
++++ gcc/cp/pt.c	(revision 224921)
+@@ -20975,6 +20975,12 @@
+ 	names a dependent type.  */
+   if (TREE_CODE (type) == TYPENAME_TYPE)
+     return true;
++
++  /* An alias template specialization can be dependent even if the
++     resulting type is not.  */
++  if (dependent_alias_template_spec_p (type))
++    return true;
++
+   /* -- a cv-qualified type where the cv-unqualified type is
+ 	dependent.
+      No code is necessary for this bullet; the code below handles
+@@ -21026,10 +21032,6 @@
+ 	   && (any_dependent_template_arguments_p
+ 	       (INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (type)))))
+     return true;
+-  /* For an alias template specialization, check the arguments both to the
+-     class template and the alias template.  */
+-  else if (dependent_alias_template_spec_p (type))
+-    return true;
+ 
+   /* All TYPEOF_TYPEs, DECLTYPE_TYPEs, and UNDERLYING_TYPEs are
+      dependent; if the argument of the `typeof' expression is not



More information about the arch-commits mailing list