all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Michal Nazarewicz <mina86@mina86.com>
To: 24378@debbugs.gnu.org
Subject: bug#24378: [PATCH 4/6] Remove dead loop iterations in regex.c
Date: Tue,  6 Sep 2016 15:31:32 +0200	[thread overview]
Message-ID: <1473168694-13605-4-git-send-email-mina86@mina86.com> (raw)
In-Reply-To: <1473168694-13605-1-git-send-email-mina86@mina86.com>

RE_CHAR_TO_MULTIBYTE(c) yields c for ASCII characters and a byte8
character for c ≥ 0x80.  Furthermore, CHAR_BYTE8_P(c) is true only
for byte8 characters.  This means that

	c = RE_CHAR_TO_MULTIBYTE (ch);
	if (! CHAR_BYTE8_P (c) && re_iswctype (c, cc))

is equivalent to:

	c = c;
	if (! false && re_iswctype (c, cc))

for 0 ⪬ c < 0x80, and

	c = BYTE8_TO_CHAR (c);
	if (! true && re_iswctype (c, cc))

for 0x80 ⪬ c < 0x100.  In other words, the loop never executes for
c ≥ 0x80 and RE_CHAR_TO_MULTIBYTE call is unnecessary for c < 0x80.

* src/regex.c (regex_compile): Simplyfy a for loop by eliminating
dead iterations and unnecessary macro calls.
---
 src/regex.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/regex.c b/src/regex.c
index 5f51b43..41c1d3f 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -2888,22 +2888,18 @@ regex_compile (const_re_char *pattern, size_t size,
 		       done until now.  */
 		    SETUP_BUFFER_SYNTAX_TABLE ();
 
-		    for (ch = 0; ch < 256; ++ch)
-		      {
-			c = RE_CHAR_TO_MULTIBYTE (ch);
-			if (! CHAR_BYTE8_P (c)
-			    && re_iswctype (c, cc))
-			  {
-			    SET_LIST_BIT (ch);
-			    c1 = TRANSLATE (c);
-			    if (c1 == c)
-			      continue;
-			    if (ASCII_CHAR_P (c1))
-			      SET_LIST_BIT (c1);
-			    else if ((c1 = RE_CHAR_TO_UNIBYTE (c1)) >= 0)
-			      SET_LIST_BIT (c1);
-			  }
-		      }
+		    for (c = 0; c < 0x80; ++c)
+		      if (re_iswctype (c, cc))
+			{
+			  SET_LIST_BIT (c);
+			  c1 = TRANSLATE (c);
+			  if (c1 == c)
+			    continue;
+			  if (ASCII_CHAR_P (c1))
+			    SET_LIST_BIT (c1);
+			  else if ((c1 = RE_CHAR_TO_UNIBYTE (c1)) >= 0)
+			    SET_LIST_BIT (c1);
+			}
 		    SET_RANGE_TABLE_WORK_AREA_BIT
 		      (range_table_work, re_wctype_to_bit (cc));
 #endif	/* emacs */
-- 
2.8.0.rc3.226.g39d4020






  parent reply	other threads:[~2016-09-06 13:31 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-06 13:28 bug#24378: [PATCH 0/6] Small fixes and improvements Michal Nazarewicz
2016-09-06 13:31 ` bug#24378: [PATCH 1/6] Don’t use FETCH_MULTIBYTE_CHAR when advancing index Michal Nazarewicz
2016-09-06 13:31   ` bug#24378: [PATCH 2/6] Remove inaccurate comment in regex.c Michal Nazarewicz
2016-09-06 13:31   ` bug#24378: [PATCH 3/6] Replace decimalnump with alphanumericp Michal Nazarewicz
2016-09-06 13:31   ` Michal Nazarewicz [this message]
2016-09-06 13:31   ` bug#24378: [PATCH 5/6] Don’t allocate char-table’s extra slots in regexp-out-charset Michal Nazarewicz
2016-09-06 13:31   ` bug#24378: [PATCH 6/6] Factor out character category lookup to separate function Michal Nazarewicz
2016-09-06 14:54     ` Eli Zaretskii
2016-09-06 15:11       ` Michal Nazarewicz
2016-09-06 15:21         ` Eli Zaretskii
2016-09-06 15:34           ` Eli Zaretskii
2016-09-06 14:43   ` bug#24378: [PATCH 1/6] Don’t use FETCH_MULTIBYTE_CHAR when advancing index Eli Zaretskii
2016-09-06 15:17     ` Michal Nazarewicz
2016-09-06 15:27       ` Eli Zaretskii
2016-09-06 15:24     ` bug#24378: [PATCH] Remove obsolete comment from FETCH_MULTIBYTE_CHAR documentation Michal Nazarewicz
2016-09-09 16:34 ` bug#24378: [PATCH 0/6] Small fixes and improvements Michal Nazarewicz

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=1473168694-13605-4-git-send-email-mina86@mina86.com \
    --to=mina86@mina86.com \
    --cc=24378@debbugs.gnu.org \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.