Go to file
Paul Thomas b9294757f8 Fortran: Unlimited polymorphic intrinsic function arguments [PR84006]
2024-05-12  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
	PR fortran/84006
	PR fortran/100027
	PR fortran/98534
	* iresolve.cc (gfc_resolve_transfer): Emit a TODO error for
	unlimited polymorphic mold.
	* trans-expr.cc (gfc_resize_class_size_with_len): Use the fold
	even if a block is not available in which to fix the result.
	(trans_class_assignment): Enable correct assignment of
	character expressions to unlimited polymorphic variables using
	lhs _len field and rse string_length.
	* trans-intrinsic.cc (gfc_conv_intrinsic_storage_size): Extract
	the class expression so that the unlimited polymorphic class
	expression can be used in gfc_resize_class_size_with_len to
	obtain the storage size for character payloads. Guard the use
	of GFC_DECL_SAVED_DESCRIPTOR by testing for DECL_LANG_SPECIFIC
	to prevent the ICE. Also, invert the order to use the class
	expression extracted from the argument.
	(gfc_conv_intrinsic_transfer): In same way as 'storage_size',
	use the _len field to obtaining the correct length for arg 1.
	Add a branch for the element size in bytes of class expressions
	with provision to make use of the unlimited polymorphic _len
	field. Again, the class references are explicitly identified.
	'mold_expr' was already declared. Use it instead of 'arg'. Do
	not fix 'dest_word_len' for deferred character sources because
	reallocation on assign makes use of it before it is assigned.

gcc/testsuite/
	PR fortran/84006
	PR fortran/100027
	* gfortran.dg/storage_size_7.f90: New test.

	PR fortran/98534
	* gfortran.dg/transfer_class_4.f90: New test.
2024-05-12 06:59:45 +01:00
.github Minor formatting fix for newly-added file from previous commit 2023-11-01 19:28:56 -04:00
INSTALL
c++tools Daily bump. 2024-05-09 10:58:01 +00:00
config Daily bump. 2024-04-17 00:18:45 +00:00
contrib contrib: Add 109f1b28fc to ignored commits 2024-05-09 13:04:11 +02:00
fixincludes Daily bump. 2024-05-09 10:58:01 +00:00
gcc Fortran: Unlimited polymorphic intrinsic function arguments [PR84006] 2024-05-12 06:59:45 +01:00
gnattools Update Copyright year in ChangeLog files 2024-01-03 11:35:18 +01:00
gotools Daily bump. 2024-04-16 00:18:06 +00:00
include Daily bump. 2024-04-09 00:17:24 +00:00
libada Update copyright years. 2024-01-03 12:19:35 +01:00
libatomic Daily bump. 2024-05-09 10:58:01 +00:00
libbacktrace Daily bump. 2024-05-04 00:16:30 +00:00
libcc1 Daily bump. 2024-03-17 00:17:21 +00:00
libcody Update Copyright year in ChangeLog files 2024-01-03 11:35:18 +01:00
libcpp Daily bump. 2024-05-01 00:17:56 +00:00
libdecnumber Daily bump. 2024-04-03 00:17:29 +00:00
libffi Daily bump. 2024-05-09 10:58:01 +00:00
libgcc AVR: target/114981 - Tweak __builtin_powif / __powisf2 2024-05-10 11:36:25 +02:00
libgfortran Daily bump. 2024-05-09 10:58:01 +00:00
libgm2 Daily bump. 2024-05-03 00:17:26 +00:00
libgo runtime: dump registers on Solaris 2024-04-29 11:39:58 -07:00
libgomp Daily bump. 2024-05-09 10:58:01 +00:00
libgrust Update copyright years. 2024-02-21 13:51:26 +01:00
libiberty Daily bump. 2024-04-03 00:17:29 +00:00
libitm Daily bump. 2024-05-09 10:58:01 +00:00
libobjc Daily bump. 2024-04-03 00:17:29 +00:00
libphobos Daily bump. 2024-04-08 12:15:19 +00:00
libquadmath Daily bump. 2024-05-09 10:58:01 +00:00
libsanitizer Daily bump. 2024-02-17 00:17:08 +00:00
libssp Daily bump. 2024-05-09 10:58:01 +00:00
libstdc++-v3 Daily bump. 2024-05-09 10:58:01 +00:00
libvtv Daily bump. 2024-04-03 00:17:29 +00:00
lto-plugin Update copyright years. 2024-01-03 12:19:35 +01:00
maintainer-scripts Daily bump. 2024-04-27 00:18:05 +00:00
zlib Daily bump. 2023-10-23 00:16:43 +00:00
.dir-locals.el dir-locals: Use https for bug references 2021-07-20 11:40:34 +01:00
.gitattributes Add *.md diff=md. 2020-01-15 14:29:53 +01:00
.gitignore *: add modern gettext 2023-11-14 00:47:11 +01:00
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog Daily bump. 2024-05-07 00:18:28 +00:00
ChangeLog.jit
ChangeLog.tree-ssa
MAINTAINERS Add myself to DCO 2024-05-09 07:59:50 -07:00
Makefile.def gccrs: Fix missing build dependency 2024-01-16 16:23:02 +01:00
Makefile.in Fix up postboot dependencies [PR106472] 2024-04-02 13:40:27 +02:00
Makefile.tpl Fix up postboot dependencies [PR106472] 2024-04-02 13:40:27 +02:00
README
SECURITY.txt SECURITY.txt: Drop "exploitable" in reference to hardening issues 2024-01-09 10:49:01 -05:00
ar-lib
compile
config-ml.in config-ml.in: Fix multi-os-dir search 2024-05-06 12:08:28 +08:00
config.guess config.sub, config.guess : Import upstream 2021-01-25. 2021-02-23 17:21:10 +08:00
config.rpath
config.sub config.sub: change mode to 755. 2021-12-21 09:10:57 +01:00
configure build: Use of cargo not yet supported here in Canadian cross configurations 2024-04-16 09:43:47 +02:00
configure.ac build: Use of cargo not yet supported here in Canadian cross configurations 2024-04-16 09:43:47 +02:00
depcomp
install-sh
libtool-ldflags
libtool.m4 Build: fix error in fixinclude configure 2023-11-22 11:54:33 +01:00
ltgcc.m4
ltmain.sh Do not use HAVE_DOS_BASED_FILE_SYSTEM for Cygwin. 2020-04-17 09:22:51 +02:00
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
symlink-tree
test-driver
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.