1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Bug 20729: Fix building with -Os.

This commit adds a new DIAG_IGNORE_Os_NEEDS_COMMENT which is only
enabled when compiling with -Os. This allows developers working on
-Os enabled builds to mark false-positive warnings without impacting the
warnings emitted at -O2.

Then using the new DIAG_IGNORE_Os_NEEDS_COMMENT we fix 6 warnings
generated with GCC 5 to get -Os builds working again.
This commit is contained in:
Carlos O'Donell
2016-10-29 23:45:40 -04:00
parent 960294f00a
commit 93fe09cb5f
8 changed files with 91 additions and 1 deletions

View File

@ -24,6 +24,7 @@
#include <stdint.h>
#include <string.h>
#include <sys/param.h>
#include <libc-internal.h>
#ifndef STRING_TYPE
# define STRING_TYPE char
@ -170,7 +171,19 @@ get_next_seq (coll_seq *seq, int nrules, const unsigned char *rulesets,
}
}
/* With GCC 5.3 when compiling with -Os the compiler complains
that idx, taken from seq->idx (seq1 or seq2 from STRCOLL) may
be used uninitialized. In general this can't possibly be true
since seq1.idx and seq2.idx are initialized to zero in the
outer function. Only one case where seq->idx is restored from
seq->save_idx might result in an uninitialized idx value, but
it is guarded by a sequence of checks against backw_stop which
ensures that seq->save_idx was saved to first and contains a
valid value. */
DIAG_PUSH_NEEDS_COMMENT;
DIAG_IGNORE_Os_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
len = weights[idx++];
DIAG_POP_NEEDS_COMMENT;
/* Skip over indices of previous levels. */
for (int i = 0; i < pass; i++)
{