[gl_WARN_ADD([-Werror], [WERROR_CFLAGS])])
AC_SUBST([WERROR_CFLAGS])
+ nw="$nw -Wduplicated-branches" # Too many false alarms
+ nw="$nw -Wformat-overflow=2" # False alarms due to GCC bug 80776
nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
nw="$nw -Woverlength-strings" # Not a problem these days
nw="$nw -Wformat-nonliteral" # we do this a lot
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2017-04-14.11}
+\def\texinfoversion{2017-05-14.14}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
\xdef\safexrefname{#1}%
}%
%
- \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ \bgroup
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
+ \egroup
+ % We put the \gdef inside a group to avoid the definitions building up on
+ % TeX's save stack, which can cause it to run out of space for aux files with
+ % thousands of lines. \gdef doesn't use the save stack, but \csname does
+ % when it defines an unknown control sequence as \relax.
%
% Was that xref control sequence that we just defined for a float?
\expandafter\iffloat\csname XR\safexrefname\endcsname
MATCH until we see something like `;' or `{'. */
while (!LOOKING_AT3 (';', YYEOF, '{'))
MATCH ();
- done = 1;
-
+ FALLTHROUGH;
case '{':
done = 1;
break;
free (id);
return;
}
-
+ FALLTHROUGH;
case '=':
/* Assumed to be the start of an initialization in this
context. */
case 'c':
/* Backward compatibility: support obsolete --ignore-case-regexp. */
optarg = concat (optarg, "i", ""); /* memory leak here */
- /* FALLTHRU */
+ FALLTHROUGH;
case 'r':
argbuffer[current_arg].arg_type = at_regexp;
argbuffer[current_arg].what = optarg;
case 't': typedefs = true; break;
case 'T': typedefs = typedefs_or_cplusplus = true; break;
case 'u': update = true; break;
- case 'v': vgrind_style = true; /*FALLTHRU*/
+ case 'v': vgrind_style = true; FALLTHROUGH;
case 'x': cxref_style = true; break;
case 'w': no_warnings = true; break;
default:
{
default:
hval += asso_values[(unsigned char) str[2]];
- /*FALLTHROUGH*/
+ FALLTHROUGH;
case 2:
hval += asso_values[(unsigned char) str[1]];
break;
*c_extp = (*c_extp | C_PLPL) & ~C_AUTO;
if (toktype == st_C_template)
break;
- /* FALLTHRU */
+ FALLTHROUGH;
case st_C_struct:
case st_C_enum:
if (parlev == 0
default:
break;
}
- /* FALLTHRU */
+ FALLTHROUGH;
case fvnameseen:
if (len >= 10 && strneq (str+len-10, "::operator", 10))
{
case '\0':
/* Hmmm, something went wrong. */
CNL ();
- /* FALLTHRU */
+ FALLTHROUGH;
case '\'':
inchar = false;
break;
|| (members
&& plainc && instruct))
make_C_tag (true); /* a function */
- /* FALLTHRU */
+ FALLTHROUGH;
default:
fvextern = false;
fvdef = fvnone;
else
token.valid = false;
} /* switch (fvdef) */
- /* FALLTHRU */
+ FALLTHROUGH;
default:
if (!instruct)
typdef = tnone;
|| (globals && bracelev == 0
&& (!fvextern || declarations)))
make_C_tag (false); /* a variable */
- /* FALLTHRU */
+ FALLTHROUGH;
default:
fvdef = fvnone;
}
fvdef = fignore;
break;
}
- /* FALLTHRU */
+ FALLTHROUGH;
case foperator:
fvdef = fstartlist;
break;
}
}
make_C_tag (true); /* a function */
- /* FALLTHRU */
+ FALLTHROUGH;
case fignore:
fvdef = fvnone;
break;
if ((members && bracelev == 1)
|| (globals && bracelev == 0 && (!fvextern || declarations)))
make_C_tag (false); /* a variable */
- /* FALLTHRU */
+ FALLTHROUGH;
default:
fvdef = vignore;
}
objdef = omethodsign;
break;
}
- /* FALLTHRU */
+ FALLTHROUGH;
resetfvdef:
case '#': case '~': case '&': case '%': case '/':
case '|': case '^': case '!': case '.': case '?':
break;
case 's':
single_line = true;
- /* FALLTHRU */
+ FALLTHROUGH;
case 'm':
multi_line = true;
need_filebuf = true;
#include <string.h>
#include <stdbool.h>
+#ifndef FALLTHROUGH
+# if __GNUC__ < 7
+# define FALLTHROUGH ((void) 0)
+# else
+# define FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+#endif
+
#ifdef COMPILE_WIDE
# include <endian.h>
# define CHAR_T wchar_t
#ifndef _NL_CURRENT
format_char = L_('p');
#endif
- /* FALLTHROUGH */
-
+ FALLTHROUGH;
case L_('p'):
if (change_case)
{
case L_('\0'): /* GNU extension: % at end of format. */
--f;
- /* Fall through. */
+ FALLTHROUGH;
default:
/* Unknown format; output the format, including the '%',
since this is most likely the right thing to do if a
AC_LIBOBJ([symlink])
fi
gl_UNISTD_MODULE_INDICATOR([symlink])
- gl_HEADER_SYS_SELECT
+ AC_REQUIRE([gl_HEADER_SYS_SELECT])
AC_PROG_MKDIR_P
gl_HEADER_SYS_STAT_H
AC_PROG_MKDIR_P
# comm -3 \
# <(sed -n 's/^ *\(-[^ ]*\) .*/\1/p' manywarnings.m4 | sort) \
# <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort |
- # grep -v -x -f <(
+ # grep -v -x -F -f <(
# awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec))
gl_manywarn_set=
- for gl_manywarn_item in \
- -fno-common \
+ for gl_manywarn_item in -fno-common \
-W \
-Wabi \
-Waddress \
-Wattributes \
-Wbad-function-cast \
-Wbool-compare \
+ -Wbool-operation \
+ -Wbuiltin-declaration-mismatch \
-Wbuiltin-macro-redefined \
-Wcast-align \
-Wchar-subscripts \
-Wcomments \
-Wcoverage-mismatch \
-Wcpp \
+ -Wdangling-else \
-Wdate-time \
-Wdeprecated \
-Wdeprecated-declarations \
-Wdiscarded-qualifiers \
-Wdiv-by-zero \
-Wdouble-promotion \
+ -Wduplicated-branches \
-Wduplicated-cond \
+ -Wduplicate-decl-specifier \
-Wempty-body \
-Wendif-labels \
-Wenum-compare \
+ -Wexpansion-to-defined \
-Wextra \
-Wformat-contains-nul \
-Wformat-extra-args \
-Winit-self \
-Winline \
-Wint-conversion \
+ -Wint-in-bool-context \
-Wint-to-pointer-cast \
-Winvalid-memory-model \
-Winvalid-pch \
-Wlogical-op \
-Wmain \
-Wmaybe-uninitialized \
+ -Wmemset-elt-size \
-Wmemset-transposed-args \
-Wmisleading-indentation \
-Wmissing-braces \
-Wpacked-bitfield-compat \
-Wparentheses \
-Wpointer-arith \
+ -Wpointer-compare \
-Wpointer-sign \
-Wpointer-to-int-cast \
-Wpragmas \
+ -Wpsabi \
+ -Wrestrict \
-Wreturn-local-addr \
-Wreturn-type \
-Wscalar-storage-order \
-Wswitch \
-Wswitch-bool \
-Wswitch-default \
+ -Wswitch-unreachable \
-Wsync-nand \
-Wsystem-headers \
-Wtautological-compare \
# gcc --help=warnings outputs an unusual form for these options; list
# them here so that the above 'comm' command doesn't report a false match.
+ # Would prefer "min (PTRDIFF_MAX, SIZE_MAX)", but it must be a literal:
+ ptrdiff_max_max=9223372036854775807
+ gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$ptrdiff_max_max"
gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
+ gl_manywarn_set="$gl_manywarn_set -Wformat-overflow=2"
+ gl_manywarn_set="$gl_manywarn_set -Wformat-truncation=2"
+ gl_manywarn_set="$gl_manywarn_set -Wimplicit-fallthrough=5"
gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
+ gl_manywarn_set="$gl_manywarn_set -Wstringop-overflow=2"
gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
+ gl_manywarn_set="$gl_manywarn_set -Wvla-larger-than=4031"
# These are needed for older GCC versions.
if test -n "$GCC"; then
type = RLI;
bidi_it->orig_type = type;
}
- /* FALLTHROUGH */
+ FALLTHROUGH;
case RLI: /* X5a */
if (override == NEUTRAL_DIR)
bidi_it->type_after_wn = type;
case 'N': /* Prefix arg as number, else number from minibuffer. */
if (!NILP (prefix_arg))
goto have_prefix_arg;
+ FALLTHROUGH;
case 'n': /* Read number from minibuffer. */
args[i] = call1 (Qread_number, callint_message);
/* Passing args[i] directly stimulates compiler bug. */
case CCL_ReadBranch: /* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */
CCL_READ_CHAR (reg[rrr]);
- /* fall through ... */
+ FALLTHROUGH;
case CCL_Branch: /* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */
{
int ioff = 0 <= reg[rrr] && reg[rrr] < field1 ? reg[rrr] : field1;
case CCL_ReadJumpCondExprConst: /* A--D--D--R--E--S--S-rrrXXXXX */
CCL_READ_CHAR (reg[rrr]);
+ FALLTHROUGH;
case CCL_JumpCondExprConst: /* A--D--D--R--E--S--S-rrrXXXXX */
i = reg[rrr];
jump_address = ic + ADDR;
case CCL_ReadJumpCondExprReg: /* A--D--D--R--E--S--S-rrrXXXXX */
CCL_READ_CHAR (reg[rrr]);
+ FALLTHROUGH;
case CCL_JumpCondExprReg:
i = reg[rrr];
jump_address = ic + ADDR;
|| CODING_ISO_FLAGS (coding) & CODING_ISO_FLAG_SEVEN_BITS)
goto invalid_code;
/* This is a graphic character, we fall down ... */
-
+ FALLTHROUGH;
case ISO_graphic_plane_1:
if (charset_id_1 < 0)
goto invalid_code;
case ISO_single_shift_2_7:
if (! (CODING_ISO_FLAGS (coding) & CODING_ISO_FLAG_SEVEN_BITS))
goto invalid_code;
+ FALLTHROUGH;
case ISO_single_shift_2:
if (! (CODING_ISO_FLAGS (coding) & CODING_ISO_FLAG_SINGLE_SHIFT))
goto invalid_code;
{
case ']': /* end of the current direction */
coding->mode &= ~CODING_MODE_DIRECTION;
+ break;
case '0': /* end of the current direction */
case '1': /* start of left-to-right direction */
# define ATTRIBUTE_FORMAT(spec) /* empty */
#endif
+#if GNUC_PREREQ (7, 0, 0)
+# define FALLTHROUGH __attribute__ ((__fallthrough__))
+#else
+# define FALLTHROUGH ((void) 0)
+#endif
+
#if GNUC_PREREQ (4, 4, 0) && defined __GLIBC_MINOR__
# define PRINTF_ARCHETYPE __gnu_printf__
#elif GNUC_PREREQ (4, 4, 0) && defined __MINGW32__
else if (!BUFFER_OBJFWDP (valcontents))
return Qnil;
}
- /* FALLTHROUGH */
+ FALLTHROUGH;
case SYMBOL_LOCALIZED:
/* For a local variable, record both the symbol and which
buffer's or frame's value we are saving. */
case 'S':
string[-1] = 's';
+ FALLTHROUGH;
case 's':
if (fmtcpy[1] != 's')
minlen = atoi (&fmtcpy[1]);
{
default:
val = Fcons (make_number (t.ps), val);
- /* Fall through. */
+ FALLTHROUGH;
case 3:
val = Fcons (make_number (t.us), val);
- /* Fall through. */
+ FALLTHROUGH;
case 2:
val = Fcons (make_number (t.lo), val);
val = Fcons (make_number (t.hi), val);
}
/* Ignore flags when sprintf ignores them. */
- space_flag &= ~ plus_flag;
- zero_flag &= ~ minus_flag;
+ space_flag &= ! plus_flag;
+ zero_flag &= ! minus_flag;
char *num_end;
uintmax_t raw_field_width = strtoumax (format, &num_end, 10);
{
memcpy (f, pMd, pMlen);
f += pMlen;
- zero_flag &= ~ precision_given;
+ zero_flag &= ! precision_given;
}
*f++ = conversion;
*f = '\0';
set_default_internal (specpdl_symbol (bind), value, bindflag);
return;
}
- /* FALLTHROUGH */
+ FALLTHROUGH;
case SYMBOL_LOCALIZED:
set_internal (specpdl_symbol (bind), value, Qnil, bindflag);
break;
Qnil, bindflag);
break;
}
- else
- { /* FALLTHROUGH!!
- NOTE: we only ever come here if make_local_foo was used for
- the first time on this var within this let. */
- }
}
+ /* Come here only if make_local_foo was used for the first time
+ on this var within this let. */
+ FALLTHROUGH;
case SPECPDL_LET_DEFAULT:
set_default_internal (specpdl_symbol (this_binding),
specpdl_old_value (this_binding),
SET_SYMBOL_VAL (XSYMBOL (sym), old_value);
break;
}
- else
- { /* FALLTHROUGH!!
- NOTE: we only ever come here if make_local_foo was used for
- the first time on this var within this let. */
- }
}
+ /* Come here only if make_local_foo was used for the first
+ time on this var within this let. */
+ FALLTHROUGH;
case SPECPDL_LET_DEFAULT:
{
Lisp_Object sym = specpdl_symbol (tmp);
case SPECPDL_LET_DEFAULT:
case SPECPDL_LET_LOCAL:
mark_object (specpdl_where (pdl));
- /* Fall through. */
+ FALLTHROUGH;
case SPECPDL_LET:
mark_object (specpdl_symbol (pdl));
mark_object (specpdl_old_value (pdl));
if (! (boot[0] == '\200' && boot[1] == '\242'))
return -1;
boot += 2;
- /* Fall through. */
+ FALLTHROUGH;
case ':':
if (! c_isdigit (boot[0]))
return -1;
max_log_level,
"retry:",
str);
+ FALLTHROUGH;
default:
GNUTLS_LOG2 (1,
max_log_level,
else
gtk_style_context_get_background_color (gsty, state, &col);
- sprintf (buf, "rgb:%04x/%04x/%04x",
- (unsigned) (col.red * 65535),
- (unsigned) (col.green * 65535),
- (unsigned) (col.blue * 65535));
+ unsigned short
+ r = col.red * 65535,
+ g = col.green * 65535,
+ b = col.blue * 65535;
+ sprintf (buf, "rgb:%04x/%04x/%04x", r, g, b);
success_p = x_parse_color (f, buf, color) != 0;
#else
GtkStyle *gsty = gtk_widget_get_style (FRAME_GTK_WIDGET (f));
GtkWidget *wparent = gtk_widget_get_parent (wscroll);
gint msl;
int scale = xg_get_gdk_scale ();
- bool hidden;
top /= scale;
left /= scale;
/* Move and resize to new values. */
gtk_fixed_move (GTK_FIXED (wfixed), wparent, left, top);
gtk_widget_style_get (wscroll, "min-slider-length", &msl, NULL);
- if (msl > height)
+ bool hidden = height < msl;
+ if (hidden)
{
/* No room. Hide scroll bar as some themes output a warning if
the height is less than the min size. */
gtk_widget_hide (wparent);
gtk_widget_hide (wscroll);
- hidden = true;
}
else
{
case 0240:
if (! NILP (BVAR (current_buffer, enable_multibyte_characters)))
return column;
+ FALLTHROUGH;
case ' ':
column++;
break;
c = READCHAR;
if (c != '-')
error ("Invalid escape character syntax");
+ FALLTHROUGH;
case '^':
c = READCHAR;
if (c == '\\')
case 'U':
/* Post-Unicode-2.0: Up to eight hex chars. */
unicode_hex_count = 8;
+ FALLTHROUGH;
case 'u':
/* A Unicode escape. We only permit them in strings and characters,
*pch = c;
return Qnil;
}
-
- /* Otherwise, we fall through! Note that the atom-reading loop
- below will now loop at least once, assuring that we will not
- try to UNREAD two characters in a row. */
}
+ /* The atom-reading loop below will now loop at least once,
+ assuring that we will not try to UNREAD two characters in a
+ row. */
+ FALLTHROUGH;
default:
default_label:
if (c <= 040) goto retry;
if ((syntax & RE_BK_PLUS_QM)
|| (syntax & RE_LIMITED_OPS))
goto normal_char;
+ FALLTHROUGH;
handle_plus:
case '*':
/* If there is no previous pattern... */
with non-0. */
if (regnum == 0)
FREE_STACK_RETURN (REG_BADPAT);
+ FALLTHROUGH;
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
regnum = 10*regnum + (c - '0'); break;
j < (1 << BYTEWIDTH); j++)
fastmap[j] = 1;
}
-
- /* Fallthrough */
+ FALLTHROUGH;
case charset:
if (!fastmap) break;
not = (re_opcode_t) *(p - 1) == charset_not;
case on_failure_jump_nastyloop:
assert ((re_opcode_t)pat[-2] == no_op);
PUSH_FAILURE_POINT (pat - 2, str);
- /* Fallthrough */
-
+ FALLTHROUGH;
case on_failure_jump_loop:
case on_failure_jump:
case succeed_n:
{
/* Setup translate_prev_byte1/2/3/4 from CHAR_BASE. Only a
byte following them are the target of translation. */
+ eassume (0x80 <= char_base && char_base <= MAX_CHAR);
unsigned char str[MAX_MULTIBYTE_LENGTH];
int cblen = CHAR_STRING (char_base, str);
case Sstring_fence:
case Scomment_fence:
c = (code == Sstring_fence ? ST_STRING_STYLE : ST_COMMENT_STYLE);
+ FALLTHROUGH;
case Sstring:
/* Track parity of quotes. */
if (string_style == -1)
goto lose;
INC_BOTH (from, from_byte);
/* Treat following character as a word constituent. */
+ FALLTHROUGH;
case Sword:
case Ssymbol:
if (depth || !sexpflag) break;
case Scomment_fence:
comstyle = ST_COMMENT_STYLE;
- /* FALLTHROUGH */
+ FALLTHROUGH;
case Scomment:
if (!parse_sexp_ignore_comments) break;
UPDATE_SYNTAX_TABLE_FORWARD (from);
goto close1;
}
mathexit = 1;
-
+ FALLTHROUGH;
case Sopen:
if (!++depth) goto done;
break;
goto open2;
}
mathexit = 1;
-
+ FALLTHROUGH;
case Sclose:
if (!++depth) goto done2;
break;
}
else if (glyph->u.glyphless.method == GLYPHLESS_DISPLAY_HEX_CODE)
{
- sprintf (buf, "%0*X",
- glyph->u.glyphless.ch < 0x10000 ? 4 : 6,
- glyph->u.glyphless.ch + 0u);
+ unsigned int ch = glyph->u.glyphless.ch;
+ eassume (ch <= MAX_CHAR);
+ sprintf (buf, "%0*X", ch < 0x10000 ? 4 : 6, ch);
str = buf;
}
{
case MappingModifier:
x_find_modifier_meanings (dpyinfo);
- /* This is meant to fall through. */
+ FALLTHROUGH;
case MappingKeyboard:
XRefreshKeyboardMapping ((XMappingEvent *) &event->xmapping);
}