d: Use Array::find to get index of element
authorIain Buclaw <ibuclaw@gdcproject.org>
Tue, 23 Jun 2020 08:46:52 +0000 (10:46 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 6 Apr 2021 17:43:31 +0000 (19:43 +0200)
gcc/d/ChangeLog:

* d-codegen.cc (build_frame_type): Use Array::find to get index of
element.

gcc/d/d-codegen.cc

index 608abcd..5fa1acd 100644 (file)
@@ -2507,15 +2507,11 @@ build_frame_type (tree ffi, FuncDeclaration *fd)
            {
              VarDeclaration *v = (*fd->parameters)[i];
              /* Remove if already in closureVars so can push to front.  */
-             for (size_t j = i; j < fd->closureVars.length; j++)
-               {
-                 Dsymbol *s = fd->closureVars[j];
-                 if (s == v)
-                   {
-                     fd->closureVars.remove (j);
-                     break;
-                   }
-               }
+             size_t j = fd->closureVars.find (v);
+
+             if (j < fd->closureVars.length)
+               fd->closureVars.remove (j);
+
              fd->closureVars.insert (i, v);
            }
        }
@@ -2523,15 +2519,11 @@ build_frame_type (tree ffi, FuncDeclaration *fd)
       /* Also add hidden `this' to outer context.  */
       if (fd->vthis)
        {
-         for (size_t i = 0; i < fd->closureVars.length; i++)
-           {
-             Dsymbol *s = fd->closureVars[i];
-             if (s == fd->vthis)
-               {
-                 fd->closureVars.remove (i);
-                 break;
-               }
-           }
+         size_t i = fd->closureVars.find (fd->vthis);
+
+         if (i < fd->closureVars.length)
+           fd->closureVars.remove (i);
+
          fd->closureVars.insert (0, fd->vthis);
        }
     }