Go to file
Marek Polacek 3e2becc495 re PR c/80116 (Warn about macros expanding to multiple statements)
PR c/80116
	* c-common.h (warn_for_multistatement_macros): Declare.
	* c-warn.c: Include "c-family/c-indentation.h".
	(warn_for_multistatement_macros): New function.
	* c.opt (Wmultistatement-macros): New option.
	* c-indentation.c (guard_tinfo_to_string): No longer static.
	Change the parameter type to "enum rid".  Handle RID_SWITCH.
	* c-indentation.h (guard_tinfo_to_string): Declare.

	* c-parser.c (c_parser_if_body): Set the location of the
	body of the conditional after parsing all the labels.  Call
	warn_for_multistatement_macros.
	(c_parser_else_body): Likewise.
	(c_parser_switch_statement): Likewise.
	(c_parser_while_statement): Likewise.
	(c_parser_for_statement): Likewise.
	(c_parser_statement): Add a default argument.  Save the location
	after labels have been parsed.
	(c_parser_c99_block_statement): Likewise.

	* parser.c (cp_parser_statement): Add a default argument.  Save the
	location of the expression-statement after labels have been parsed.
	(cp_parser_implicitly_scoped_statement): Set the location of the
	body of the conditional after parsing all the labels.  Call
	warn_for_multistatement_macros.
	(cp_parser_already_scoped_statement): Likewise.

	* doc/invoke.texi: Document -Wmultistatement-macros.

	* c-c++-common/Wmultistatement-macros-1.c: New test.
	* c-c++-common/Wmultistatement-macros-2.c: New test.
	* c-c++-common/Wmultistatement-macros-3.c: New test.
	* c-c++-common/Wmultistatement-macros-4.c: New test.
	* c-c++-common/Wmultistatement-macros-5.c: New test.
	* c-c++-common/Wmultistatement-macros-6.c: New test.
	* c-c++-common/Wmultistatement-macros-7.c: New test.
	* c-c++-common/Wmultistatement-macros-8.c: New test.
	* c-c++-common/Wmultistatement-macros-9.c: New test.
	* c-c++-common/Wmultistatement-macros-10.c: New test.
	* c-c++-common/Wmultistatement-macros-11.c: New test.

From-SVN: r249643
2017-06-26 10:02:27 +00:00
config Enable -flto in all PGO stages for bootstrap-lto-{,noplugin}.mk. 2017-06-19 13:20:20 +00:00
contrib Fix variant selection in dg-cmp-results.sh 2017-06-21 16:20:57 +00:00
fixincludes config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide". 2017-06-12 12:10:12 +00:00
gcc re PR c/80116 (Warn about macros expanding to multiple statements) 2017-06-26 10:02:27 +00:00
gnattools
gotools Don't use >& for I/O redirection 2017-06-16 06:58:06 +00:00
include
INSTALL
intl
libada re PR ada/80921 (cross compiling fails to build Ada shared libraries) 2017-06-01 10:51:15 +00:00
libatomic
libbacktrace configure.ac: Add AC_SYS_LARGEFILE. 2017-06-21 07:04:13 +00:00
libcc1 cp-tree.h (build_this_parm, [...]): Add FN parm. 2017-06-16 15:42:33 +00:00
libcilkrts os-unix-sysdep.c (__cilkrts_getticks): Adjust preprocessor test for SPARC/Linux. 2017-06-23 17:33:43 +00:00
libcpp line-map.c (location_adhoc_data_update): Perform addition in uintptr_t type rather than char * type. 2017-06-21 12:59:12 +02:00
libdecnumber
libffi
libgcc driver-i386.c (host_detect_local_cpu): Add Kaby Lake models to skylake case. 2017-06-22 21:46:10 +02:00
libgfortran re PR fortran/52473 (CSHIFT slow - inline it?) 2017-06-24 07:07:56 +00:00
libgo runtime: complete defer handling in CgocallBackDone 2017-06-23 20:19:40 +00:00
libgomp re PR c++/81130 (ICE OpenMP shared clause in gimplify_var_or_parm_decl, at gimplify.c:2584) 2017-06-21 12:58:00 +02:00
libhsail-rt
libiberty simple-object-xcoff.c (simple_object_xcoff_find_sections): Search symbol table for .go_export symbol and apply pfn if found. 2017-06-07 19:23:55 -04:00
libitm PR c++/80560 - warn on undefined memory operations involving non-trivial types 2017-06-15 21:48:59 -06:00
libmpx
libobjc
liboffloadmic
libquadmath
libsanitizer
libssp
libstdc++-v3 PR libstdc++/81173 fix undefined memset with null pointer 2017-06-22 15:16:38 +01:00
libvtv
lto-plugin
maintainer-scripts
zlib
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ChangeLog * MAINTAINERS: Add myself to Write After Approval. 2017-06-26 12:44:49 +03:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure configure.ac (*-*-linux-android*): Set target_makefile_frag. 2017-06-03 08:23:22 +00:00
configure.ac configure.ac (*-*-linux-android*): Set target_makefile_frag. 2017-06-03 08:23:22 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS * MAINTAINERS: Add myself to Write After Approval. 2017-06-26 12:44:49 +03:00
Makefile.def Introduce 4-stages profiledbootstrap to get a better profile. 2017-06-19 13:19:56 +00:00
Makefile.in Introduce 4-stages profiledbootstrap to get a better profile. 2017-06-19 13:19:56 +00:00
Makefile.tpl Introduce 4-stages profiledbootstrap to get a better profile. 2017-06-19 13:19:56 +00:00
missing
mkdep
mkinstalldirs
move-if-change
README
symlink-tree
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.