Go to file
Paul Thomas 8b7043164f array.c (resolve_array_list): Apply C4106.
2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* array.c (resolve_array_list): Apply C4106.
	* check.c (gfc_check_same_type_as): Exclude polymorphic
	entities from check for extensible types. Improved error
	for disallowed argument types to name the offending type.
	* class.c : Update copyright date.
	(gfc_class_null_initializer): Add argument for initialization
	expression and deal with unlimited polymorphic typespecs.
	(get_unique_type_string): Give unlimited polymorphic
	entities a type string.
	(gfc_intrinsic_hash_value): New function.
	(gfc_build_class_symbol): Incorporate unlimited polymorphic
	entities.
	(gfc_find_derived_vtab): Deal with unlimited polymorphic
	entities.
	(gfc_find_intrinsic_vtab): New function.
	* decl.c (gfc_match_decl_type_spec): Match typespec for
	unlimited polymorphic type.
	(gfc_match_data_decl): Skip to 'ok' if unlimited polymorphic.
	expr.c (gfc_check_pointer_assign): Apply C717.  If unlimited
	polymorphic lvalue, find rvalue vtable for all typespecs,
	except unlimited polymorphic expressions.
	(gfc_check_vardef_context): Handle unlimited polymorphic
	entities.
	* gfortran.h : Add unlimited polymorphic attribute. Add
	second arg to gfc_class_null_initializer primitive and
	primitive for gfc_find_intrinsic_vtab.  Add UNLIMITED_POLY
	to detect unlimited polymorphic expressions.
	* interface.c (gfc_compare_types): If expr1 is unlimited
	polymorphic, always return 1. If expr2 is unlimited polymorphic
	enforce C717.
	(gfc_compare_interfaces): Skip past conditions that do not
	apply for unlimited polymorphic entities.
	(compare_parameter): Make sure that an unlimited polymorphic,
	allocatable or pointer, formal argument is matched by an
	unlimited polymorphic actual argument.
	(compare_actual_formal): Ensure that an intrinsic vtable exists
	to match an unlimited polymorphic formal argument.
	* match.c (gfc_match_allocate): Type kind parameter does not
	need to match an unlimited polymorphic allocate-object.
	(alloc_opt_list): An unlimited polymorphic allocate-object
	requires a typespec or a SOURCE tag.
	(select_intrinsic_set_tmp): New function.
	(select_type_set_tmp): Call new function.  If it returns NULL,
	build a derived type or class temporary instead.
	(gfc_match_type_is): Remove restriction to derived types only.
	Bind(C) or sequence derived types not permitted.
	* misc (gfc_typename):  Printed CLASS(*) for unlimited
	polymorphism.
	* module.c : Add AB_UNLIMITED_POLY to pass unlimited
	polymorphic attribute to and from modules.
	* resolve.c (resolve_common_vars): Unlimited polymorphic
	entities cannot appear in common blocks.
	(resolve_deallocate_expr): Deallocate unlimited polymorphic
	enities.
	(resolve_allocate_expr): Likewise for allocation.  Make sure
	vtable exists.
	(gfc_type_is_extensible): Unlimited polymorphic entities are
	not extensible.
	(resolve_select_type): Handle unlimited polymorphic selectors.
	Ensure that length type parameters are assumed and that names
	for intrinsic types are generated.
	(resolve_fl_var_and_proc): Exclude select type temporaries
	from test of extensibility of type.
	(resolve_fl_variable): Likewise for test that assumed character
	length must be a dummy or a parameter.
	(resolve_fl_derived0): Return SUCCESS unconditionally for
	unlimited polymorphic entities. Also, allow unlimited
	polymorphic components.
	(resolve_fl_derived): Return SUCCESS unconditionally for
	unlimited polymorphic entities.
	(resolve_symbol): Return early with unlimited polymorphic
	entities.
	* simplifiy.c : Update copyright year.
	(gfc_simplify_extends_type_of): No simplification possible
	for unlimited polymorphic arguments.
	* symbol.c (gfc_use_derived): Nothing to do for unlimited
	polymorphic "derived type".
	(gfc_type_compatible): Return unity if ts1 is unlimited
	polymorphic.
	* trans-decl.c (create_function_arglist) Formal arguments
	without a character length should be treated in the same way
	as passed lengths.
	(gfc_trans_deferred_vars): Nullify the vptr of unlimited
	polymorphic pointers. Avoid unlimited polymorphic entities
	triggering gcc_unreachable.
	* trans-expr.c (gfc_conv_intrinsic_to_class): New function.
	(gfc_trans_class_init_assign): Make indirect reference of
	src.expr.
	(gfc_trans_class_assign): Expression NULL of unknown type
	should set NULL vptr on lhs. Treat C717 cases where lhs is
	a derived type and the rhs is unlimited polymorphic.
	(gfc_conv_procedure_call): Handle the conversion of a non-class
	actual argument to match an unlimited polymorphic formal
	argument.  Suppress the passing of a character string length
	in this case.  Make sure that calls to the character __copy
	function have two character string length arguments.
	(gfc_conv_initializer): Pass the initialization expression to
	gfc_class_null_initializer.
	(gfc_trans_subcomponent_assign): Ditto.
	(gfc_conv_structure): Move handling of _size component.
	trans-intrinsic.c: (gfc_conv_same_type_as): Handle conditions
	where unlimited polymorphic arguments have null vptr.
	* trans-stmt.c (trans_associate_var): Correctly treat array
	temporaries associated with unlimited polymorphic selectors.
	Recover the overwritten dtype for the descriptor. Use the _size
	field of the vptr for character string lengths.
	(gfc_trans_allocate): Cope with unlimited polymorphic allocate
	objects; especially with character source tags.
	(reset_vptr): New function.
	(gfc_trans_deallocate): Call it.
	* trans-types.c (gfc_get_derived_type): Detect unlimited
	polymorphic types and deal with cases where the derived type of
	components is null.
	* trans.c : Update copyright year.
	(trans_code): Call gfc_trans_class_assign for C717 cases where
	the lhs is not unlimited polymorphic.

