This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.20-253-gb1eda10
- From: eggert at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 25 Nov 2014 22:21:07 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.20-253-gb1eda10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via b1eda10e17bf2056ca79a534d92fe0b0b06bd410 (commit)
from bde2667a22c355467a4f07246c6d07a9dcc89366 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b1eda10e17bf2056ca79a534d92fe0b0b06bd410
commit b1eda10e17bf2056ca79a534d92fe0b0b06bd410
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue Nov 25 14:12:48 2014 -0800
fnmatch: work around GCC compiler warning bug with uninit var
* posix/fnmatch_loop.c (FCT): Use a scalar not a one-item array.
This works around a bug with x86-64 GCC 4.9.2 and earlier
where 'gcc -O2 -Wmaybe-uninitialized' incorrectly complains
"../locale/weightwc.h:93:7: warning: '*((void *)&str+4)' may be
used uninitialized in this function [-Wmaybe-uninitialized]".
diff --git a/ChangeLog b/ChangeLog
index 8ee0650..c020ed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ fnmatch: work around GCC compiler warning bug with uninit var
+ * posix/fnmatch_loop.c (FCT): Use a scalar not a one-item array.
+ This works around a bug with x86-64 GCC 4.9.2 and earlier
+ where 'gcc -O2 -Wmaybe-uninitialized' incorrectly complains
+ "../locale/weightwc.h:93:7: warning: '*((void *)&str+4)' may be
+ used uninitialized in this function [-Wmaybe-uninitialized]".
+
2014-11-25 Joseph Myers <joseph@codesourcery.com>
* posix/bug-regex31.c (main): Return RES not 0.
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
index db6d9d7..1e27913 100644
--- a/posix/fnmatch_loop.c
+++ b/posix/fnmatch_loop.c
@@ -343,7 +343,12 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used)
#ifdef _LIBC
else if (c == L('[') && *p == L('='))
{
- UCHAR str[1];
+ /* It's important that STR be a scalar variable rather
+ than a one-element array, because GCC (at least 4.9.2
+ -O2 on x86-64) can be confused by the array and
+ diagnose a "used initialized" in a dead branch in the
+ findidx function. */
+ UCHAR str;
uint32_t nrules =
_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
const CHAR *startp = p;
@@ -355,7 +360,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used)
c = L('[');
goto normal_bracket;
}
- str[0] = c;
+ str = c;
c = *++p;
if (c != L('=') || p[1] != L(']'))
@@ -368,7 +373,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used)
if (nrules == 0)
{
- if ((UCHAR) *n == str[0])
+ if ((UCHAR) *n == str)
goto matched;
}
else
@@ -383,7 +388,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used)
# endif
const int32_t *indirect;
int32_t idx;
- const UCHAR *cp = (const UCHAR *) str;
+ const UCHAR *cp = (const UCHAR *) &str;
# if WIDE_CHAR_VERSION
table = (const int32_t *)
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 9 +++++++++
posix/fnmatch_loop.c | 13 +++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
hooks/post-receive
--
GNU C Library master sources