Go to file
Douglas Gregor 06d40de8bb c-common.c (c_common_nodes_and_builtins): Since variants of void_type_node get built before it is given a name...
2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* c-common.c(c_common_nodes_and_builtins): Since variants of
	void_type_node get built before it is given a name, we need to
	give those variants the name, too. 
	(complete_array_type): We need to work with the canonical main
	type of the array, from which we will build the qualified version.
	* params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
	* print-tree.c (print_node): Display canonical type information
	for each type.
	* stor-layout.c (layout_type): When we don't know the
	alignment of a type for which we're building an array, we end up
	guessing wrong, so make the type require structural equality.
	* tree.c (make_node_stat): When we build a new type, it is its
	own canonical type.
	(build_type_attribute_qual_variant): When building an attribute
	variant, its canonical type is the non-attribute variant. However,
	if the attributes are target-dependent and they differ, we need to
	use structural equality checks for this type.
	(build_qualified_type): A qualified type is not equivalent to its
	unqualified variant; set the canonical type appropriately.
	(build_distinct_type_copy): When building a distinct type from
	another type, the new type is its own canonical type.
	(build_variant_type_copy): When building a new type variant, we
	assume that it is equivalent to the original type.
	(build_pointer_type_for_mode): When building a pointer type, also
	build a canonical type pointer.
	(build_reference_type_for_mode): When building a reference type,
	also build a canonical type reference.
	(build_index_type): When we can't hash an index type (e.g.,
	because its maximum value is negative), the index type requires
	structural equality tests.
	(build_array_type): Build the canonical form of an array type.
	(build_function_type): Function types require structural equality,
	because they contain default arguments, attributes, etc. 
	(build_method_type_directly): Ditto for method types.
	(build_offset_type): Build the canonical offset type.
	(build_complex_type): Build the canonical vector type.
	(make_vector_type): Build the canonical vector type.
	* tree.h (TYPE_CANONICAL): New.
	(TYPE_STRUCTURAL_EQUALITY_P): New.
	(SET_TYPE_STRUCTURAL_EQUALITY): New.
	(struct tree_type): Added "canonical" field.
	* params.h (VERIFY_CANONICAL_TYPES): New.
	* doc/c-tree.texi (TYPE_CANONICAL): Document.
	(TYPE_STRUCTURAL_EQUALITY_P): Document.
	(SET_TYPE_STRUCTURAL_EQUALITY): Document.
	* doc/invoke.texi (verify-canonical-types): Document --param
	parameter for verifying canonical types.
	
