Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thierer/534faf0772ee66c51fdfcf964ebb1655 to your computer and use it in GitHub Desktop.
Save thierer/534faf0772ee66c51fdfcf964ebb1655 to your computer and use it in GitHub Desktop.
From 94801184df727b94bf7b8d64b1f98a22f51325d7 Mon Sep 17 00:00:00 2001
From: Elliot Saba <staticfloat@gmail.com>
Date: Mon, 22 Apr 2019 19:58:09 -0400
Subject: [PATCH] Remove double `tempate <>` declarations in `wide-int.h`
This fixes compilation of GCC 5.2.0 with very recent compilers such as
GCC 8.3.0, which would otherwise fail with errors such as `error: too
many template-parameter-lists`
---
gcc/wide-int.h | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/gcc/wide-int.h b/gcc/wide-int.h
index 46f45453c015..9a71c4fea61b 100644
--- a/gcc/wide-int.h
+++ b/gcc/wide-int.h
@@ -365,21 +365,18 @@ namespace wi
inputs. Note that CONST_PRECISION and VAR_PRECISION cannot be
mixed, in order to give stronger type checking. When both inputs
are CONST_PRECISION, they must have the same precision. */
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, FLEXIBLE_PRECISION, FLEXIBLE_PRECISION>
{
typedef widest_int result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, FLEXIBLE_PRECISION, VAR_PRECISION>
{
typedef wide_int result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, FLEXIBLE_PRECISION, CONST_PRECISION>
{
@@ -389,14 +386,12 @@ namespace wi
<int_traits <T2>::precision> > result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, VAR_PRECISION, FLEXIBLE_PRECISION>
{
typedef wide_int result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, CONST_PRECISION, FLEXIBLE_PRECISION>
{
@@ -406,7 +401,6 @@ namespace wi
<int_traits <T1>::precision> > result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, CONST_PRECISION, CONST_PRECISION>
{
@@ -417,7 +411,6 @@ namespace wi
<int_traits <T1>::precision> > result_type;
};
- template <>
template <typename T1, typename T2>
struct binary_traits <T1, T2, VAR_PRECISION, VAR_PRECISION>
{
@@ -881,7 +874,6 @@ generic_wide_int <storage>::dump () const
namespace wi
{
- template <>
template <typename storage>
struct int_traits < generic_wide_int <storage> >
: public wi::int_traits <storage>
@@ -960,7 +952,6 @@ inline wide_int_ref_storage <SE>::wide_int_ref_storage (const T &x,
namespace wi
{
- template <>
template <bool SE>
struct int_traits <wide_int_ref_storage <SE> >
{
@@ -1147,7 +1138,6 @@ class GTY(()) fixed_wide_int_storage
namespace wi
{
- template <>
template <int N>
struct int_traits < fixed_wide_int_storage <N> >
{
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment