public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/fold-GCC_VERSION-for-old)] Start using static_assert.
@ 2022-05-05 12:39 Martin Liska
  0 siblings, 0 replies; only message in thread
From: Martin Liska @ 2022-05-05 12:39 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:a610603daddd45de3a6a218006ffa6d1f8855e1c

commit a610603daddd45de3a6a218006ffa6d1f8855e1c
Author: Martin Liska <mliska@suse.cz>
Date:   Wed May 4 21:17:54 2022 +0200

    Start using static_assert.
    
    As we require a c++11 compliant compiler, static_assert is always
    available.
    
    gcc/ChangeLog:
    
            * system.h (STATIC_ASSERT): Remove.
            * basic-block.h (STATIC_ASSERT): Use normal static_assert.
    
    gcc/ChangeLog:
    
            * basic-block.h (static_assert): Use static_assert directly.
            * bitmap.h (Traits>::base_bitmap_view): Likewise.
            * common/config/i386/i386-common.cc (STATIC_ASSERT): Likewise.
            (static_assert): Likewise.
            * config/aarch64/aarch64-sve-builtins-shapes.cc (struct binary_imm_narrowb_base): Likewise.
            (struct binary_imm_narrowt_base): Likewise.
            (struct unary_narrowb_base): Likewise.
            (struct unary_narrowt_base): Likewise.
            * config/i386/i386-builtins.cc (BDESC_VERIFYS): Likewise.
            * config/i386/i386-options.cc (STATIC_ASSERT): Likewise.
            (static_assert): Likewise.
            * config/i386/i386.h (STATIC_ASSERT): Likewise.
            (static_assert): Likewise.
            * dumpfile.cc (make_item_for_dump_dec): Likewise.
            * expmed.cc (make_tree): Likewise.
            * input.h (STATIC_ASSERT): Likewise.
            (static_assert): Likewise.
            * ira-build.cc (ira_conflict_vector_profitable_p): Likewise.
            * lto-streamer.h (STATIC_ASSERT): Likewise.
            (static_assert): Likewise.
            * lto-wrapper.cc: Likewise.
            * poly-int.h (C>::poly_int): Likewise.
            (maybe_eq): Likewise.
            (print_dec): Likewise.
            * profile-count.cc (profile_count::to_frequency): Likewise.
            * rtl.h (subreg_shape::unique_id): Likewise.
            * system.h (STATIC_ASSERT): Likewise.
            * tree.h (TYPE_VECTOR_SUBPARTS): Likewise.
            (SET_TYPE_VECTOR_SUBPARTS): Likewise.
            * wide-int.h (wide_int_storage::wide_int_storage): Likewise.
            (wide_int_storage>::get_binary_result): Likewise.
            (N>::set_len): Likewise.
            (wi::mask): Likewise.
            (wi::shifted_mask): Likewise.
    
    gcc/c-family/ChangeLog:
    
            * c-omp.cc (c_omp_split_clauses): Use static_assert directly.
    
    gcc/cp/ChangeLog:
    
            * cp-tree.h (STATIC_ASSERT): Use static_assert directly.
    
    gcc/fortran/ChangeLog:
    
            * openmp.cc (resolve_omp_clauses): Use static_assert directly.

Diff:
---
 gcc/basic-block.h                                 |  5 +----
 gcc/bitmap.h                                      |  2 +-
 gcc/c-family/c-omp.cc                             |  2 +-
 gcc/common/config/i386/i386-common.cc             |  2 +-
 gcc/config/aarch64/aarch64-sve-builtins-shapes.cc |  8 ++++----
 gcc/config/i386/i386-builtins.cc                  |  2 +-
 gcc/config/i386/i386-options.cc                   |  2 +-
 gcc/config/i386/i386.h                            |  2 +-
 gcc/cp/cp-tree.h                                  |  2 +-
 gcc/dumpfile.cc                                   |  2 +-
 gcc/expmed.cc                                     |  2 +-
 gcc/fortran/openmp.cc                             |  2 +-
 gcc/input.h                                       |  2 +-
 gcc/ira-build.cc                                  |  2 +-
 gcc/lto-streamer.h                                |  2 +-
 gcc/lto-wrapper.cc                                |  2 +-
 gcc/poly-int.h                                    | 10 +++++-----
 gcc/profile-count.cc                              |  2 +-
 gcc/rtl.h                                         |  6 +++---
 gcc/system.h                                      |  9 ---------
 gcc/tree.h                                        |  4 ++--
 gcc/wide-int.h                                    | 18 +++++++++---------
 22 files changed, 39 insertions(+), 51 deletions(-)

diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index e3fff1f6975..fe81b6d90cc 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -158,10 +158,7 @@ struct GTY((chain_next ("%h.next_bb"), chain_prev ("%h.prev_bb"))) basic_block_d
 /* This ensures that struct gimple_bb_info is smaller than
    struct rtl_bb_info, so that inlining the former into basic_block_def
    is the better choice.  */
-typedef int __assert_gimple_bb_smaller_rtl_bb
-              [(int) sizeof (struct rtl_bb_info)
-               - (int) sizeof (struct gimple_bb_info)];
-
+static_assert (sizeof (rtl_bb_info) >= sizeof (gimple_bb_info));
 
 #define BB_FREQ_MAX 10000
 
diff --git a/gcc/bitmap.h b/gcc/bitmap.h
index e7bf67a5474..3c61c6dcfb7 100644
--- a/gcc/bitmap.h
+++ b/gcc/bitmap.h
@@ -1005,7 +1005,7 @@ base_bitmap_view<T, Traits>::base_bitmap_view (const T &array,
   /* The code currently assumes that each element of ARRAY corresponds
      to exactly one bitmap_element.  */
   const size_t array_element_bits = CHAR_BIT * sizeof (array_element_type);
-  STATIC_ASSERT (BITMAP_ELEMENT_ALL_BITS % array_element_bits == 0);
+  static_assert (BITMAP_ELEMENT_ALL_BITS % array_element_bits == 0);
   size_t array_step = BITMAP_ELEMENT_ALL_BITS / array_element_bits;
   size_t array_size = Traits::size (array);
 
diff --git a/gcc/c-family/c-omp.cc b/gcc/c-family/c-omp.cc
index 777cdc65572..e7a5d0a18af 100644
--- a/gcc/c-family/c-omp.cc
+++ b/gcc/c-family/c-omp.cc
@@ -2589,7 +2589,7 @@ c_omp_split_clauses (location_t loc, enum tree_code code,
 		    continue;
 		  break;
 		case C_OMP_CLAUSE_SPLIT_FOR:
-		  STATIC_ASSERT (C_OMP_CLAUSE_SPLIT_SECTIONS
+		  static_assert (C_OMP_CLAUSE_SPLIT_SECTIONS
 				 == C_OMP_CLAUSE_SPLIT_FOR
 				 && (C_OMP_CLAUSE_SPLIT_TASKLOOP
 				     == C_OMP_CLAUSE_SPLIT_FOR)
diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc
index 07fdd045f30..e4d30e95817 100644
--- a/gcc/common/config/i386/i386-common.cc
+++ b/gcc/common/config/i386/i386-common.cc
@@ -1834,7 +1834,7 @@ const char *const processor_names[] =
 };
 
 /* Guarantee that the array is aligned with enum processor_type.  */
-STATIC_ASSERT (ARRAY_SIZE (processor_names) == PROCESSOR_max);
+static_assert (ARRAY_SIZE (processor_names) == PROCESSOR_max);
 
 const pta processor_alias_table[] =
 {
diff --git a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
index f57f926980d..7f951ef196e 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
+++ b/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
@@ -506,7 +506,7 @@ struct binary_imm_narrowb_base : public overloaded_base<0>
   build (function_builder &b, const function_group_info &group) const OVERRIDE
   {
     b.add_overloaded_functions (group, MODE_n);
-    STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
+    static_assert (CLASS == function_resolver::SAME_TYPE_CLASS
 		   || CLASS == TYPE_unsigned);
     if (CLASS == TYPE_unsigned)
       build_all (b, "vhu0,v0,su64", group, MODE_n);
@@ -531,7 +531,7 @@ struct binary_imm_narrowt_base : public overloaded_base<0>
   build (function_builder &b, const function_group_info &group) const OVERRIDE
   {
     b.add_overloaded_functions (group, MODE_n);
-    STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
+    static_assert (CLASS == function_resolver::SAME_TYPE_CLASS
 		   || CLASS == TYPE_unsigned);
     if (CLASS == TYPE_unsigned)
       build_all (b, "vhu0,vhu0,v0,su64", group, MODE_n);
@@ -969,7 +969,7 @@ struct unary_narrowb_base : public overloaded_base<0>
   build (function_builder &b, const function_group_info &group) const OVERRIDE
   {
     b.add_overloaded_functions (group, MODE_none);
-    STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
+    static_assert (CLASS == function_resolver::SAME_TYPE_CLASS
 		   || CLASS == TYPE_unsigned);
     if (CLASS == TYPE_unsigned)
       build_all (b, "vhu0,v0", group, MODE_none);
@@ -994,7 +994,7 @@ struct unary_narrowt_base : public overloaded_base<0>
   build (function_builder &b, const function_group_info &group) const OVERRIDE
   {
     b.add_overloaded_functions (group, MODE_none);
-    STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
+    static_assert (CLASS == function_resolver::SAME_TYPE_CLASS
 		   || CLASS == TYPE_unsigned);
     if (CLASS == TYPE_unsigned)
       build_all (b, "vhu0,vhu0,v0", group, MODE_none);
diff --git a/gcc/config/i386/i386-builtins.cc b/gcc/config/i386/i386-builtins.cc
index 8c6d0fe9631..5e87b6d34e8 100644
--- a/gcc/config/i386/i386-builtins.cc
+++ b/gcc/config/i386/i386-builtins.cc
@@ -100,7 +100,7 @@ along with GCC; see the file COPYING3.  If not see
 #define BDESC_VERIFY(x, y, z) \
   gcc_checking_assert ((x) == (enum ix86_builtins) ((y) + (z)))
 #define BDESC_VERIFYS(x, y, z) \
-  STATIC_ASSERT ((x) == (enum ix86_builtins) ((y) + (z)))
+  static_assert ((x) == (enum ix86_builtins) ((y) + (z)))
 
 BDESC_VERIFYS (IX86_BUILTIN__BDESC_PCMPESTR_FIRST,
 	       IX86_BUILTIN__BDESC_COMI_LAST, 1);
diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc
index 32cc58a764b..1a2ae620169 100644
--- a/gcc/config/i386/i386-options.cc
+++ b/gcc/config/i386/i386-options.cc
@@ -772,7 +772,7 @@ static const struct processor_costs *processor_cost_table[] =
 };
 
 /* Guarantee that the array is aligned with enum processor_type.  */
-STATIC_ASSERT (ARRAY_SIZE (processor_cost_table) == PROCESSOR_max);
+static_assert (ARRAY_SIZE (processor_cost_table) == PROCESSOR_max);
 
 static bool
 ix86_option_override_internal (bool main_args_p,
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 363082ba47b..709805132d7 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -2274,7 +2274,7 @@ enum pta_flag
 };
 
 /* wide_int_bitmask can handle only 128 flags.  */
-STATIC_ASSERT (END_PTA <= 128);
+static_assert (END_PTA <= 128);
 
 #define WIDE_INT_BITMASK_FROM_NTH(N) (N < 64 ? wide_int_bitmask (0, 1ULL << N) \
 				      : wide_int_bitmask (1ULL << (N - 64), 0))
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index e9c3cf2bad0..be1fd3ad5c9 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -6084,7 +6084,7 @@ enum ovl_op_code {
 };
 
 /* Make sure it fits in lang_decl_fn::ovl_op_code. */
-STATIC_ASSERT (OVL_OP_MAX < (1 << 6));
+static_assert (OVL_OP_MAX < (1 << 6));
 
 struct GTY(()) ovl_op_info_t {
   /* The IDENTIFIER_NODE for the operator.  */
diff --git a/gcc/dumpfile.cc b/gcc/dumpfile.cc
index ac79aa09245..69eae7b141d 100644
--- a/gcc/dumpfile.cc
+++ b/gcc/dumpfile.cc
@@ -1038,7 +1038,7 @@ template<unsigned int N, typename C>
 static optinfo_item *
 make_item_for_dump_dec (const poly_int<N, C> &value)
 {
-  STATIC_ASSERT (poly_coeff_traits<C>::signedness >= 0);
+  static_assert (poly_coeff_traits<C>::signedness >= 0);
   signop sgn = poly_coeff_traits<C>::signedness ? SIGNED : UNSIGNED;
 
   pretty_printer pp;
diff --git a/gcc/expmed.cc b/gcc/expmed.cc
index ed39c88bd04..98aa2ca49ce 100644
--- a/gcc/expmed.cc
+++ b/gcc/expmed.cc
@@ -5348,7 +5348,7 @@ make_tree (tree type, rtx x)
       return t;
 
     case CONST_DOUBLE:
-      STATIC_ASSERT (HOST_BITS_PER_WIDE_INT * 2 <= MAX_BITSIZE_MODE_ANY_INT);
+      static_assert (HOST_BITS_PER_WIDE_INT * 2 <= MAX_BITSIZE_MODE_ANY_INT);
       if (TARGET_SUPPORTS_WIDE_INT == 0 && GET_MODE (x) == VOIDmode)
 	t = wide_int_to_tree (type,
 			      wide_int::from_array (&CONST_DOUBLE_LOW (x), 2,
diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc
index 714148138c2..2bd2814b00f 100644
--- a/gcc/fortran/openmp.cc
+++ b/gcc/fortran/openmp.cc
@@ -6283,7 +6283,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses,
 	"DEVICE_RESIDENT", "LINK", "USE_DEVICE",
 	"CACHE", "IS_DEVICE_PTR", "USE_DEVICE_PTR", "USE_DEVICE_ADDR",
 	"NONTEMPORAL", "ALLOCATE", "HAS_DEVICE_ADDR" };
-  STATIC_ASSERT (ARRAY_SIZE (clause_names) == OMP_LIST_NUM);
+  static_assert (ARRAY_SIZE (clause_names) == OMP_LIST_NUM);
 
   if (omp_clauses == NULL)
     return;
diff --git a/gcc/input.h b/gcc/input.h
index f1ae3aec95c..b69339ae488 100644
--- a/gcc/input.h
+++ b/gcc/input.h
@@ -34,7 +34,7 @@ extern GTY(()) class line_maps *saved_line_table;
 
 /* line-map.cc reserves RESERVED_LOCATION_COUNT to the user.  Ensure
    both UNKNOWN_LOCATION and BUILTINS_LOCATION fit into that.  */
-STATIC_ASSERT (BUILTINS_LOCATION < RESERVED_LOCATION_COUNT);
+static_assert (BUILTINS_LOCATION < RESERVED_LOCATION_COUNT);
 
 /* Hasher for 'location_t' values satisfying '!RESERVED_LOCATION_P', thus able
    to use 'UNKNOWN_LOCATION'/'BUILTINS_LOCATION' as spare values for
diff --git a/gcc/ira-build.cc b/gcc/ira-build.cc
index 3bf117cbf8e..bdec10beab8 100644
--- a/gcc/ira-build.cc
+++ b/gcc/ira-build.cc
@@ -640,7 +640,7 @@ ira_conflict_vector_profitable_p (ira_object_t obj, int num)
     return false;
 
   nbytes = (max - min) / 8 + 1;
-  STATIC_ASSERT (sizeof (ira_object_t) <= 8);
+  static_assert (sizeof (ira_object_t) <= 8);
   /* Don't use sizeof (ira_object_t), use constant 8.  Size of ira_object_t (a
      pointer) is different on 32-bit and 64-bit targets.  Usage sizeof
      (ira_object_t) can result in different code generation by GCC built as 32-
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 597e9e405ec..61bf46b78f6 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -388,7 +388,7 @@ struct lto_section
   }
 };
 
-STATIC_ASSERT (sizeof (lto_section) == 8);
+static_assert (sizeof (lto_section) == 8);
 
 /* The is the first part of the record in an LTO file for many of the
    IPA passes.  */
diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc
index 285e6e96af5..62bb910c236 100644
--- a/gcc/lto-wrapper.cc
+++ b/gcc/lto-wrapper.cc
@@ -1248,7 +1248,7 @@ static cpuset_popcount (unsigned long cpusetsize, cpu_set_t *cpusetp)
 #endif
   size_t i;
   unsigned long ret = 0;
-  STATIC_ASSERT (sizeof (cpusetp->__bits[0]) == sizeof (unsigned long int));
+  static_assert (sizeof (cpusetp->__bits[0]) == sizeof (unsigned long int));
   for (i = 0; i < cpusetsize / sizeof (cpusetp->__bits[0]); i++)
     {
       unsigned long int mask = cpusetp->__bits[i];
diff --git a/gcc/poly-int.h b/gcc/poly-int.h
index 2bf9d98599f..b8cfa310401 100644
--- a/gcc/poly-int.h
+++ b/gcc/poly-int.h
@@ -677,7 +677,7 @@ template<typename C0, typename C1>
 inline
 poly_int<N, C>::poly_int (const C0 &c0, const C1 &c1)
 {
-  STATIC_ASSERT (N >= 2);
+  static_assert (N >= 2);
   POLY_SET_COEFF (C, *this, 0, c0);
   POLY_SET_COEFF (C, *this, 1, c1);
   for (unsigned int i = 2; i < N; i++)
@@ -1225,7 +1225,7 @@ template<unsigned int N, typename Ca, typename Cb>
 inline bool
 maybe_eq (const poly_int_pod<N, Ca> &a, const poly_int_pod<N, Cb> &b)
 {
-  STATIC_ASSERT (N <= 2);
+  static_assert (N <= 2);
   if (N == 2)
     return maybe_eq_2 (a.coeffs[0], a.coeffs[1], b.coeffs[0], b.coeffs[1]);
   return a.coeffs[0] == b.coeffs[0];
@@ -1235,7 +1235,7 @@ template<unsigned int N, typename Ca, typename Cb>
 inline typename if_nonpoly<Cb, bool>::type
 maybe_eq (const poly_int_pod<N, Ca> &a, const Cb &b)
 {
-  STATIC_ASSERT (N <= 2);
+  static_assert (N <= 2);
   if (N == 2)
     return maybe_eq_2 (a.coeffs[0], a.coeffs[1], b);
   return a.coeffs[0] == b;
@@ -1245,7 +1245,7 @@ template<unsigned int N, typename Ca, typename Cb>
 inline typename if_nonpoly<Ca, bool>::type
 maybe_eq (const Ca &a, const poly_int_pod<N, Cb> &b)
 {
-  STATIC_ASSERT (N <= 2);
+  static_assert (N <= 2);
   if (N == 2)
     return maybe_eq_2 (b.coeffs[0], b.coeffs[1], a);
   return a == b.coeffs[0];
@@ -2495,7 +2495,7 @@ template<unsigned int N, typename C>
 void
 print_dec (const poly_int_pod<N, C> &value, FILE *file)
 {
-  STATIC_ASSERT (poly_coeff_traits<C>::signedness >= 0);
+  static_assert (poly_coeff_traits<C>::signedness >= 0);
   print_dec (value, file,
 	     poly_coeff_traits<C>::signedness ? SIGNED : UNSIGNED);
 }
diff --git a/gcc/profile-count.cc b/gcc/profile-count.cc
index af8d0374b29..01f9d49bd92 100644
--- a/gcc/profile-count.cc
+++ b/gcc/profile-count.cc
@@ -292,7 +292,7 @@ profile_count::to_frequency (struct function *fun) const
     return BB_FREQ_MAX;
   if (*this == zero ())
     return 0;
-  STATIC_ASSERT (REG_BR_PROB_BASE == BB_FREQ_MAX);
+  static_assert (REG_BR_PROB_BASE == BB_FREQ_MAX);
   gcc_assert (fun->cfg->count_max.initialized_p ());
   profile_probability prob = probability_in (fun->cfg->count_max);
   if (!prob.initialized_p ())
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 5e77be2f024..34047e203cd 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2157,9 +2157,9 @@ subreg_shape::operator != (const subreg_shape &other) const
 inline unsigned HOST_WIDE_INT
 subreg_shape::unique_id () const
 {
-  { STATIC_ASSERT (MAX_MACHINE_MODE <= 256); }
-  { STATIC_ASSERT (NUM_POLY_INT_COEFFS <= 3); }
-  { STATIC_ASSERT (sizeof (offset.coeffs[0]) <= 2); }
+  { static_assert (MAX_MACHINE_MODE <= 256); }
+  { static_assert (NUM_POLY_INT_COEFFS <= 3); }
+  { static_assert (sizeof (offset.coeffs[0]) <= 2); }
   int res = (int) inner_mode + ((int) outer_mode << 8);
   for (int i = 0; i < NUM_POLY_INT_COEFFS; ++i)
     res += (HOST_WIDE_INT) offset.coeffs[i] << ((1 + i) * 16);
diff --git a/gcc/system.h b/gcc/system.h
index 1688b763ef5..ca531c34446 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -801,15 +801,6 @@ extern void fancy_abort (const char *, int, const char *)
 
 #define STATIC_CONSTANT_P(X) (__builtin_constant_p (X) && (X))
 
-/* static_assert (COND, MESSAGE) is available in C++11 onwards.  */
-#if __cplusplus >= 201103L
-#define STATIC_ASSERT(X) \
-  static_assert ((X), #X)
-#else
-#define STATIC_ASSERT(X) \
-  typedef int assertion1[(X) ? 1 : -1] ATTRIBUTE_UNUSED
-#endif
-
 /* Provide a fake boolean type.  We make no attempt to use the
    C99 _Bool, as it may not be available in the bootstrap compiler,
    and even if it is, it is liable to be buggy.
diff --git a/gcc/tree.h b/gcc/tree.h
index c53d34f6a47..5a1ab380cc0 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -3999,7 +3999,7 @@ id_equal (const char *str, const_tree id)
 inline poly_uint64
 TYPE_VECTOR_SUBPARTS (const_tree node)
 {
-  STATIC_ASSERT (NUM_POLY_INT_COEFFS <= 2);
+  static_assert (NUM_POLY_INT_COEFFS <= 2);
   unsigned int precision = VECTOR_TYPE_CHECK (node)->type_common.precision;
   if (NUM_POLY_INT_COEFFS == 2)
     {
@@ -4021,7 +4021,7 @@ TYPE_VECTOR_SUBPARTS (const_tree node)
 inline void
 SET_TYPE_VECTOR_SUBPARTS (tree node, poly_uint64 subparts)
 {
-  STATIC_ASSERT (NUM_POLY_INT_COEFFS <= 2);
+  static_assert (NUM_POLY_INT_COEFFS <= 2);
   unsigned HOST_WIDE_INT coeff0 = subparts.coeffs[0];
   int index = exact_log2 (coeff0);
   gcc_assert (index >= 0);
diff --git a/gcc/wide-int.h b/gcc/wide-int.h
index bd0d9a2d4d5..af0506fe67a 100644
--- a/gcc/wide-int.h
+++ b/gcc/wide-int.h
@@ -466,7 +466,7 @@ namespace wi
   template <typename T1, typename T2>
   struct binary_traits <T1, T2, CONST_PRECISION, CONST_PRECISION>
   {
-    STATIC_ASSERT (int_traits <T1>::precision == int_traits <T2>::precision);
+    static_assert (int_traits <T1>::precision == int_traits <T2>::precision);
     /* Spelled out explicitly (rather than through FIXED_WIDE_INT)
        so as not to confuse gengtype.  */
     typedef generic_wide_int < fixed_wide_int_storage
@@ -1110,8 +1110,8 @@ inline wide_int_storage::wide_int_storage () {}
 template <typename T>
 inline wide_int_storage::wide_int_storage (const T &x)
 {
-  { STATIC_ASSERT (!wi::int_traits<T>::host_dependent_precision); }
-  { STATIC_ASSERT (wi::int_traits<T>::precision_type != wi::CONST_PRECISION); }
+  { static_assert (!wi::int_traits<T>::host_dependent_precision); }
+  { static_assert (wi::int_traits<T>::precision_type != wi::CONST_PRECISION); }
   WIDE_INT_REF_FOR (T) xi (x);
   precision = xi.precision;
   wi::copy (*this, xi);
@@ -1121,8 +1121,8 @@ template <typename T>
 inline wide_int_storage&
 wide_int_storage::operator = (const T &x)
 {
-  { STATIC_ASSERT (!wi::int_traits<T>::host_dependent_precision); }
-  { STATIC_ASSERT (wi::int_traits<T>::precision_type != wi::CONST_PRECISION); }
+  { static_assert (!wi::int_traits<T>::host_dependent_precision); }
+  { static_assert (wi::int_traits<T>::precision_type != wi::CONST_PRECISION); }
   WIDE_INT_REF_FOR (T) xi (x);
   precision = xi.precision;
   wi::copy (*this, xi);
@@ -1201,7 +1201,7 @@ inline wide_int
 wi::int_traits <wide_int_storage>::get_binary_result (const T1 &x, const T2 &y)
 {
   /* This shouldn't be used for two flexible-precision inputs.  */
-  STATIC_ASSERT (wi::int_traits <T1>::precision_type != FLEXIBLE_PRECISION
+  static_assert (wi::int_traits <T1>::precision_type != FLEXIBLE_PRECISION
 		 || wi::int_traits <T2>::precision_type != FLEXIBLE_PRECISION);
   if (wi::int_traits <T1>::precision_type == FLEXIBLE_PRECISION)
     return wide_int::create (wi::get_precision (y));
@@ -1296,7 +1296,7 @@ fixed_wide_int_storage <N>::set_len (unsigned int l, bool)
 {
   len = l;
   /* There are no excess bits in val[len - 1].  */
-  STATIC_ASSERT (N % HOST_BITS_PER_WIDE_INT == 0);
+  static_assert (N % HOST_BITS_PER_WIDE_INT == 0);
 }
 
 /* Treat X as having signedness SGN and convert it to an N-bit number.  */
@@ -3446,7 +3446,7 @@ template <typename T>
 inline T
 wi::mask (unsigned int width, bool negate_p)
 {
-  STATIC_ASSERT (wi::int_traits<T>::precision);
+  static_assert (wi::int_traits<T>::precision);
   T result;
   result.set_len (mask (result.write_val (), width, negate_p,
 			wi::int_traits <T>::precision));
@@ -3460,7 +3460,7 @@ template <typename T>
 inline T
 wi::shifted_mask (unsigned int start, unsigned int width, bool negate_p)
 {
-  STATIC_ASSERT (wi::int_traits<T>::precision);
+  static_assert (wi::int_traits<T>::precision);
   T result;
   result.set_len (shifted_mask (result.write_val (), start, width,
 				negate_p,


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-05 12:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 12:39 [gcc(refs/users/marxin/heads/fold-GCC_VERSION-for-old)] Start using static_assert Martin Liska

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).