public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] rust-constexpr.cc: fix warnings for unused variables for unsupported bits
@ 2022-08-29 15:35 Thomas Schwinge
  0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2022-08-29 15:35 UTC (permalink / raw)
  To: gcc-cvs

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

commit f83e254c29dc3690603e06a98d94b3d39eb853d7
Author: Faisal Abbas <90.abbasfaisal@gmail.com>
Date:   Tue Aug 23 14:31:26 2022 +0100

    rust-constexpr.cc: fix warnings for unused variables for unsupported bits
    
    Signed-off-by: Faisal Abbas <90.abbasfaisal@gmail.com>

Diff:
---
 gcc/rust/backend/rust-constexpr.cc | 260 +++++++++++++++++++------------------
 gcc/rust/backend/rust-tree.cc      |  37 ++----
 gcc/rust/backend/rust-tree.h       |   2 +-
 3 files changed, 143 insertions(+), 156 deletions(-)

diff --git a/gcc/rust/backend/rust-constexpr.cc b/gcc/rust/backend/rust-constexpr.cc
index 7cc987ff1e6..ed0fc2ce345 100644
--- a/gcc/rust/backend/rust-constexpr.cc
+++ b/gcc/rust/backend/rust-constexpr.cc
@@ -572,7 +572,6 @@ fold_expr (tree expr)
   rust_assert (folded != NULL_TREE);
 
   // more logic here to possibly port
-
   return folded;
 }
 
@@ -1084,9 +1083,11 @@ init_subob_ctx (const constexpr_ctx *ctx, constexpr_ctx &new_ctx, tree index,
 	/* There's no well-defined subobject for this index.  */
 	new_ctx.object = NULL_TREE;
       else
-	// Faisal: commenting this out as not sure if it's needed and it's huge
-	// new_ctx.object = build_ctor_subob_ref (index, type, ctx->object);
-	;
+	{
+	  // Faisal: commenting this out as not sure if it's needed and it's
+	  // huge new_ctx.object = build_ctor_subob_ref (index, type,
+	  // ctx->object);
+	}
     }
   tree elt = build_constructor (type, NULL);
   CONSTRUCTOR_NO_CLEARING (elt) = true;
