From: "Luís Ferreira" <contact@lsferreira.net>
To: Jeff Law <jeffreyalaw@gmail.com>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] libiberty: d-demangle: use switch instead of if-else
Date: Mon, 04 Oct 2021 15:56:37 +0100 [thread overview]
Message-ID: <202ba97937f7149bec97fafe0c821f8cc6b12304.camel@lsferreira.net> (raw)
In-Reply-To: <43f9005e-bc54-842b-b7c2-d3e899d8714f@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2140 bytes --]
On Sun, 2021-10-03 at 15:55 -0600, Jeff Law wrote:
>
>
> On 9/29/2021 7:08 PM, Luís Ferreira wrote:
> > This patch allows the compiler to efficiently generate jump tables
> > instead of
> > using if-else-if.
> >
> > Signed-off-by: Luís Ferreira <contact@lsferreira.net>
> I'm not sure this is terribly useful. Compilers have the ability to
> analyze the underlying code and make sensible decisions for how to
> implement either form. So the right metric here is does this make the
> code cleaner/easier to understand. With just 3 clauses it's hard (for
> me) to make the case that it is considerably cleaner.
>
> Jeff
>
>
Well, my major point on the patch was performance, eventhough on this
number of clauses it doesn't matter for GCC. I can totally agree with
you.
Although when we talk about a higher number of cases the optimizer
reach a threashold to optimize with jump tables and if-else-if starts
to loose there. Furthermore, if-else-if are hard to optimize, since the
compiler need to check if the condition order is important and with a
high number of cases the compiler may just give up on that check. I'm
not particularly aware of how GCC theoretically optimize it, so take
that with a grain of salt, but, in practice, it sure have a difference.
https://godbolt.org/z/rT9drW117
Even though performance may not be terribly bad (some compilers may not
be really that smart, specially in higher number of cases, as shown
above) I can still consider this change for future additions, even
though debatable, since mangling characters may exapand this logic and
increase the number of cases making if-else-if code a bit longer to
read.
Overall, although, this is by far a minor thing. My intention with this
was to reflect some changes I found relevant while reading this file.
Side note:
This was a previously sent patch. As requested by you, if this is
somehow being considered to be merged, here is the changelog:
ChangeLog:
libiberty/
* d-demangle.c (dlang_type): Change if-else-if to switch case.
--
Sincerely,
Luís Ferreira @ lsferreira.net
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2021-10-04 14:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-30 1:08 Luís Ferreira
2021-10-03 21:55 ` Jeff Law
2021-10-04 7:25 ` ibuclaw
2021-10-04 14:56 ` Luís Ferreira [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202ba97937f7149bec97fafe0c821f8cc6b12304.camel@lsferreira.net \
--to=contact@lsferreira.net \
--cc=gcc-patches@gcc.gnu.org \
--cc=jeffreyalaw@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).