]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/dwarf: remove unnecessary comparison in cooked_index_entry::compare
authorSimon Marchi <simon.marchi@polymtl.ca>
Mon, 24 Mar 2025 20:20:27 +0000 (16:20 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 25 Mar 2025 15:32:35 +0000 (11:32 -0400)
I believe that the `(mode == MATCH && a == munge ('<'))` part of the
condition is unnecesary.  Or perhaps I don't understand the algorithm.

The use of "munge" above effectively makes it so that the template
portion of names is completely ignored for the sake of the comparison.

Then, in the condition, this:

    a == munge ('<')

is functionally equivalent to

    a == '\0'

If `a` is indeed '\0', and `b` is also '\0', then we would have taken
the earlier branch:

    if (a == b)
      return 0;

If `b` is not '\0', then we won't take this branch and we'll go into the
final comparison:

    return a < b ? -1 : 1;

So, as far as I can see, there is no case where `mode == MATCH`, where
we're going to use this special `return 0`.

Regression tested using the various DWARF target boards on Debian 12.

Change-Id: I5ea0463c1fdbbc1b003de2f0a423fd0073cc9dec
Approved-By: Tom Tromey <tom@tromey.com>
gdb/dwarf2/cooked-index.c

index 724615f497e31a576f8f1f597727ea25e5abd1e8..1a2e19debab597016b52eebd99cb0a3f69cb4421 100644 (file)
@@ -122,11 +122,8 @@ cooked_index_entry::compare (const char *stra, const char *strb,
 
   /* When completing, if STRB ends earlier than STRA, consider them as
      equal.  */
-  if (mode == COMPLETE || (mode == MATCH && a == munge ('<')))
-    {
-      if (b == '\0')
-       return 0;
-    }
+  if (mode == COMPLETE && b == '\0')
+    return 0;
 
   return a < b ? -1 : 1;
 }