2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* typeck.c (structural_comptypes): Renamed from "comptypes".
	(comptypes): Use canonical type information to perform fast type
	comparison. When VERIFY_CANONICAL_TYPES, verify that the
	canonical type comparison returns the same results as we would see
	from the current, structural check. Support COMPARE_STRUCTURAL
	when we need structural checks.
	* decl.c (typename_compare): Fix comment.
	(build_typename_type): TYPENAME_TYPE nodes require structural
	equality checks, because they resolve different based on the
	current class type.
	(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
	require structural equality checks (for now).
	(build_ptrmemfunc_type): Build the canonical pointer to member
	function type.
	(compute_array_index_type): Whenever we build a new index type
	to represent the size of an array in a template, we need to mark
	this index type as requiring structural equality. This goes for
	arrays with value-dependent sizes with the current ABI, or all
	arrays with ABI-1.
	* tree.c (cplus_array_hash): New.
	(struct cplus_array_info): New.
	(cplus_array_compare): New.
	(cplus_array_htab): New.
	(build_cplus_array_type_1): Use a hash table to cache the array
	types we build. Build the canonical array type for each array
	type.
	(cp_build_qualified_type_real): When building a cv-qualified array
	type, use the hash table of array types and build canonical array
	types as necessary.
	(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
	use structural equality (for now).
	* cp-tree.h (COMPARE_STRUCTURAL): New.
	* pt.c (canonical_template_parms): New.
	(canonical_type_parameter): New.
	(process_template_parm): Find the canonical type parameter.
	(lookup_template_class): When we have named the primary template
	type, set the canonical type for our template class to the primary
	template type. If any of the template arguments need structural
	equality checks, the template class needs structural equality
	checks.
	(tsubst): When reducing the level of a template template
	parameter, we require structural equality tests for the resulting
	parameter because its template parameters have not had their types
	canonicalized. When reducing a template type parameter, find the
	canonical reduced type parameter.
	(any_template_arguments_need_structural_equality_p): New.

2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
	
	* objc-act.c (objc_build_volatilized_type): Keep track of
	canonical types.
	(objc_get_protocol_qualified_type): Ditto.

From-SVN: r120341
2007-01-02 14:23:26 +00:00
boehm-gc configure.ac: Fix x86 darwin builds. 2006-12-08 23:54:21 +00:00
config configure.ac: Remove support for building with Apple's gcc-3.1. 2007-01-02 03:35:17 +00:00
contrib * compareSumTests3: POD syntax fix. 2006-09-28 02:03:46 +00:00
fixincludes mkfixinc.sh: Add "*-*-vxworks*" to the list of targets for which a no-op fixer is appropriate. 2006-12-12 09:47:45 +00:00
gcc c-common.c (c_common_nodes_and_builtins): Since variants of void_type_node get built before it is given a name... 2007-01-02 14:23:26 +00:00
gnattools --(top level)-------------------------------------------- 2006-10-10 16:48:09 -07:00
include * ansidecl.h (ATTRIBUTE_PACKED): Define. 2006-12-06 18:08:51 +00:00
INSTALL
intl Makefile.in (distclean): Delete config files. 2006-09-27 18:51:52 +09:30
libada re PR ada/29802 (wrong directory in makefile for ada and libada when srcdir=.) 2006-11-17 10:31:47 +00:00
libcpp lex.c (_cpp_clean_line): Add uses of __builtin_expect. 2006-12-29 15:43:55 +00:00
libdecnumber decRound.c: Move declarations to new file, update comments. 2006-11-29 18:34:56 +00:00
libffi configure.ac: Add TARGET for x86_64-*-darwin*. 2006-12-14 08:34:45 +01:00
libgfortran Rotate ChangeLog 2007-01-01 19:17:50 +00:00
libgomp re PR libgomp/28209 (None of the GOMP_* environment variables are documented) 2006-12-21 17:29:08 -05:00
libiberty cp-demangle.h: Add comment explaining what to do to avoid overrunning string. 2006-12-21 01:29:27 +00:00
libjava configure.ac: add $built_gcc_dir to $GCJH and $GCJ when crossbuilding. 2006-12-21 18:07:33 +00:00
libmudflap tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking if static linking doesn't even work. 2006-12-04 11:10:38 +00:00
libobjc In gcc/: PR 23067 2006-11-01 05:28:41 +00:00
libssp Index: config/ChangeLog 2006-10-15 07:42:57 +00:00
libstdc++-v3 re PR libstdc++/30226 (FAIL: abi_check) 2006-12-29 12:52:14 +00:00
maintainer-scripts * crontab: Add 4.2 branch. Set trunk to 4.3. 2006-10-21 03:15:08 +00:00
zlib Makefile.am: Add html and install-html stubs. 2006-06-13 21:15:06 +00:00
ABOUT-NLS
ChangeLog configure.in: Reorganize recognition of languages. 2006-12-29 16:58:48 +00:00
ChangeLog.tree-ssa
compile COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
config-ml.in config-ml.in: Alter CCASFLAGS to include special multilib options the same as is done for CFLAGS. 2006-06-13 16:48:23 -04:00
config.guess config.guess: Import latest version. 2006-12-11 15:11:34 +11:00
config.rpath all files: Update FSF address. 2005-07-16 02:30:53 +00:00
config.sub config.guess: Import latest version. 2006-12-11 15:11:34 +11:00
configure configure.in: Reorganize recognition of languages. 2006-12-29 16:58:48 +00:00
configure.in configure.in: Reorganize recognition of languages. 2006-12-29 16:58:48 +00:00
COPYING COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
COPYING.LIB Update COPYING.LIB from upstream. Correct last Changelog. 2005-07-14 01:41:54 +00:00
depcomp top level: 2005-06-13 08:26:05 +00:00
install-sh COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
libtool-ldflags libtool-ldflags: New script. 2006-01-03 00:30:27 +00:00
libtool.m4 all files: Update FSF address. 2005-07-16 02:30:53 +00:00
ltcf-c.sh ltcf-c.sh (whole_archive_flag_spec): Remove '-all_load $convenience' to match upstream libtool for darwin. 2005-11-18 23:53:08 +01:00
ltcf-cxx.sh all files: Update FSF address. 2005-07-16 02:30:53 +00:00
ltcf-gcj.sh all files: Update FSF address. 2005-07-16 02:30:53 +00:00
ltconfig ltconfig: chmod 644 before ranlib during install. 2006-07-04 20:20:01 +00:00
ltmain.sh Port to hosts whose 'sort' and 'tail' implementations treat operands with leading '+' as file names... 2006-07-06 23:24:51 +00:00
MAINTAINERS MAINTAINERS: Add myself as build system maintainer. 2006-12-19 10:59:36 +00:00
Makefile.def re PR bootstrap/29544 (Not building with checking in stage1) 2006-12-19 11:01:36 +00:00
Makefile.in Makefile.tpl (GCC_STRAP_TARGETS, [...]): Remove. 2006-12-29 16:42:51 +00:00
Makefile.tpl Makefile.tpl (GCC_STRAP_TARGETS, [...]): Remove. 2006-12-29 16:42:51 +00:00
missing COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
mkdep
mkinstalldirs COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
move-if-change Import from Autoconf sources: 2005-11-21 13:21:37 +11:00
README
README.SCO * README.SCO: Update the URL. 2005-05-08 17:49:46 +00:00
symlink-tree COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00
ylwrap COPYING, [...]: Sync from upstream sources. 2005-07-14 01:08:13 +00:00

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.