@@ -1661,17 +1662,16 @@ eval_array_reference (const constexpr_ctx *ctx, tree t, bool lval,
   /* If it's within the array bounds but doesn't have an explicit
      initializer, it's initialized from {}.  But use build_value_init
      directly for non-aggregates to avoid creating a garbage CONSTRUCTOR.  */
-  tree val;
+  tree val = NULL_TREE;
+  sorry ("array size expression is not supported yet.");
+
   constexpr_ctx new_ctx;
   if (is_really_empty_class (elem_type, /*ignore_vptr*/ false))
     return build_constructor (elem_type, NULL);
-  // Faisal: commenting this out as not sure if we need this but we need to come
-  // back to handle this to assign suitable value to val before sending it in
-  // eval_constant_expression below
   // else if (CP_AGGREGATE_TYPE_P (elem_type))
-  //  {
-  //    tree empty_ctor = build_constructor (init_list_type_node, NULL);
-  //    val = digest_init (elem_type, empty_ctor, tf_warning_or_error);
+  // {
+  //   tree empty_ctor = build_constructor (init_list_type_node, NULL);
+  //    //val = digest_init (elem_type, empty_ctor, tf_warning_or_error);
   //  }
   // else
   //  val = build_value_init (elem_type, tf_warning_or_error);
@@ -1789,6 +1789,8 @@ eval_component_reference (const constexpr_ctx *ctx, tree t, bool lval,
       return t;
     }
 
+  value = NULL_TREE;
+  sorry ("constant folding not supported for this tree code");
   /* If there's no explicit init for this field, it's value-initialized.  */
   // Faisal: commenting this out as not sure if we need this but we need to come
   // back to handle this to assign suitable value to value before sending it in
@@ -2586,7 +2588,7 @@ eval_store_expression (const constexpr_ctx *ctx, tree t, bool lval,
   tree object = NULL_TREE;
   /* If we're modifying a const object, save it.  */
   tree const_object_being_modified = NULL_TREE;
-  bool mutable_p = false;
+  // bool mutable_p = false;
   for (tree probe = target; object == NULL_TREE;)
     {
       switch (TREE_CODE (probe))
@@ -2597,7 +2599,9 @@ eval_store_expression (const constexpr_ctx *ctx, tree t, bool lval,
 	    tree ob = TREE_OPERAND (probe, 0);
 	    tree elt = TREE_OPERAND (probe, 1);
 	    if (TREE_CODE (elt) == FIELD_DECL /*&& DECL_MUTABLE_P (elt)*/)
-	      mutable_p = true;
+	      {
+		// mutable_p = true;
+	      }
 	    if (TREE_CODE (probe) == ARRAY_REF)
 	      {
 		// TODO
@@ -3606,44 +3610,44 @@ build_anon_member_initialization (tree member, tree init,
   return true;
 }
 
-/* V is a vector of constructor elements built up for the base and member
-   initializers of a constructor for TYPE.  They need to be in increasing
-   offset order, which they might not be yet if TYPE has a primary base
-   which is not first in the base-clause or a vptr and at least one base
-   all of which are non-primary.  */
-
-static vec<constructor_elt, va_gc> *
-sort_constexpr_mem_initializers (tree type, vec<constructor_elt, va_gc> *v)
-{
-  tree pri = CLASSTYPE_PRIMARY_BINFO (type);
-  tree field_type;
-  unsigned i;
-  constructor_elt *ce;
-
-  if (pri)
-    field_type = BINFO_TYPE (pri);
-  else if (TYPE_CONTAINS_VPTR_P (type))
-    field_type = vtbl_ptr_type_node;
-  else
-    return v;
-
-  /* Find the element for the primary base or vptr and move it to the
-     beginning of the vec.  */
-  for (i = 0; vec_safe_iterate (v, i, &ce); ++i)
-    if (TREE_TYPE (ce->index) == field_type)
-      break;
-
-  if (i > 0 && i < vec_safe_length (v))
-    {
-      vec<constructor_elt, va_gc> &vref = *v;
-      constructor_elt elt = vref[i];
-      for (; i > 0; --i)
-	vref[i] = vref[i - 1];
-      vref[0] = elt;
-    }
-
-  return v;
-}
+///* V is a vector of constructor elements built up for the base and member
+//   initializers of a constructor for TYPE.  They need to be in increasing
+//   offset order, which they might not be yet if TYPE has a primary base
+//   which is not first in the base-clause or a vptr and at least one base
+//   all of which are non-primary.  */
+//
+// static vec<constructor_elt, va_gc> *
+// sort_constexpr_mem_initializers (tree type, vec<constructor_elt, va_gc> *v)
+//{
+//  tree pri = CLASSTYPE_PRIMARY_BINFO (type);
+//  tree field_type;
+//  unsigned i;
+//  constructor_elt *ce;
+//
+//  if (pri)
+//    field_type = BINFO_TYPE (pri);
+//  else if (TYPE_CONTAINS_VPTR_P (type))
+//    field_type = vtbl_ptr_type_node;
+//  else
+//    return v;
+//
+//  /* Find the element for the primary base or vptr and move it to the
+//     beginning of the vec.  */
+//  for (i = 0; vec_safe_iterate (v, i, &ce); ++i)
+//    if (TREE_TYPE (ce->index) == field_type)
+//      break;
+//
+//  if (i > 0 && i < vec_safe_length (v))
+//    {
+//      vec<constructor_elt, va_gc> &vref = *v;
+//      constructor_elt elt = vref[i];
+//      for (; i > 0; --i)
+//	vref[i] = vref[i - 1];
+//      vref[0] = elt;
+//    }
+//
+//  return v;
+//}
 
 /* Subroutine of  build_constexpr_constructor_member_initializers.
    The expression tree T represents a data member initialization
@@ -3755,81 +3759,81 @@ build_data_member_initialization (tree t, vec<constructor_elt, va_gc> **vec)
   return true;
 }
 
-/* Build compile-time evalable representations of member-initializer list
-   for a constexpr constructor.  */
-
-static tree
-build_constexpr_constructor_member_initializers (tree type, tree body)
-{
-  vec<constructor_elt, va_gc> *vec = NULL;
-  bool ok = true;
-  while (true)
-    switch (TREE_CODE (body))
-      {
-      case STATEMENT_LIST:
-	for (tree stmt : tsi_range (body))
-	  {
-	    body = stmt;
-	    if (TREE_CODE (body) == BIND_EXPR)
-	      break;
-	  }
-	break;
-
-      case BIND_EXPR:
-	body = BIND_EXPR_BODY (body);
-	goto found;
-
-      default:
-	gcc_unreachable ();
-      }
-found:
-
-  if (TREE_CODE (body) == CLEANUP_POINT_EXPR)
-    {
-      body = TREE_OPERAND (body, 0);
-      if (TREE_CODE (body) == EXPR_STMT)
-	body = TREE_OPERAND (body, 0);
-      if (TREE_CODE (body) == INIT_EXPR
-	  && (same_type_ignoring_top_level_qualifiers_p (
-	    TREE_TYPE (TREE_OPERAND (body, 0)), current_class_type)))
-	{
-	  /* Trivial copy.  */
-	  return TREE_OPERAND (body, 1);
-	}
-      ok = build_data_member_initialization (body, &vec);
-    }
-  else if (TREE_CODE (body) == STATEMENT_LIST)
-    {
-      for (tree stmt : tsi_range (body))
-	{
-	  ok = build_data_member_initialization (stmt, &vec);
-	  if (!ok)
-	    break;
-	}
-    }
-  else if (EXPR_P (body))
-    ok = build_data_member_initialization (body, &vec);
-  else
-    gcc_assert (errorcount > 0);
-  if (ok)
-    {
-      if (vec_safe_length (vec) > 0)
-	{
-	  /* In a delegating constructor, return the target.  */
-	  constructor_elt *ce = &(*vec)[0];
-	  if (ce->index == current_class_ptr)
-	    {
-	      body = ce->value;
-	      vec_free (vec);
-	      return body;
-	    }
-	}
-      vec = sort_constexpr_mem_initializers (type, vec);
-      return build_constructor (type, vec);
-    }
-  else
-    return error_mark_node;
-}
+///* Build compile-time evalable representations of member-initializer list
+//   for a constexpr constructor.  */
+//
+// static tree
+// build_constexpr_constructor_member_initializers (tree type, tree body)
+//{
+//  vec<constructor_elt, va_gc> *vec = NULL;
+//  bool ok = true;
+//  while (true)
+//    switch (TREE_CODE (body))
+//      {
+//      case STATEMENT_LIST:
+//	for (tree stmt : tsi_range (body))
+//	  {
+//	    body = stmt;
+//	    if (TREE_CODE (body) == BIND_EXPR)
+//	      break;
+//	  }
+//	break;
+//
+//      case BIND_EXPR:
+//	body = BIND_EXPR_BODY (body);
+//	goto found;
+//
+//      default:
+//	gcc_unreachable ();
+//      }
+// found:
+//
+//  if (TREE_CODE (body) == CLEANUP_POINT_EXPR)
+//    {
+//      body = TREE_OPERAND (body, 0);
+//      if (TREE_CODE (body) == EXPR_STMT)
+//	body = TREE_OPERAND (body, 0);
+//      if (TREE_CODE (body) == INIT_EXPR
+//	  && (same_type_ignoring_top_level_qualifiers_p (
+//	    TREE_TYPE (TREE_OPERAND (body, 0)), current_class_type)))
+//	{
+//	  /* Trivial copy.  */
+//	  return TREE_OPERAND (body, 1);
+//	}
+//      ok = build_data_member_initialization (body, &vec);
+//    }
+//  else if (TREE_CODE (body) == STATEMENT_LIST)
+//    {
+//      for (tree stmt : tsi_range (body))
+//	{
+//	  ok = build_data_member_initialization (stmt, &vec);
+//	  if (!ok)
+//	    break;
+//	}
+//    }
+//  else if (EXPR_P (body))
+//    ok = build_data_member_initialization (body, &vec);
+//  else
+//    gcc_assert (errorcount > 0);
+//  if (ok)
+//    {
+//      if (vec_safe_length (vec) > 0)
+//	{
+//	  /* In a delegating constructor, return the target.  */
+//	  constructor_elt *ce = &(*vec)[0];
+//	  if (ce->index == current_class_ptr)
+//	    {
+//	      body = ce->value;
+//	      vec_free (vec);
+//	      return body;
+//	    }
+//	}
+//      vec = sort_constexpr_mem_initializers (type, vec);
+//      return build_constructor (type, vec);
+//    }
+//  else
+//    return error_mark_node;
+//}
 
 // Subroutine of check_constexpr_fundef.  BODY is the body of a function
 // declared to be constexpr, or a sub-statement thereof.  Returns the
@@ -4457,7 +4461,7 @@ void
 explain_invalid_constexpr_fn (tree fun)
 {
   static hash_set<tree> *diagnosed;
-  tree body;
+  // tree body;
 
   if (diagnosed == NULL)
     diagnosed = new hash_set<tree>;
@@ -5831,7 +5835,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict, bool now,
 	/* A pointer-to-member constant.  */
 	return true;
 
-    handle_addr_expr:
+	// handle_addr_expr:
 #if 0
       /* FIXME adjust when issue 1197 is fully resolved.  For now don't do
          any checking here, as we might dereference the pointer later.  If
diff --git a/gcc/rust/backend/rust-tree.cc b/gcc/rust/backend/rust-tree.cc
index 996ade5783a..e6ae96931b8 100644
--- a/gcc/rust/backend/rust-tree.cc
+++ b/gcc/rust/backend/rust-tree.cc
@@ -1424,16 +1424,16 @@ builtin_pack_call_p (tree call)
   return builtin_pack_fn_p (CALL_EXPR_FN (call));
 }
 
-// forked from gcc/cp/pt.cc has_extra_args_mechanism_p
-
-/* Return true if the tree T has the extra args mechanism for
-   avoiding partial instantiation.  */
-
-static bool
-has_extra_args_mechanism_p (const_tree t)
-{
-  return false;
-}
+//// forked from gcc/cp/pt.cc has_extra_args_mechanism_p
+//
+///* Return true if the tree T has the extra args mechanism for
+//   avoiding partial instantiation.  */
+//
+// static bool
+// has_extra_args_mechanism_p (const_tree t)
+//{
+//  return false;
+//}
 
 // forked from gcc/cp/pt.cc find_parameter_packs_r
 
@@ -3714,23 +3714,6 @@ char_type_p (tree type)
 tree
 resolve_nondeduced_context (tree orig_expr, tsubst_flags_t complain)
 {
-  tree expr, offset, baselink;
-  bool addr;
-
-  if (!type_unknown_p (orig_expr))
-    return orig_expr;
-
-  expr = orig_expr;
-  addr = false;
-  offset = NULL_TREE;
-  baselink = NULL_TREE;
-
-  if (TREE_CODE (expr) == ADDR_EXPR)
-    {
-      expr = TREE_OPERAND (expr, 0);
-      addr = true;
-    }
-
   return orig_expr;
 }
 
diff --git a/gcc/rust/backend/rust-tree.h b/gcc/rust/backend/rust-tree.h
index 87ed2b6ae56..378254c59da 100644
--- a/gcc/rust/backend/rust-tree.h
+++ b/gcc/rust/backend/rust-tree.h
@@ -3379,7 +3379,7 @@ maybe_constexpr_fn (tree t);
 extern tree
 fold_non_dependent_init (tree, tsubst_flags_t = tf_warning_or_error,
 			 bool = false, tree = NULL_TREE);
-}
+} // namespace Compile
 
 } // namespace Rust

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

only message in thread, other threads:[~2022-08-29 15:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-29 15:35 [gcc/devel/rust/master] rust-constexpr.cc: fix warnings for unused variables for unsupported bits Thomas Schwinge

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).