aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdhemerval Zanella Netto <adhemerval.zanella@linaro.org>2022-09-21 10:51:04 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-10-05 18:04:13 -0300
commit9ec1c8cd243e9d7d63e188620a7e70a3b69777e6 (patch)
tree8690caf2ccfd5a19b521ea57ccc40a40dbe5ec4e
parentc651f9da530320e9939e6cbad57b87695eeba41c (diff)
downloadglibc-9ec1c8cd243e9d7d63e188620a7e70a3b69777e6.zip
glibc-9ec1c8cd243e9d7d63e188620a7e70a3b69777e6.tar.gz
glibc-9ec1c8cd243e9d7d63e188620a7e70a3b69777e6.tar.bz2
posix: Suppress -Os warnings on fnmatch
GCC with -Os issues some may uninitialized warnings on fnmatch code. All of the variables are already set when they are accessed on the loop prior. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
-rw-r--r--posix/fnmatch_loop.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
index 9445ed9..23eeffc 100644
--- a/posix/fnmatch_loop.c
+++ b/posix/fnmatch_loop.c
@@ -530,6 +530,14 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
{
/* Compare the byte sequence but only if
this is not part of a range. */
+
+ /* The compiler might warn that idx may be
+ used uninitialized, however it will be
+ reached iff elem < table_size which means
+ that it was properly set in the loop
+ above. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
if (! is_range
# if WIDE_CHAR_VERSION
@@ -542,11 +550,19 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
n += c1 - 1;
goto matched;
}
+ DIAG_POP_NEEDS_COMMENT;
/* Get the collation sequence value. */
is_seqval = true;
# if WIDE_CHAR_VERSION
+ /* The compile might warn that wextra may be
+ used uninitialized and similar to 'idx'
+ above it will be properly set by the loop.
+ */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
cold = wextra[1 + wextra[0]];
+ DIAG_POP_NEEDS_COMMENT;
# else
idx += 1 + extra[idx];
/* Adjust for the alignment. */
@@ -723,9 +739,24 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
/* Get the collation sequence value. */
is_seqval = true;
# if WIDE_CHAR_VERSION
+ /* The compiler might warn that wextra may
+ be used uninitialized, however it will
+ be reached iff elem < table_size which
+ means that it was properly set in the
+ loop above. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
cend = wextra[1 + wextra[0]];
+ DIAG_POP_NEEDS_COMMENT;
# else
+ /* The compile might warn that idx may
+ be used uninitialized and similar to
+ wextra above it will be properly set by
+ the loop. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_Os_NEEDS_COMMENT (8, "-Wmaybe-uninitialized");
idx += 1 + extra[idx];
+ DIAG_POP_NEEDS_COMMENT;
/* Adjust for the alignment. */
idx = (idx + 3) & ~3;
cend = *((int32_t *) &extra[idx]);