Go to file
Zack Weinberg 339a28b96a c-decl.c (struct binding_level): Add shadowed_tags and function_body...
2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct binding_level): Add shadowed_tags and
	function_body; remove this_block, tag_transparent, and
	subblocks_tag_transparent; update comments.
	(clear_binding_level, lookup_tag_reverse): Kill.
	(make_binding_level): Use ggc_alloc_cleared or memset.
	(lookup_tag): Remove struct binding_level* parameter.  All
	callers changed. Just look at IDENTIFIER_TAG_VALUE, and
	current_binding_level->tags if asked for thislevel_only or if
	we might have to diagnose "struct foo; union foo;"
	(pushlevel): Ignore argument.  Do not push another binding
	level on the transition from the parameters to the top level
	of the function body; just tweak the flags and proceed.
	(poplevel): Overhaul.  Clear IDENTIFIER_TAG_VALUEs; on exiting
	a function body, separate the parameter list from the
	top-level local variables.
	(set_block): Do nothing.
	(pushtag): Set IDENTIFIER_TAG_VALUE and add an entry to
	shadowed_tags if necessary.
	(warn_if_shadowing): Nuke the special case for local shadowing
	parameter.
	(pushdecl): Do not create a shadow entry if we are replacing
	an older decl in the same binding level.
	(pushdecl_function_level): Tweak for new way of indicating
	function scope.
	(shadow_tag_warned): Use TYPE_NAME, not	lookup_tag_reverse.
	(start_function): Don't set subblocks_tag_transparent.
	(finish_function): Fix up the binding_level stack for totally
	empty functions.  Otherwise, don't call poplevel.

	* c-common.c (shadow_warning): MANDATORY argument is no longer
	necessary.  Always use plain warning.
	* c-common.h: Update to match.

	* cfglayout.c (scope_to_insns_initialize): Clear block when we
	hit the FUNCTION_DECL.
	* function.c: Do not create cyclic tree structure.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h (struct lang_identifier): Replace global_value,
	local_value members with symbol_value, tag_value.  Kill
	implicit_decl and limbo_value.
	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_LOCAL_VALUE,
	IDENTIFIER_LIMBO_VALUE, IDENTIFIER_IMPLICIT_DECL,
	C_MISSING_PROTOTYPE_WARNED): Kill.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE,
	C_DECL_IMPLICIT, C_DECL_ISNT_PROTOTYPE): New.
	(C_DECL_ANTICIPATED): Rename to C_DECL_INVISIBLE.
	(implicit_decl_warning, lookup_name_current_level,
	record_function_scope_shadow): Don't prototype.
	(pushdecl_function_level): Prototype.

	* c-decl.c (truly_local_externals): New variable.
	(struct binding_level): Adjust commentary.
	(get_function_binding_level, clear_limbo_values,
	record_function_scope_shadow): Kill.
	(lookup_name_current_level, implicit_decl_warning): Are	now static.
	(any_external_decl, record_external_decl): New static functions.
	(clone_underlying type): Split out of pushdecl.
	(c_print_identifier): Update to match changes to struct
	lang_identifier.
	(poplevel): Delete #if 0 block.  Make externals invisible
	instead of clearing their IDENTIFIER_SYMBOL_VALUEs.  Don't
	call clear_limbo_values.  Refer to IDENTIFIER_SYMBOL_VALUE not
	IDENTIFIER_GLOBAL_VALUE or IDENTIFIER_LOCAL_VALUE.
	(duplicate-decls): For real parm decl after a forward decl,
	set TREE_ASM_WRITTEN here.  Allow void foo(...) followed by
	foo(...) { } with only a warning.  Say whether a previous
	declaration was implicit.
	(warn_if_shadowing): Now handles all shadowing, not just
	local-over-local.  Clarify comments.
	(pushdecl): Rewritten.  There is no longer a distinction
	between global and local symbol values; they're all
	IDENTIFIER_SYMBOL_VALUE.  Call record_external_decl on all
	DECL_EXTERNAL decls, and use any_external_decl to check
	against previous externals.  Kill #if 0 blocks.  Don't
	tolerate error_mark_node being NULL.
	(pushdecl_top_level): Handle only those cases which
	Objective C (the only user) needs.
	(pushdecl_function_level): New function.
	(implicitly_declare): Create ordinary decls with
	C_DECL_IMPLICIT set.  Recycle old decls, however they got
	created.
	(lookup_name): It's always IDENTIFIER_SYMBOL_VALUE. Return 0
	for C_DECL_INVISIBLE symbols.
	(lookup_name_current_level): Likewise.  Use chain_member.
	(c_make_fname_decl): Don't muck with DECL_CONTEXT.
	Use pushdecl_function_level.
	(builtin_function): Use C_DECL_INVISIBLE.
	(start_function): Don't muck with IDENTIFIER_IMPLICIT_DECL.
	Use C_DECL_ISNT_PROTOTYPE and C_DECL_IMPLICIT.
	(store_parm_decls): It's IDENTIFIER_SYMBOL_VALUE now.
	(identifier_global_value): Same.  Must scan
	global_binding_level in extremis.

	* c-typeck.c (undeclared_variable): New static function, split
	from build_external_ref.
	(build_external_ref): Use DECL_CONTEXT, not
	IDENTIFIER_LOCAL_VALUE, to decide whether a local hides
	an instance variable.  Restructure for clarity.
	* objc/objc-act.c: Use identifier_global_value, not
	IDENTIFIER_GLOBAL_VALUE.

