aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/double-int.h1
-rw-r--r--gcc/rtl.h1
-rw-r--r--gcc/tree.h23
3 files changed, 21 insertions, 4 deletions
diff --git a/gcc/double-int.h b/gcc/double-int.h
index 5fe6702..2bd492a 100644
--- a/gcc/double-int.h
+++ b/gcc/double-int.h
@@ -442,6 +442,7 @@ namespace wi
{
static const enum precision_type precision_type = INL_CONST_PRECISION;
static const bool host_dependent_precision = true;
+ static const bool needs_write_val_arg = false;
static const unsigned int precision = HOST_BITS_PER_DOUBLE_INT;
static unsigned int get_precision (const double_int &);
static wi::storage_ref decompose (HOST_WIDE_INT *, unsigned int,
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 6850281..e4b6cc0 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2270,6 +2270,7 @@ namespace wi
/* This ought to be true, except for the special case that BImode
is canonicalized to STORE_FLAG_VALUE, which might be 1. */
static const bool is_sign_extended = false;
+ static const bool needs_write_val_arg = false;
static unsigned int get_precision (const rtx_mode_t &);
static wi::storage_ref decompose (HOST_WIDE_INT *, unsigned int,
const rtx_mode_t &);
diff --git a/gcc/tree.h b/gcc/tree.h
index e06a5c8..f7d2775 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -6237,6 +6237,7 @@ namespace wi
static const enum precision_type precision_type = VAR_PRECISION;
static const bool host_dependent_precision = false;
static const bool is_sign_extended = false;
+ static const bool needs_write_val_arg = false;
};
template <int N>
@@ -6262,6 +6263,7 @@ namespace wi
= N == ADDR_MAX_PRECISION ? INL_CONST_PRECISION : CONST_PRECISION;
static const bool host_dependent_precision = false;
static const bool is_sign_extended = true;
+ static const bool needs_write_val_arg = false;
static const unsigned int precision = N;
};
@@ -6293,8 +6295,14 @@ namespace wi
tree_to_poly_wide_ref to_poly_wide (const_tree);
template <int N>
- struct ints_for <generic_wide_int <extended_tree <N> >,
- int_traits <extended_tree <N> >::precision_type>
+ struct ints_for <generic_wide_int <extended_tree <N> >, INL_CONST_PRECISION>
+ {
+ typedef generic_wide_int <extended_tree <N> > extended;
+ static extended zero (const extended &);
+ };
+
+ template <int N>
+ struct ints_for <generic_wide_int <extended_tree <N> >, CONST_PRECISION>
{
typedef generic_wide_int <extended_tree <N> > extended;
static extended zero (const extended &);
@@ -6532,8 +6540,15 @@ wi::to_poly_wide (const_tree t)
template <int N>
inline generic_wide_int <wi::extended_tree <N> >
wi::ints_for <generic_wide_int <wi::extended_tree <N> >,
- wi::int_traits <wi::extended_tree <N> >::precision_type
- >::zero (const extended &x)
+ wi::INL_CONST_PRECISION>::zero (const extended &x)
+{
+ return build_zero_cst (TREE_TYPE (x.get_tree ()));
+}
+
+template <int N>
+inline generic_wide_int <wi::extended_tree <N> >
+wi::ints_for <generic_wide_int <wi::extended_tree <N> >,
+ wi::CONST_PRECISION>::zero (const extended &x)
{
return build_zero_cst (TREE_TYPE (x.get_tree ()));
}