Fix compilation with --enable-gcc-warnings and -O1

optimization level.
* configure.in: If --enable-gcc-warnings, disable
-Wunsafe-loop-optimizations for -O1 optimization level.
* src/doprnt.c (doprnt): Change type of tem to int, initialize
to avoid compiler warning.  Add eassert.
* src/search.c (simple_search): Initialize match_byte to avoid
compiler warning.  Add eassert.
This commit is contained in:
Dmitry Antipov 2012-07-04 12:07:26 +04:00
parent 24a212eb23
commit 8ce70ed205
5 changed files with 24 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2012-07-04 Dmitry Antipov <dmantipov@yandex.ru>
* configure.in: If --enable-gcc-warnings, disable
-Wunsafe-loop-optimizations for -O1 optimization level.
2012-06-30 Glenn Morris <rgm@gnu.org>
* configure.in (standardlisppath): New output variable.

View file

@ -681,6 +681,12 @@ else
nw="$nw -Wsuggest-attribute=const"
nw="$nw -Wsuggest-attribute=pure"
# Some loops can't be optimized with -O1,
# so remove -Wunsafe-loop-optimizations.
if echo "$CFLAGS" | $EGREP 'O1' 1>/dev/null; then
nw="$nw -Wunsafe-loop-optimizations"
fi
gl_MANYWARN_ALL_GCC([ws])
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
for w in $ws; do

View file

@ -1,3 +1,12 @@
2012-07-04 Dmitry Antipov <dmantipov@yandex.ru>
Fix compilation with --enable-gcc-warnings and -O1
optimization level.
* doprnt.c (doprnt): Change type of tem to int, initialize
to avoid compiler warning. Add eassert.
* search.c (simple_search): Initialize match_byte to avoid
compiler warning. Add eassert.
2012-07-04 Paul Eggert <eggert@cs.ucla.edu>
Avoid weird behavior with large horizontal scrolls.

View file

@ -150,7 +150,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
/* Buffer we have got with malloc. */
char *big_buffer = NULL;
register size_t tem;
register int tem = -1;
char *string;
char fixed_buffer[20]; /* Default buffer for small formatting. */
char *fmtcpy;
@ -368,6 +368,7 @@ doprnt (char *buffer, ptrdiff_t bufsize, const char *format,
/* Copy string into final output, truncating if no room. */
doit:
eassert (tem != -1);
/* Coming here means STRING contains ASCII only. */
if (STRING_BYTES_BOUND < tem)
error ("Format width or precision too large");

View file

@ -1451,7 +1451,7 @@ simple_search (EMACS_INT n, unsigned char *pat,
int forward = n > 0;
/* Number of buffer bytes matched. Note that this may be different
from len_byte in a multibyte buffer. */
ptrdiff_t match_byte;
ptrdiff_t match_byte = PTRDIFF_MIN;
if (lim > pos && multibyte)
while (n > 0)
@ -1622,6 +1622,7 @@ simple_search (EMACS_INT n, unsigned char *pat,
stop:
if (n == 0)
{
eassert (match_byte != PTRDIFF_MIN);
if (forward)
set_search_regs ((multibyte ? pos_byte : pos) - match_byte, match_byte);
else