2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* intrinsics/extends_type_of.c : Return correct results for
	null vptrs.

2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* gfortran.dg/unlimited_polymorphic_1.f03: New test.
	* gfortran.dg/unlimited_polymorphic_2.f03: New test.
	* gfortran.dg/unlimited_polymorphic_3.f03: New test.
	* gfortran.dg/same_type_as.f03: Correct for improved message.

From-SVN: r194622
2012-12-20 00:15:00 +00:00
INSTALL README: Also refer to the online installation instructions. 2012-08-25 20:48:20 +00:00
boehm-gc configure.ac: Add stanza for *-*-gnu* threads configuration. 2012-11-04 23:56:02 +01:00
config Use libstdc++-raw-cxx.m4 in libjava 2012-12-12 05:40:15 -08:00
contrib validate_failures.py: also ignore .git 2012-12-05 08:34:17 +01:00
fixincludes It is October, not September. :) 2012-10-29 16:58:16 +00:00
gcc array.c (resolve_array_list): Apply C4106. 2012-12-20 00:15:00 +00:00
gnattools
include re PR other/54324 (GCC install document does not list minimum required g++ version) 2012-12-18 15:19:43 +00:00
intl
libada Makefile.in: Revert most changes. 2012-11-07 04:58:23 +00:00
libatomic re PR go/55201 (libgo.so: undefined reference to `__atomic_compare_exchange_8') 2012-12-18 22:04:08 +00:00
libbacktrace mmapio.c: Define MAP_FAILED if not defined. 2012-12-12 13:06:53 +00:00
libcpp re PR bootstrap/55380 (All search_line_fast implementations read beyond buffer) 2012-12-03 18:19:47 +01:00
libdecnumber bid_functions.h: Check for __GLIBC__ additionally to LINUX when defining format specifiers. 2012-11-05 00:08:42 +01:00
libffi linux64_closure.S: Add new ABI support. 2012-10-31 14:15:34 +10:30
libgcc fp16.c (__gnu_f2h_internal): Fix inaccuracy when aexp is 25. 2012-12-13 12:05:30 +00:00
libgfortran array.c (resolve_array_list): Apply C4106. 2012-12-20 00:15:00 +00:00
libgo libgo: Link against libatomic_convenience.la. 2012-12-18 22:07:38 +00:00
libgomp fortran.exp: Set -fintrinsic-modules-path. 2012-12-19 16:53:01 +01:00
libiberty cp-demangle.c (d_unqualified_name): Handle abi tags here. 2012-11-10 21:11:15 -05:00
libitm Add HTM fastpath and use Intel RTM for it on x86. 2012-11-09 17:04:40 +00:00
libjava Import GNU Classpath (20121202). 2012-12-19 17:03:15 +00:00
libmudflap * mf-hooks1.c (free): Return on NULL before any logging. 2012-12-15 10:24:50 +00:00
libobjc rs6000-cpus.def (POWERPC_MASKS): Don't assume OPTION_MASK_STRICT_ALIGN is defined. 2012-10-19 19:10:03 +00:00
libquadmath cbrtq.c (cbrtq): Use Q suffixed floating point constants instead of L suffixed ones. 2012-12-13 13:35:56 +01:00
libsanitizer Restore AM_MAKEFLAGS in libsanitizer 2012-12-12 07:41:36 -08:00
libssp * configure: Regenerated. 2012-09-14 19:40:25 -04:00
libstdc++-v3 abi.xml: Update URLs for C++ ABI. 2012-12-18 11:08:33 +00:00
lto-plugin * configure: Regenerated. 2012-09-14 19:42:24 -04:00
maintainer-scripts crontab: Disable snapshots from gcc-4_5-branch. 2012-07-02 09:16:29 +00:00
zlib 2012-11-16 Matthias Klose <doko@ubuntu.com> 2012-11-16 18:35:05 +00:00
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog Makefile.def (install-target-libgo): Depend on install-target-libatomic. 2012-12-19 16:18:37 +00:00
ChangeLog.tree-ssa
MAINTAINERS * MAINTAINERS: Remove self as RTL optimization maintainer. 2012-12-01 09:36:06 +00:00
Makefile.def Makefile.def (install-target-libgo): Depend on install-target-libatomic. 2012-12-19 16:18:37 +00:00
Makefile.in Makefile.def (install-target-libgo): Depend on install-target-libatomic. 2012-12-19 16:18:37 +00:00
Makefile.tpl re PR other/54279 (first stage build with g++ fails with "." as the first component of $PATH) 2012-11-28 14:11:29 -08:00
README * README: Document use of ranges of years in copyright notices. 2012-07-16 15:01:34 +01:00
compile
config-ml.in
config.guess
config.rpath
config.sub Sync config.sub with src 2012-12-12 05:55:00 -08:00
configure configure.ac (ENABLE_GOLD): Consider *-*-gnu* targets ELF. 2012-12-16 08:24:29 +01:00
configure.ac configure.ac (ENABLE_GOLD): Consider *-*-gnu* targets ELF. 2012-12-16 08:24:29 +01:00
depcomp
install-sh
libtool-ldflags
libtool.m4 re PR bootstrap/38607 (AIX error messages about TOC during build) 2012-09-14 19:23:41 -04:00
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing
mkdep
mkinstalldirs
move-if-change
symlink-tree
ylwrap

README

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.