This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[C++ PATCH]: Dead code-ectomy


Some more dead code in class lookup. It's not been well formed to allow class fields to be the type-name for a very long time now.

I booted with a gcc-unreachable inside the elided loop condition, before ripping the loop out completely.

Again, applied to trunk to get wider exposure.

nathan
--
Nathan Sidwell
2017-08-21  Nathan Sidwell  <nathan@acm.org>

	* search.c (lookup_field_r): Remove obsolete code for type-named
	field in PoD.

Index: search.c
===================================================================
--- search.c	(revision 251241)
+++ search.c	(working copy)
@@ -1111,39 +1111,22 @@ lookup_field_r (tree binfo, void *data)
 	nval = dep_using;
     }
 
-  /* If there is no declaration with the indicated name in this type,
-     then there's nothing to do.  */
-  if (!nval)
-    goto done;
-
   /* If we're looking up a type (as with an elaborated type specifier)
      we ignore all non-types we find.  */
-  if (lfi->want_type && !DECL_DECLARES_TYPE_P (nval))
+  if (lfi->want_type && nval && !DECL_DECLARES_TYPE_P (nval))
     {
-      if (lfi->name == TYPE_IDENTIFIER (type))
-	{
-	  /* If the aggregate has no user defined constructors, we allow
-	     it to have fields with the same name as the enclosing type.
-	     If we are looking for that name, find the corresponding
-	     TYPE_DECL.  */
-	  for (nval = TREE_CHAIN (nval); nval; nval = TREE_CHAIN (nval))
-	    if (DECL_NAME (nval) == lfi->name
-		&& TREE_CODE (nval) == TYPE_DECL)
-	      break;
-	}
-      else
-	nval = NULL_TREE;
-      if (!nval && CLASSTYPE_NESTED_UTDS (type) != NULL)
-	{
-	  binding_entry e = binding_table_find (CLASSTYPE_NESTED_UTDS (type),
-						lfi->name);
-	  if (e != NULL)
-	    nval = TYPE_MAIN_DECL (e->type);
-	  else
-	    goto done;
-	}
+      nval = NULL_TREE;
+      if (CLASSTYPE_NESTED_UTDS (type))
+	if (binding_entry e = binding_table_find (CLASSTYPE_NESTED_UTDS (type),
+						  lfi->name))
+	  nval = TYPE_MAIN_DECL (e->type);
     }
 
+  /* If there is no declaration with the indicated name in this type,
+     then there's nothing to do.  */
+  if (!nval)
+    goto done;
+
   /* If the lookup already found a match, and the new value doesn't
      hide the old one, we might have an ambiguity.  */
   if (lfi->rval_binfo

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]