Patchwork Fix regcomp.c build for 32-bit with GCC mainline

login
register
mail settings
Submitter Paul Eggert
Date Nov. 22, 2017, 7:24 p.m.
Message ID <a50acd4f-61d0-2f66-3f94-34fb2104e7e0@cs.ucla.edu>
Download mbox | patch
Permalink /patch/24451/
State New
Headers show

Comments

Paul Eggert - Nov. 22, 2017, 7:24 p.m.
On 11/21/2017 01:11 AM, Andreas Schwab wrote:
> This needs to go in a comment.

Sure, I installed the attached into glibc and merged it into Gnulib.

Patch

From 0285e6bdf223314d7751a83795001c0e87a1f825 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 22 Nov 2017 11:21:44 -0800
Subject: [PATCH] * posix/regcomp.c (init_word_char): Add comments.

---
 ChangeLog       | 4 ++++
 posix/regcomp.c | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 013d1e47e5..e67b128fe6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@ 
+2017-11-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* posix/regcomp.c (init_word_char): Add comments.
+
 2017-11-22  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #22447]
diff --git a/posix/regcomp.c b/posix/regcomp.c
index 520596b51b..81c2932991 100644
--- a/posix/regcomp.c
+++ b/posix/regcomp.c
@@ -925,12 +925,15 @@  init_word_char (re_dfa_t *dfa)
   int ch = 0;
   if (BE (dfa->map_notascii == 0, 1))
     {
+      /* Avoid uint32_t and uint64_t as some non-GCC platforms lack
+	 them, an issue when this code is used in Gnulib.  */
       bitset_word_t bits0 = 0x00000000;
       bitset_word_t bits1 = 0x03ff0000;
       bitset_word_t bits2 = 0x87fffffe;
       bitset_word_t bits3 = 0x07fffffe;
       if (BITSET_WORD_BITS == 64)
 	{
+	  /* Pacify gcc -Woverflow on 32-bit platformns.  */
 	  dfa->word_char[0] = bits1 << 31 << 1 | bits0;
 	  dfa->word_char[1] = bits3 << 31 << 1 | bits2;
 	  i = 2;
-- 
2.14.3