cp:
	* decl.c: Update all calls to shadow_warning.

testsuite:
	* gcc.c-torture/execute/builtin-noret-2.c: New.
	* gcc.c-torture/execute/builtin-noret-2.x: New.
	XFAIL builtin-noret-2.c at -O1 and above.
	* gcc.dg/redecl.c: New.
	* gcc.dg/Wshadow-1.c: Update error regexps.

From-SVN: r65460
2003-04-11 04:26:55 +00:00
INSTALL README: Update wrt. 2001-06-13 14:51:33 +00:00
boehm-gc libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
config configure.in: Replace ${libstdcxx_version} by its value. 2003-03-04 07:23:56 +00:00
contrib * compare_tests: Fix exit status and be more flexible with spacing. 2003-04-04 22:49:10 +00:00
fastjar fastjar.texi: Remove @ at start of file. 2003-03-30 17:56:33 +01:00
gcc c-decl.c (struct binding_level): Add shadowed_tags and function_body... 2003-04-11 04:26:55 +00:00
include ansidecl.h (ATTRIBUTE_NONNULL, [...]): New. 2003-03-17 22:57:27 +00:00
libf2c libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
libffi libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
libiberty Makefile.in (MULTIOSDIR): New macro. 2003-03-23 10:15:50 +00:00
libjava libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
libobjc libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
libstdc++-v3 libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
maintainer-scripts * root.texi: Change version number to 3.4. 2002-12-16 22:18:33 +00:00
zlib libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
.cvsignore configure, .cvsignore: Revert previous change... 2002-06-19 18:10:09 +00:00
COPYING COPYING: Update to current ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes... 2000-12-18 21:47:20 +00:00
COPYING.LIB COPYING.LIB: Update to LGPL 2.1 from the FSF. 2001-01-29 13:32:47 +00:00
ChangeLog libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
MAINTAINERS MAINTAINERS: Add my email address. 2003-04-09 12:51:09 +00:00
Makefile.def Makefile.def: Remove "snavigator", "grep", and "db" modules. 2003-02-06 15:55:11 -05:00
Makefile.in Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES back down. 2003-03-14 20:44:37 +00:00
Makefile.tpl Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES back down. 2003-03-14 20:44:37 +00:00
README * README: Remove version number. 2001-06-13 19:48:09 +01:00
config-ml.in config-ml.in doesn't need to worry about cygnus configure 2002-07-01 19:59:22 +00:00
config.guess config.guess: Updated to 2003-01-30's version. 2003-01-30 22:44:14 +00:00
config.if config.if: If gcc_version is already set, just use it. 2003-01-30 11:52:51 +00:00
config.sub config.guess: Updated to 2003-01-30's version. 2003-01-30 22:44:14 +00:00
configure Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES up. 2003-03-12 20:41:00 +00:00
configure.in Makefile.tpl: Move .NOEXPORT, MAKEOVERRIDES up. 2003-03-12 20:41:00 +00:00
install-sh * install-sh: Use _inst.$$_ for temp file name. 2002-01-25 18:42:28 -05:00
libtool.m4 libtool.m4 (lt_cv_deplibs_check_method): Use pass_all on mips*. 2003-04-11 04:20:21 +00:00
ltcf-c.sh Merge basic-improvements-branch to trunk 2002-12-16 18:23:00 +00:00
ltcf-cxx.sh libtool.m4 (LD): Append -melf* option to LD on IRIX with GNU ld. 2003-02-20 01:11:51 +00:00
ltcf-gcj.sh ltcf-cxx.sh: Replace $linker_flags with $compiler_flags wherever it is used as argument to $CC. 2003-02-19 23:50:23 +00:00
ltconfig libtool.m4 (LD): Append -melf* option to LD on IRIX with GNU ld. 2003-02-20 02:09:45 +00:00
ltmain.sh ltconfig (osf[345]): Append $major to soname_spec. 2002-11-20 15:59:07 +00:00
missing merge with /cvs/src 2000-07-22 04:08:22 -04:00
mkdep merge with /cvs/src 2000-07-22 04:08:22 -04:00
mkinstalldirs Initial revision 1997-08-21 18:57:35 -04:00
move-if-change FSF address fix in copyright header. 1999-01-11 07:12:18 -07:00
symlink-tree Makefile.in: handle DOS-style absolute paths. 2000-12-09 11:06:19 -05:00
ylwrap ylwrap: Change absolute path checks to check for DOS style path names. 1998-10-08 17:26:54 -06:00

README

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the file 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.html for how to report bugs usefully.