This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.

>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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]