diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-12-15 14:13:33 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-15 14:13:33 +0000 |
commit | 84a85305de56260ef9cea8116c05fa06d5e6f841 (patch) | |
tree | 71c2e377ee1573231d3bc67287f79305b423dccf /gcc/fortran | |
parent | 9c21f45e4534afaa41456f342ceff9db52814053 (diff) | |
parent | 782daee399870e2b21dce410d8bbdd32dd75b68b (diff) | |
download | gcc-84a85305de56260ef9cea8116c05fa06d5e6f841.zip gcc-84a85305de56260ef9cea8116c05fa06d5e6f841.tar.gz gcc-84a85305de56260ef9cea8116c05fa06d5e6f841.tar.bz2 |
Merge #1700
1700: Merge upstream, last commit before GCC/Rust upstreaming r=CohenArthur a=tschwinge
Co-authored-by: Eric Botcazou <ebotcazou@adacore.com>
Co-authored-by: Richard Biener <rguenther@suse.de>
Co-authored-by: Patrick Palka <ppalka@redhat.com>
Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
Co-authored-by: Harald Anlauf <anlauf@gmx.de>
Co-authored-by: Ian Lance Taylor <iant@golang.org>
Co-authored-by: GCC Administrator <gccadmin@gcc.gnu.org>
Co-authored-by: David Malcolm <dmalcolm@redhat.com>
Co-authored-by: Lulu Cheng <chenglulu@loongson.cn>
Co-authored-by: Alexandre Oliva <oliva@adacore.com>
Co-authored-by: Paul-Antoine Arras <pa@codesourcery.com>
Co-authored-by: Tobias Burnus <tobias@codesourcery.com>
Co-authored-by: Jakub Jelinek <jakub@redhat.com>
Co-authored-by: Martin Liska <mliska@suse.cz>
Co-authored-by: Iskander Shakirzyanov <iskander@ispras.ru>
Co-authored-by: Iain Buclaw <ibuclaw@gdcproject.org>
Co-authored-by: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Co-authored-by: John David Anglin <danglin@gcc.gnu.org>
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 2748 | ||||
-rw-r--r-- | gcc/fortran/arith.cc | 31 | ||||
-rw-r--r-- | gcc/fortran/array.cc | 19 | ||||
-rw-r--r-- | gcc/fortran/cpp.cc | 2 | ||||
-rw-r--r-- | gcc/fortran/dump-parse-tree.cc | 23 | ||||
-rw-r--r-- | gcc/fortran/error.cc | 4 | ||||
-rw-r--r-- | gcc/fortran/f95-lang.cc | 2 | ||||
-rw-r--r-- | gcc/fortran/gfortran.h | 4 | ||||
-rw-r--r-- | gcc/fortran/gfortran.texi | 3 | ||||
-rw-r--r-- | gcc/fortran/interface.cc | 64 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.texi | 60 | ||||
-rw-r--r-- | gcc/fortran/io.cc | 2 | ||||
-rw-r--r-- | gcc/fortran/match.cc | 6 | ||||
-rw-r--r-- | gcc/fortran/openmp.cc | 211 | ||||
-rw-r--r-- | gcc/fortran/parse.cc | 33 | ||||
-rw-r--r-- | gcc/fortran/primary.cc | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.cc | 21 | ||||
-rw-r--r-- | gcc/fortran/simplify.cc | 31 | ||||
-rw-r--r-- | gcc/fortran/st.cc | 2 | ||||
-rw-r--r-- | gcc/fortran/symbol.cc | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-array.cc | 57 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.cc | 33 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.cc | 31 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.cc | 3 | ||||
-rw-r--r-- | gcc/fortran/trans-openmp.cc | 19 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.cc | 1 | ||||
-rw-r--r-- | gcc/fortran/trans-types.cc | 25 |
27 files changed, 3190 insertions, 257 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7b2d93b..4535398 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,2749 @@ +2022-12-12 Harald Anlauf <anlauf@gmx.de> + + PR fortran/102180 + * array.cc (match_array_element_spec): Add check for bad + assumed-implied-spec. + (gfc_match_array_spec): Reorder logic so that the first bad array + element spec may trigger an error. + +2022-12-11 Steve Kargl <kargl@gcc.gnu.org> + + PR fortran/107995 + * interface.cc (gfc_check_dummy_characteristics): Reject statement + function dummy arguments. + +2022-12-11 Tobias Burnus <tobias@codesourcery.com> + + * openmp.cc (gfc_match_omp_context_selector_specification): + Remove spurious 's' in an error message. + +2022-12-10 Harald Anlauf <anlauf@gmx.de> + + PR fortran/106911 + * simplify.cc (gfc_simplify_ishftc): If the SIZE argument is known + to be outside the allowed range, terminate simplification. + +2022-12-10 Tobias Burnus <tobias@codesourcery.com> + + * match.cc (gfc_match_member_sep): Use %<...%> in gfc_error. + * openmp.cc (gfc_match_oacc_routine, gfc_match_omp_context_selector, + gfc_match_omp_context_selector_specification, + gfc_match_omp_declare_variant, resolve_omp_clauses): Likewise; + use %qs instead of '%s'. + * primary.cc (match_real_constant, gfc_match_varspec): Likewise. + * resolve.cc (gfc_resolve_formal_arglist, resolve_operator, + resolve_ordinary_assign): Likewise. + +2022-12-09 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/107872 + * resolve.cc (derived_inaccessible): Skip over allocatable components + to prevent an infinite loop. + +2022-12-09 Tobias Burnus <tobias@codesourcery.com> + + * dump-parse-tree.cc (show_omp_namelist): Improve OMP_LIST_ALLOCATE + output. + * gfortran.h (struct gfc_omp_namelist): Add 'align' to 'u'. + (gfc_free_omp_namelist): Add bool arg. + * match.cc (gfc_free_omp_namelist): Likewise; free 'u.align'. + * openmp.cc (gfc_free_omp_clauses, gfc_match_omp_clause_reduction, + gfc_match_omp_flush): Update call. + (gfc_match_omp_clauses): Match 'align/allocate modifers in + 'allocate' clause. + (resolve_omp_clauses): Resolve align. + * st.cc (gfc_free_statement): Update call + * trans-openmp.cc (gfc_trans_omp_clauses): Handle 'align'. + +2022-12-08 Harald Anlauf <anlauf@gmx.de> + + PR fortran/108025 + * symbol.cc (gfc_add_contiguous): Diagnose and reject duplicate + CONTIGUOUS attribute. + +2022-12-07 Harald Anlauf <anlauf@gmx.de> + + PR fortran/108010 + * arith.cc (reduce_unary): Handle zero-sized arrays. + (reduce_binary_aa): Likewise. + +2022-12-04 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107922 + * simplify.cc (gfc_simplify_unpack): Terminate simplification when + array-valued argument FIELD does not provide enough elements. + +2022-12-04 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107870 + * intrinsic.texi: Fix typo in documentation of intrinsic FLOOR. + Describe the optional KIND argument to intrinsics as a scalar + constant expression, in accordance with the current standard. + +2022-12-04 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107899 + * resolve.cc (resolve_deallocate_expr): Avoid NULL pointer dereference + on invalid CLASS variable. + +2022-11-30 Martin Liska <mliska@suse.cz> + + * parse.cc (parse_omp_structured_block): Remove extra semicolon. + +2022-11-29 Harald Anlauf <anlauf@gmx.de> + Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/107874 + * simplify.cc (gfc_simplify_merge): When simplifying MERGE with a + constant scalar MASK, ensure that arguments TSOURCE and FSOURCE are + either constant or will be evaluated. + * trans-intrinsic.cc (gfc_conv_intrinsic_merge): Evaluate arguments + before generating conditional expression. + +2022-11-28 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107819 + * trans-stmt.cc (gfc_conv_elemental_dependencies): In checking for + elemental dependencies, treat dummy argument with VALUE attribute + as implicitly having intent(in). + +2022-11-28 Tobias Burnus <tobias@codesourcery.com> + + * openmp.cc (OMP_DO_CLAUSES, OMP_SCOPE_CLAUSES, + OMP_SECTIONS_CLAUSES): Add 'nowait'. + (OMP_SINGLE_CLAUSES): Add 'nowait' and 'copyprivate'. + (gfc_match_omp_distribute_parallel_do, + gfc_match_omp_distribute_parallel_do_simd, + gfc_match_omp_parallel_do, + gfc_match_omp_parallel_do_simd, + gfc_match_omp_parallel_sections, + gfc_match_omp_teams_distribute_parallel_do, + gfc_match_omp_teams_distribute_parallel_do_simd): Disallow 'nowait'. + (gfc_match_omp_workshare): Match 'nowait' clause. + (gfc_match_omp_end_single): Use clause matcher for 'nowait'. + (resolve_omp_clauses): Reject 'nowait' + 'copyprivate'. + * parse.cc (decode_omp_directive): Break too long line. + (parse_omp_do, parse_omp_structured_block): Diagnose duplicated + 'nowait' clause. + +2022-11-23 Steve Kargl <kargl@gcc.gnu.org> + + PR fortran/107577 + * resolve.cc (find_array_spec): Choose appropriate locus either of + bad array reference or of non-array entity in error message. + +2022-11-18 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107576 + * interface.cc (gfc_procedure_use): Reject NULL as actual argument + when there is no explicit procedure interface. + +2022-11-17 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + PR fortran/99884 + * io.cc (check_open_constraints): Remove double spaces. + +2022-11-16 Steve Kargl <kargl@gcc.gnu.org> + + PR fortran/107707 + * interface.cc (gfc_compare_actual_formal): Check that we actually + have integer values before asking gmp_* to use them. + +2022-11-16 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107681 + * resolve.cc (resolve_fl_var_and_proc): Prevent NULL pointer + dereference with reference to bad CLASS variable. + +2022-11-16 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107680 + * arith.cc (arith_power): Check that operands are properly converted + before attempting to simplify. + +2022-11-15 Lewis Hyatt <lhyatt@gmail.com> + + * cpp.cc (gfc_cpp_init): Use special_fname_builtin () rather than a + hardcoded string (which was also incorrectly left untranslated + previously.) + * error.cc (gfc_diagnostic_build_locus_prefix): Likewise. + * f95-lang.cc (gfc_init): Likewise. + +2022-11-14 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107444 + * trans-openmp.cc (gfc_omp_check_optional_argument): Adjust to change + of prefix of internal symbol for presence status to '.'. + +2022-11-14 Martin Liska <mliska@suse.cz> + + * gfortran.texi: Port from Sphinx. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/code-that-interacts-with-the-user.rst: New file. + * doc/gfc-internals/command-line-options.rst: New file. + * doc/gfc-internals/conf.py: New file. + * doc/gfc-internals/copyright.rst: New file. + * doc/gfc-internals/error-handling.rst: New file. + * doc/gfc-internals/frontend-data-structures.rst: New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages.rst: New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/accessing-declarations.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/basic-data-structures.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/converting-expressions-to-tree.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/translating-statements.rst: + New file. + * doc/gfc-internals/gfccode.rst: New file. + * doc/gfc-internals/gfcexpr.rst: New file. + * doc/gfc-internals/gnu-free-documentation-license.rst: New file. + * doc/gfc-internals/index.rst: New file. + * doc/gfc-internals/indices-and-tables.rst: New file. + * doc/gfc-internals/internals-of-fortran-2003-oop-features.rst: New file. + * doc/gfc-internals/introduction.rst: New file. + * doc/gfc-internals/symbol-versioning.rst: New file. + * doc/gfc-internals/the-libgfortran-runtime-library.rst: New file. + * doc/gfc-internals/type-bound-operators.rst: New file. + * doc/gfc-internals/type-bound-procedures.rst: New file. + * doc/gfortran/about-gnu-fortran.rst: New file. + * doc/gfortran/coarray-programming.rst: New file. + * doc/gfortran/compiler-characteristics.rst: New file. + * doc/gfortran/compiler-characteristics/asynchronous-i-o.rst: New file. + * doc/gfortran/compiler-characteristics/data-consistency-and-durability.rst: New file. + * doc/gfortran/compiler-characteristics/evaluation-of-logical-expressions.rst: New file. + * doc/gfortran/compiler-characteristics/file-format-of-unformatted-sequential-files.rst: + New file. + * doc/gfortran/compiler-characteristics/file-operations-on-symbolic-links.rst: New file. + * doc/gfortran/compiler-characteristics/files-opened-without-an-explicit-action=-specifier.rst: + New file. + * doc/gfortran/compiler-characteristics/internal-representation-of-logical-variables.rst: + New file. + * doc/gfortran/compiler-characteristics/kind-type-parameters.rst: New file. + * doc/gfortran/compiler-characteristics/max-and-min-intrinsics-with-real-nan-arguments.rst: + New file. + * doc/gfortran/compiler-characteristics/thread-safety-of-the-runtime-library.rst: New file. + * doc/gfortran/conf.py: New file. + * doc/gfortran/contributing.rst: New file. + * doc/gfortran/contributors-to-gnu-fortran.rst: New file. + * doc/gfortran/copyright.rst: New file. + * doc/gfortran/extensions-implemented-in-gnu-fortran.rst: New file. + * doc/gfortran/extensions-not-implemented-in-gnu-fortran.rst: New file. + * doc/gfortran/extensions.rst: New file. + * doc/gfortran/function-abi-documentation.rst: New file. + * doc/gfortran/funding.rst: New file. + * doc/gfortran/general-public-license-3.rst: New file. + * doc/gfortran/gnu-fortran-and-gcc.rst: New file. + * doc/gfortran/gnu-fortran-command-options.rst: New file. + * doc/gfortran/gnu-fortran-command-options/description.rst: New file. + * doc/gfortran/gnu-fortran-command-options/enable-and-customize-preprocessing.rst: New file. + * doc/gfortran/gnu-fortran-command-options/environment-variables-affecting-gfortran.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/influencing-runtime-behavior.rst: New file. + * doc/gfortran/gnu-fortran-command-options/influencing-the-linking-step.rst: New file. + * doc/gfortran/gnu-fortran-command-options/option-summary.rst: New file. + * doc/gfortran/gnu-fortran-command-options/options-controlling-fortran-dialect.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-code-generation-conventions.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-debugging-your-program-or-gnu-fortran.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-directory-search.rst: New file. + * doc/gfortran/gnu-fortran-command-options/options-for-interoperability-with-other-languages.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-to-request-or-suppress-errors-and-warnings.rst: + New file. + * doc/gfortran/gnu-fortran-compiler-directives.rst: New file. + * doc/gfortran/gnu-free-documentation-license.rst: New file. + * doc/gfortran/index.rst: New file. + * doc/gfortran/indices-and-tables.rst: New file. + * doc/gfortran/interoperability-with-c.rst: New file. + * doc/gfortran/intrinsic-modules.rst: New file. + * doc/gfortran/intrinsic-modules/ieee-modules-ieeeexceptions-ieeearithmetic-and-ieeefeatures.rst: + New file. + * doc/gfortran/intrinsic-modules/isocbinding.rst: New file. + * doc/gfortran/intrinsic-modules/isofortranenv.rst: New file. + * doc/gfortran/intrinsic-modules/openacc-module-openacc.rst: New file. + * doc/gfortran/intrinsic-modules/openmp-modules-omplib-and-omplibkinds.rst: New file. + * doc/gfortran/intrinsic-procedures.rst: New file. + * doc/gfortran/intrinsic-procedures/abort.rst: New file. + * doc/gfortran/intrinsic-procedures/abs.rst: New file. + * doc/gfortran/intrinsic-procedures/access.rst: New file. + * doc/gfortran/intrinsic-procedures/achar.rst: New file. + * doc/gfortran/intrinsic-procedures/acos.rst: New file. + * doc/gfortran/intrinsic-procedures/acosd.rst: New file. + * doc/gfortran/intrinsic-procedures/acosh.rst: New file. + * doc/gfortran/intrinsic-procedures/adjustl.rst: New file. + * doc/gfortran/intrinsic-procedures/adjustr.rst: New file. + * doc/gfortran/intrinsic-procedures/aimag.rst: New file. + * doc/gfortran/intrinsic-procedures/aint.rst: New file. + * doc/gfortran/intrinsic-procedures/alarm.rst: New file. + * doc/gfortran/intrinsic-procedures/all.rst: New file. + * doc/gfortran/intrinsic-procedures/allocated.rst: New file. + * doc/gfortran/intrinsic-procedures/and.rst: New file. + * doc/gfortran/intrinsic-procedures/anint.rst: New file. + * doc/gfortran/intrinsic-procedures/any.rst: New file. + * doc/gfortran/intrinsic-procedures/asin.rst: New file. + * doc/gfortran/intrinsic-procedures/asind.rst: New file. + * doc/gfortran/intrinsic-procedures/asinh.rst: New file. + * doc/gfortran/intrinsic-procedures/associated.rst: New file. + * doc/gfortran/intrinsic-procedures/atan.rst: New file. + * doc/gfortran/intrinsic-procedures/atan2.rst: New file. + * doc/gfortran/intrinsic-procedures/atan2d.rst: New file. + * doc/gfortran/intrinsic-procedures/atand.rst: New file. + * doc/gfortran/intrinsic-procedures/atanh.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicadd.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicand.rst: New file. + * doc/gfortran/intrinsic-procedures/atomiccas.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicdefine.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchadd.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchand.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchxor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicref.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicxor.rst: New file. + * doc/gfortran/intrinsic-procedures/backtrace.rst: New file. + * doc/gfortran/intrinsic-procedures/besselj0.rst: New file. + * doc/gfortran/intrinsic-procedures/besselj1.rst: New file. + * doc/gfortran/intrinsic-procedures/besseljn.rst: New file. + * doc/gfortran/intrinsic-procedures/bessely0.rst: New file. + * doc/gfortran/intrinsic-procedures/bessely1.rst: New file. + * doc/gfortran/intrinsic-procedures/besselyn.rst: New file. + * doc/gfortran/intrinsic-procedures/bge.rst: New file. + * doc/gfortran/intrinsic-procedures/bgt.rst: New file. + * doc/gfortran/intrinsic-procedures/bitsize.rst: New file. + * doc/gfortran/intrinsic-procedures/ble.rst: New file. + * doc/gfortran/intrinsic-procedures/blt.rst: New file. + * doc/gfortran/intrinsic-procedures/btest.rst: New file. + * doc/gfortran/intrinsic-procedures/cassociated.rst: New file. + * doc/gfortran/intrinsic-procedures/ceiling.rst: New file. + * doc/gfortran/intrinsic-procedures/cfpointer.rst: New file. + * doc/gfortran/intrinsic-procedures/cfprocpointer.rst: New file. + * doc/gfortran/intrinsic-procedures/cfunloc.rst: New file. + * doc/gfortran/intrinsic-procedures/char.rst: New file. + * doc/gfortran/intrinsic-procedures/chdir.rst: New file. + * doc/gfortran/intrinsic-procedures/chmod.rst: New file. + * doc/gfortran/intrinsic-procedures/cloc.rst: New file. + * doc/gfortran/intrinsic-procedures/cmplx.rst: New file. + * doc/gfortran/intrinsic-procedures/cobroadcast.rst: New file. + * doc/gfortran/intrinsic-procedures/comax.rst: New file. + * doc/gfortran/intrinsic-procedures/comin.rst: New file. + * doc/gfortran/intrinsic-procedures/commandargumentcount.rst: New file. + * doc/gfortran/intrinsic-procedures/compileroptions.rst: New file. + * doc/gfortran/intrinsic-procedures/compilerversion.rst: New file. + * doc/gfortran/intrinsic-procedures/complex.rst: New file. + * doc/gfortran/intrinsic-procedures/conjg.rst: New file. + * doc/gfortran/intrinsic-procedures/coreduce.rst: New file. + * doc/gfortran/intrinsic-procedures/cos.rst: New file. + * doc/gfortran/intrinsic-procedures/cosd.rst: New file. + * doc/gfortran/intrinsic-procedures/cosh.rst: New file. + * doc/gfortran/intrinsic-procedures/cosum.rst: New file. + * doc/gfortran/intrinsic-procedures/cotan.rst: New file. + * doc/gfortran/intrinsic-procedures/cotand.rst: New file. + * doc/gfortran/intrinsic-procedures/count.rst: New file. + * doc/gfortran/intrinsic-procedures/cputime.rst: New file. + * doc/gfortran/intrinsic-procedures/cshift.rst: New file. + * doc/gfortran/intrinsic-procedures/csizeof.rst: New file. + * doc/gfortran/intrinsic-procedures/ctime.rst: New file. + * doc/gfortran/intrinsic-procedures/dateandtime.rst: New file. + * doc/gfortran/intrinsic-procedures/dble.rst: New file. + * doc/gfortran/intrinsic-procedures/dcmplx.rst: New file. + * doc/gfortran/intrinsic-procedures/digits.rst: New file. + * doc/gfortran/intrinsic-procedures/dim.rst: New file. + * doc/gfortran/intrinsic-procedures/dotproduct.rst: New file. + * doc/gfortran/intrinsic-procedures/dprod.rst: New file. + * doc/gfortran/intrinsic-procedures/dreal.rst: New file. + * doc/gfortran/intrinsic-procedures/dshiftl.rst: New file. + * doc/gfortran/intrinsic-procedures/dshiftr.rst: New file. + * doc/gfortran/intrinsic-procedures/dtime.rst: New file. + * doc/gfortran/intrinsic-procedures/eoshift.rst: New file. + * doc/gfortran/intrinsic-procedures/epsilon.rst: New file. + * doc/gfortran/intrinsic-procedures/erf.rst: New file. + * doc/gfortran/intrinsic-procedures/erfc.rst: New file. + * doc/gfortran/intrinsic-procedures/erfcscaled.rst: New file. + * doc/gfortran/intrinsic-procedures/etime.rst: New file. + * doc/gfortran/intrinsic-procedures/eventquery.rst: New file. + * doc/gfortran/intrinsic-procedures/executecommandline.rst: New file. + * doc/gfortran/intrinsic-procedures/exit.rst: New file. + * doc/gfortran/intrinsic-procedures/exp.rst: New file. + * doc/gfortran/intrinsic-procedures/exponent.rst: New file. + * doc/gfortran/intrinsic-procedures/extendstypeof.rst: New file. + * doc/gfortran/intrinsic-procedures/fdate.rst: New file. + * doc/gfortran/intrinsic-procedures/fget.rst: New file. + * doc/gfortran/intrinsic-procedures/fgetc.rst: New file. + * doc/gfortran/intrinsic-procedures/findloc.rst: New file. + * doc/gfortran/intrinsic-procedures/floor.rst: New file. + * doc/gfortran/intrinsic-procedures/flush.rst: New file. + * doc/gfortran/intrinsic-procedures/fnum.rst: New file. + * doc/gfortran/intrinsic-procedures/fput.rst: New file. + * doc/gfortran/intrinsic-procedures/fputc.rst: New file. + * doc/gfortran/intrinsic-procedures/fraction.rst: New file. + * doc/gfortran/intrinsic-procedures/free.rst: New file. + * doc/gfortran/intrinsic-procedures/fseek.rst: New file. + * doc/gfortran/intrinsic-procedures/fstat.rst: New file. + * doc/gfortran/intrinsic-procedures/ftell.rst: New file. + * doc/gfortran/intrinsic-procedures/gamma.rst: New file. + * doc/gfortran/intrinsic-procedures/gerror.rst: New file. + * doc/gfortran/intrinsic-procedures/getarg.rst: New file. + * doc/gfortran/intrinsic-procedures/getcommand.rst: New file. + * doc/gfortran/intrinsic-procedures/getcommandargument.rst: New file. + * doc/gfortran/intrinsic-procedures/getcwd.rst: New file. + * doc/gfortran/intrinsic-procedures/getenv.rst: New file. + * doc/gfortran/intrinsic-procedures/getenvironmentvariable.rst: New file. + * doc/gfortran/intrinsic-procedures/getgid.rst: New file. + * doc/gfortran/intrinsic-procedures/getlog.rst: New file. + * doc/gfortran/intrinsic-procedures/getpid.rst: New file. + * doc/gfortran/intrinsic-procedures/getuid.rst: New file. + * doc/gfortran/intrinsic-procedures/gmtime.rst: New file. + * doc/gfortran/intrinsic-procedures/hostnm.rst: New file. + * doc/gfortran/intrinsic-procedures/huge.rst: New file. + * doc/gfortran/intrinsic-procedures/hypot.rst: New file. + * doc/gfortran/intrinsic-procedures/iachar.rst: New file. + * doc/gfortran/intrinsic-procedures/iall.rst: New file. + * doc/gfortran/intrinsic-procedures/iand.rst: New file. + * doc/gfortran/intrinsic-procedures/iany.rst: New file. + * doc/gfortran/intrinsic-procedures/iargc.rst: New file. + * doc/gfortran/intrinsic-procedures/ibclr.rst: New file. + * doc/gfortran/intrinsic-procedures/ibits.rst: New file. + * doc/gfortran/intrinsic-procedures/ibset.rst: New file. + * doc/gfortran/intrinsic-procedures/ichar.rst: New file. + * doc/gfortran/intrinsic-procedures/idate.rst: New file. + * doc/gfortran/intrinsic-procedures/ieor.rst: New file. + * doc/gfortran/intrinsic-procedures/ierrno.rst: New file. + * doc/gfortran/intrinsic-procedures/imageindex.rst: New file. + * doc/gfortran/intrinsic-procedures/index.rst: New file. + * doc/gfortran/intrinsic-procedures/int.rst: New file. + * doc/gfortran/intrinsic-procedures/int2.rst: New file. + * doc/gfortran/intrinsic-procedures/int8.rst: New file. + * doc/gfortran/intrinsic-procedures/introduction-to-intrinsic-procedures.rst: New file. + * doc/gfortran/intrinsic-procedures/ior.rst: New file. + * doc/gfortran/intrinsic-procedures/iparity.rst: New file. + * doc/gfortran/intrinsic-procedures/irand.rst: New file. + * doc/gfortran/intrinsic-procedures/isatty.rst: New file. + * doc/gfortran/intrinsic-procedures/iscontiguous.rst: New file. + * doc/gfortran/intrinsic-procedures/ishft.rst: New file. + * doc/gfortran/intrinsic-procedures/ishftc.rst: New file. + * doc/gfortran/intrinsic-procedures/isiostatend.rst: New file. + * doc/gfortran/intrinsic-procedures/isiostateor.rst: New file. + * doc/gfortran/intrinsic-procedures/isnan.rst: New file. + * doc/gfortran/intrinsic-procedures/itime.rst: New file. + * doc/gfortran/intrinsic-procedures/kill.rst: New file. + * doc/gfortran/intrinsic-procedures/kind.rst: New file. + * doc/gfortran/intrinsic-procedures/lbound.rst: New file. + * doc/gfortran/intrinsic-procedures/lcobound.rst: New file. + * doc/gfortran/intrinsic-procedures/leadz.rst: New file. + * doc/gfortran/intrinsic-procedures/len.rst: New file. + * doc/gfortran/intrinsic-procedures/lentrim.rst: New file. + * doc/gfortran/intrinsic-procedures/lge.rst: New file. + * doc/gfortran/intrinsic-procedures/lgt.rst: New file. + * doc/gfortran/intrinsic-procedures/link.rst: New file. + * doc/gfortran/intrinsic-procedures/lle.rst: New file. + * doc/gfortran/intrinsic-procedures/llt.rst: New file. + * doc/gfortran/intrinsic-procedures/lnblnk.rst: New file. + * doc/gfortran/intrinsic-procedures/loc.rst: New file. + * doc/gfortran/intrinsic-procedures/log.rst: New file. + * doc/gfortran/intrinsic-procedures/log10.rst: New file. + * doc/gfortran/intrinsic-procedures/loggamma.rst: New file. + * doc/gfortran/intrinsic-procedures/logical.rst: New file. + * doc/gfortran/intrinsic-procedures/lshift.rst: New file. + * doc/gfortran/intrinsic-procedures/lstat.rst: New file. + * doc/gfortran/intrinsic-procedures/ltime.rst: New file. + * doc/gfortran/intrinsic-procedures/malloc.rst: New file. + * doc/gfortran/intrinsic-procedures/maskl.rst: New file. + * doc/gfortran/intrinsic-procedures/maskr.rst: New file. + * doc/gfortran/intrinsic-procedures/matmul.rst: New file. + * doc/gfortran/intrinsic-procedures/max.rst: New file. + * doc/gfortran/intrinsic-procedures/maxexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/maxloc.rst: New file. + * doc/gfortran/intrinsic-procedures/maxval.rst: New file. + * doc/gfortran/intrinsic-procedures/mclock.rst: New file. + * doc/gfortran/intrinsic-procedures/mclock8.rst: New file. + * doc/gfortran/intrinsic-procedures/merge.rst: New file. + * doc/gfortran/intrinsic-procedures/mergebits.rst: New file. + * doc/gfortran/intrinsic-procedures/min.rst: New file. + * doc/gfortran/intrinsic-procedures/minexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/minloc.rst: New file. + * doc/gfortran/intrinsic-procedures/minval.rst: New file. + * doc/gfortran/intrinsic-procedures/mod.rst: New file. + * doc/gfortran/intrinsic-procedures/modulo.rst: New file. + * doc/gfortran/intrinsic-procedures/movealloc.rst: New file. + * doc/gfortran/intrinsic-procedures/mvbits.rst: New file. + * doc/gfortran/intrinsic-procedures/nearest.rst: New file. + * doc/gfortran/intrinsic-procedures/newline.rst: New file. + * doc/gfortran/intrinsic-procedures/nint.rst: New file. + * doc/gfortran/intrinsic-procedures/norm2.rst: New file. + * doc/gfortran/intrinsic-procedures/not.rst: New file. + * doc/gfortran/intrinsic-procedures/null.rst: New file. + * doc/gfortran/intrinsic-procedures/numimages.rst: New file. + * doc/gfortran/intrinsic-procedures/or.rst: New file. + * doc/gfortran/intrinsic-procedures/pack.rst: New file. + * doc/gfortran/intrinsic-procedures/parity.rst: New file. + * doc/gfortran/intrinsic-procedures/perror.rst: New file. + * doc/gfortran/intrinsic-procedures/popcnt.rst: New file. + * doc/gfortran/intrinsic-procedures/poppar.rst: New file. + * doc/gfortran/intrinsic-procedures/precision.rst: New file. + * doc/gfortran/intrinsic-procedures/present.rst: New file. + * doc/gfortran/intrinsic-procedures/product.rst: New file. + * doc/gfortran/intrinsic-procedures/radix.rst: New file. + * doc/gfortran/intrinsic-procedures/ran.rst: New file. + * doc/gfortran/intrinsic-procedures/rand.rst: New file. + * doc/gfortran/intrinsic-procedures/randominit.rst: New file. + * doc/gfortran/intrinsic-procedures/randomnumber.rst: New file. + * doc/gfortran/intrinsic-procedures/randomseed.rst: New file. + * doc/gfortran/intrinsic-procedures/range.rst: New file. + * doc/gfortran/intrinsic-procedures/rank.rst: New file. + * doc/gfortran/intrinsic-procedures/real.rst: New file. + * doc/gfortran/intrinsic-procedures/rename.rst: New file. + * doc/gfortran/intrinsic-procedures/repeat.rst: New file. + * doc/gfortran/intrinsic-procedures/reshape.rst: New file. + * doc/gfortran/intrinsic-procedures/rrspacing.rst: New file. + * doc/gfortran/intrinsic-procedures/rshift.rst: New file. + * doc/gfortran/intrinsic-procedures/sametypeas.rst: New file. + * doc/gfortran/intrinsic-procedures/scale.rst: New file. + * doc/gfortran/intrinsic-procedures/scan.rst: New file. + * doc/gfortran/intrinsic-procedures/secnds.rst: New file. + * doc/gfortran/intrinsic-procedures/second.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedcharkind.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedintkind.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedrealkind.rst: New file. + * doc/gfortran/intrinsic-procedures/setexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/shape.rst: New file. + * doc/gfortran/intrinsic-procedures/shifta.rst: New file. + * doc/gfortran/intrinsic-procedures/shiftl.rst: New file. + * doc/gfortran/intrinsic-procedures/shiftr.rst: New file. + * doc/gfortran/intrinsic-procedures/sign.rst: New file. + * doc/gfortran/intrinsic-procedures/signal.rst: New file. + * doc/gfortran/intrinsic-procedures/sin.rst: New file. + * doc/gfortran/intrinsic-procedures/sind.rst: New file. + * doc/gfortran/intrinsic-procedures/sinh.rst: New file. + * doc/gfortran/intrinsic-procedures/size.rst: New file. + * doc/gfortran/intrinsic-procedures/sizeof.rst: New file. + * doc/gfortran/intrinsic-procedures/sleep.rst: New file. + * doc/gfortran/intrinsic-procedures/spacing.rst: New file. + * doc/gfortran/intrinsic-procedures/spread.rst: New file. + * doc/gfortran/intrinsic-procedures/sqrt.rst: New file. + * doc/gfortran/intrinsic-procedures/srand.rst: New file. + * doc/gfortran/intrinsic-procedures/stat.rst: New file. + * doc/gfortran/intrinsic-procedures/storagesize.rst: New file. + * doc/gfortran/intrinsic-procedures/sum.rst: New file. + * doc/gfortran/intrinsic-procedures/symlnk.rst: New file. + * doc/gfortran/intrinsic-procedures/system.rst: New file. + * doc/gfortran/intrinsic-procedures/systemclock.rst: New file. + * doc/gfortran/intrinsic-procedures/tan.rst: New file. + * doc/gfortran/intrinsic-procedures/tand.rst: New file. + * doc/gfortran/intrinsic-procedures/tanh.rst: New file. + * doc/gfortran/intrinsic-procedures/thisimage.rst: New file. + * doc/gfortran/intrinsic-procedures/time.rst: New file. + * doc/gfortran/intrinsic-procedures/time8.rst: New file. + * doc/gfortran/intrinsic-procedures/tiny.rst: New file. + * doc/gfortran/intrinsic-procedures/trailz.rst: New file. + * doc/gfortran/intrinsic-procedures/transfer.rst: New file. + * doc/gfortran/intrinsic-procedures/transpose.rst: New file. + * doc/gfortran/intrinsic-procedures/trim.rst: New file. + * doc/gfortran/intrinsic-procedures/ttynam.rst: New file. + * doc/gfortran/intrinsic-procedures/ubound.rst: New file. + * doc/gfortran/intrinsic-procedures/ucobound.rst: New file. + * doc/gfortran/intrinsic-procedures/umask.rst: New file. + * doc/gfortran/intrinsic-procedures/unlink.rst: New file. + * doc/gfortran/intrinsic-procedures/unpack.rst: New file. + * doc/gfortran/intrinsic-procedures/verify.rst: New file. + * doc/gfortran/intrinsic-procedures/xor.rst: New file. + * doc/gfortran/introduction.rst: New file. + * doc/gfortran/mixed-language-programming.rst: New file. + * doc/gfortran/naming-and-argument-passing-conventions.rst: New file. + * doc/gfortran/non-fortran-main-program.rst: New file. + * doc/gfortran/projects.rst: New file. + * doc/gfortran/runtime.rst: New file. + * doc/gfortran/runtime/gfortranconvertunit.rst: New file. + * doc/gfortran/runtime/gfortranerrorbacktrace.rst: New file. + * doc/gfortran/runtime/gfortranformattedbuffersize.rst: New file. + * doc/gfortran/runtime/gfortranlistseparator.rst: New file. + * doc/gfortran/runtime/gfortranoptionalplus.rst: New file. + * doc/gfortran/runtime/gfortranshowlocus.rst: New file. + * doc/gfortran/runtime/gfortranstderrunit.rst: New file. + * doc/gfortran/runtime/gfortranstdinunit.rst: New file. + * doc/gfortran/runtime/gfortranstdoutunit.rst: New file. + * doc/gfortran/runtime/gfortranunbufferedall.rst: New file. + * doc/gfortran/runtime/gfortranunbufferedpreconnected.rst: New file. + * doc/gfortran/runtime/gfortranunformattedbuffersize.rst: New file. + * doc/gfortran/runtime/tmpdir.rst: New file. + * doc/gfortran/standards.rst: New file. + * doc/gfortran/type-and-enum-abi-documentation.rst: New file. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * Make-lang.in: Support Sphinx based documentation. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * gfc-internals.texi: Removed. + * gfortran.texi: Removed. + * intrinsic.texi: Removed. + * invoke.texi: Removed. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * Make-lang.in: Support --with-sphinx-build. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * Make-lang.in: + Support installation if sphinx-build is missing. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-09 Martin Liska <mliska@suse.cz> + + * doc/gfortran/intrinsic-procedures/aint.rst: Simplify function + declaration. + * doc/gfortran/intrinsic-procedures/int.rst: Likewise. + * doc/gfortran/intrinsic-procedures/anint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/char.rst: Likewise. + * doc/gfortran/intrinsic-procedures/real.rst: Likewise. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/code-that-interacts-with-the-user.rst: + Add trailing newline. + * doc/gfc-internals/command-line-options.rst: + Add trailing newline. + * doc/gfc-internals/copyright.rst: + Add trailing newline. + * doc/gfc-internals/error-handling.rst: + Add trailing newline. + * doc/gfc-internals/frontend-data-structures.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/accessing-declarations.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/basic-data-structures.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/converting-expressions-to-tree.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/translating-statements.rst: + Add trailing newline. + * doc/gfc-internals/gfccode.rst: + Add trailing newline. + * doc/gfc-internals/gfcexpr.rst: + Add trailing newline. + * doc/gfc-internals/gnu-free-documentation-license.rst: + Add trailing newline. + * doc/gfc-internals/index.rst: + Add trailing newline. + * doc/gfc-internals/indices-and-tables.rst: + Add trailing newline. + * doc/gfc-internals/internals-of-fortran-2003-oop-features.rst: + Add trailing newline. + * doc/gfc-internals/introduction.rst: + Add trailing newline. + * doc/gfc-internals/symbol-versioning.rst: + Add trailing newline. + * doc/gfc-internals/the-libgfortran-runtime-library.rst: + Add trailing newline. + * doc/gfc-internals/type-bound-operators.rst: + Add trailing newline. + * doc/gfc-internals/type-bound-procedures.rst: + Add trailing newline. + * doc/gfortran/about-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/coarray-programming.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/asynchronous-i-o.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/data-consistency-and-durability.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/evaluation-of-logical-expressions.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/file-format-of-unformatted-sequential-files.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/file-operations-on-symbolic-links.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/files-opened-without-an-explicit-action=-specifier.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/internal-representation-of-logical-variables.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/kind-type-parameters.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/max-and-min-intrinsics-with-real-nan-arguments.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/thread-safety-of-the-runtime-library.rst: + Add trailing newline. + * doc/gfortran/contributing.rst: + Add trailing newline. + * doc/gfortran/contributors-to-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/copyright.rst: + Add trailing newline. + * doc/gfortran/extensions-implemented-in-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/extensions-not-implemented-in-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/extensions.rst: + Add trailing newline. + * doc/gfortran/function-abi-documentation.rst: + Add trailing newline. + * doc/gfortran/funding.rst: + Add trailing newline. + * doc/gfortran/general-public-license-3.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-and-gcc.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/description.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/enable-and-customize-preprocessing.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/environment-variables-affecting-gfortran.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/influencing-runtime-behavior.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/influencing-the-linking-step.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/option-summary.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-controlling-fortran-dialect.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-code-generation-conventions.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-debugging-your-program-or-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-directory-search.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-interoperability-with-other-languages.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-to-request-or-suppress-errors-and-warnings.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-compiler-directives.rst: + Add trailing newline. + * doc/gfortran/gnu-free-documentation-license.rst: + Add trailing newline. + * doc/gfortran/index.rst: + Add trailing newline. + * doc/gfortran/indices-and-tables.rst: + Add trailing newline. + * doc/gfortran/interoperability-with-c.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/ieee-modules-ieeeexceptions-ieeearithmetic-and-ieeefeatures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/isocbinding.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/isofortranenv.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/openacc-module-openacc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/openmp-modules-omplib-and-omplibkinds.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/abort.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/abs.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/access.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/achar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acos.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acosd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acosh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/adjustl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/adjustr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/aimag.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/alarm.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/all.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/allocated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/and.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/any.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asinh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/associated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan2d.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atanh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicadd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomiccas.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicdefine.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchadd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchxor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicref.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicxor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/backtrace.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselj0.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselj1.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besseljn.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bessely0.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bessely1.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselyn.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bgt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bitsize.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ble.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/blt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/btest.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cassociated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ceiling.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfpointer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfprocpointer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfunloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/chdir.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/chmod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cmplx.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cobroadcast.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/comax.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/comin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/commandargumentcount.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/compileroptions.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/compilerversion.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/complex.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/conjg.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/coreduce.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cos.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cotan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cotand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/count.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cputime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/csizeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ctime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dateandtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dble.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dcmplx.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/digits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dotproduct.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dprod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dreal.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dshiftl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dshiftr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/eoshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/epsilon.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erf.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erfc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erfcscaled.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/etime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/eventquery.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/executecommandline.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exit.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exp.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/extendstypeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fdate.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fget.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fgetc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/findloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/floor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/flush.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fnum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fput.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fputc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fraction.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/free.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fseek.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fstat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ftell.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gamma.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gerror.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getarg.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcommand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcommandargument.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcwd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getenv.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getenvironmentvariable.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getgid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getlog.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getpid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getuid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gmtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/hostnm.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/huge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/hypot.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iachar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iall.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iany.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iargc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibclr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibset.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ichar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/idate.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ieor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ierrno.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/imageindex.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/index.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/int2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/int8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/introduction-to-intrinsic-procedures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ior.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iparity.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/irand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isatty.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iscontiguous.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ishft.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ishftc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isiostatend.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isiostateor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isnan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/itime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/kill.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/kind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lbound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lcobound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/leadz.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/len.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lentrim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lgt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/link.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lle.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/llt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lnblnk.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/loc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/log.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/log10.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/loggamma.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/logical.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lstat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ltime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/malloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maskl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maskr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/matmul.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/max.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxval.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mclock.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mclock8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/merge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mergebits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/min.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minval.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/modulo.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/movealloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mvbits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/nearest.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/newline.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/nint.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/norm2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/not.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/null.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/numimages.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/or.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/pack.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/parity.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/perror.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/popcnt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/poppar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/precision.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/present.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/product.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/radix.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ran.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randominit.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randomnumber.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randomseed.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/range.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rank.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rename.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/repeat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/reshape.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rrspacing.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sametypeas.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/scale.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/scan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/secnds.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/second.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedcharkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedintkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedrealkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/setexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shape.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shifta.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shiftl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shiftr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sign.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/signal.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sinh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/size.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sizeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sleep.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/spacing.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/spread.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sqrt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/srand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/stat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/storagesize.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/symlnk.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/system.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/systemclock.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tanh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/thisimage.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/time.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/time8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tiny.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/trailz.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/transfer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/transpose.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/trim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ttynam.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ubound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ucobound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/umask.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/unlink.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/unpack.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/verify.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/xor.rst: + Add trailing newline. + * doc/gfortran/introduction.rst: + Add trailing newline. + * doc/gfortran/mixed-language-programming.rst: + Add trailing newline. + * doc/gfortran/naming-and-argument-passing-conventions.rst: + Add trailing newline. + * doc/gfortran/non-fortran-main-program.rst: + Add trailing newline. + * doc/gfortran/projects.rst: + Add trailing newline. + * doc/gfortran/runtime.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranconvertunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranerrorbacktrace.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranformattedbuffersize.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranlistseparator.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranoptionalplus.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranshowlocus.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstderrunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstdinunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstdoutunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunbufferedall.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunbufferedpreconnected.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunformattedbuffersize.rst: + Add trailing newline. + * doc/gfortran/runtime/tmpdir.rst: + Add trailing newline. + * doc/gfortran/standards.rst: + Add trailing newline. + * doc/gfortran/type-and-enum-abi-documentation.rst: + Add trailing newline. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-14 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/conf.py: Add newline at last line. + * doc/gfortran/conf.py: Add newline at last line. + +2022-11-14 Martin Liska <mliska@suse.cz> + + Revert: + 2022-11-10 Martin Liska <mliska@suse.cz> + + * doc/gfortran/intrinsic-procedures/abs.rst: Move label directly before title. + * doc/gfortran/intrinsic-procedures/acos.rst: Likewise. + * doc/gfortran/intrinsic-procedures/acosd.rst: Likewise. + * doc/gfortran/intrinsic-procedures/acosh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/aimag.rst: Likewise. + * doc/gfortran/intrinsic-procedures/aint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/anint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asin.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asind.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asinh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan2.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan2d.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atanh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselj0.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselj1.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besseljn.rst: Likewise. + * doc/gfortran/intrinsic-procedures/bessely0.rst: Likewise. + * doc/gfortran/intrinsic-procedures/bessely1.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselyn.rst: Likewise. + * doc/gfortran/intrinsic-procedures/btest.rst: Likewise. + * doc/gfortran/intrinsic-procedures/char.rst: Likewise. + * doc/gfortran/intrinsic-procedures/conjg.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cos.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cosd.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cosh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cotan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cotand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/dim.rst: Likewise. + * doc/gfortran/intrinsic-procedures/dprod.rst: Likewise. + * doc/gfortran/intrinsic-procedures/erf.rst: Likewise. + * doc/gfortran/intrinsic-procedures/erfc.rst: Likewise. + * doc/gfortran/intrinsic-procedures/exp.rst: Likewise. + * doc/gfortran/intrinsic-procedures/gamma.rst: Likewise. + * doc/gfortran/intrinsic-procedures/iand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibclr.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibits.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibset.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ichar.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ieor.rst: Likewise. + * doc/gfortran/intrinsic-procedures/index.rst: Likewise. + * doc/gfortran/intrinsic-procedures/int.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ior.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ishft.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ishftc.rst: Likewise. + * doc/gfortran/intrinsic-procedures/len.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lge.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lgt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lle.rst: Likewise. + * doc/gfortran/intrinsic-procedures/llt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/log.rst: Likewise. + * doc/gfortran/intrinsic-procedures/log10.rst: Likewise. + * doc/gfortran/intrinsic-procedures/loggamma.rst: Likewise. + * doc/gfortran/intrinsic-procedures/max.rst: Likewise. + * doc/gfortran/intrinsic-procedures/min.rst: Likewise. + * doc/gfortran/intrinsic-procedures/mod.rst: Likewise. + * doc/gfortran/intrinsic-procedures/mvbits.rst: Likewise. + * doc/gfortran/intrinsic-procedures/nint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/not.rst: Likewise. + * doc/gfortran/intrinsic-procedures/real.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sign.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sin.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sind.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sinh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sqrt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tanh.rst: Likewise. + +2022-11-14 Martin Liska <mliska@suse.cz> + + * doc/gfortran/naming-and-argument-passing-conventions.rst: + Revert. + +2022-11-13 José Rui Faustino de Sousa <jrfsousa@gmail.com> + + PR fortran/94104 + * interface.cc (gfc_compare_actual_formal): Improve error message + dependent on Fortran standard level. + +2021-11-06 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * gfortran.h (gfc_check_include): Remove declaration. + +2022-11-12 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107444 + * trans-decl.cc (create_function_arglist): Extend presence status + to all intrinsic types, and change prefix of internal symbol to '.'. + * trans-expr.cc (gfc_conv_expr_present): Align to changes in + create_function_arglist. + (gfc_conv_procedure_call): Fix generation of procedure arguments for + the case of character dummy arguments with optional+value attribute. + * trans-types.cc (gfc_get_function_type): Synchronize with changes + to create_function_arglist. + * doc/gfortran/naming-and-argument-passing-conventions.rst: Clarify + the gfortran argument passing conventions with regard to OPTIONAL + dummy arguments of intrinsic type. + +2022-11-10 Martin Liska <mliska@suse.cz> + + * doc/gfortran/intrinsic-procedures/abs.rst: Move label directly before title. + * doc/gfortran/intrinsic-procedures/acos.rst: Likewise. + * doc/gfortran/intrinsic-procedures/acosd.rst: Likewise. + * doc/gfortran/intrinsic-procedures/acosh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/aimag.rst: Likewise. + * doc/gfortran/intrinsic-procedures/aint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/anint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asin.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asind.rst: Likewise. + * doc/gfortran/intrinsic-procedures/asinh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan2.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atan2d.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/atanh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselj0.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselj1.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besseljn.rst: Likewise. + * doc/gfortran/intrinsic-procedures/bessely0.rst: Likewise. + * doc/gfortran/intrinsic-procedures/bessely1.rst: Likewise. + * doc/gfortran/intrinsic-procedures/besselyn.rst: Likewise. + * doc/gfortran/intrinsic-procedures/btest.rst: Likewise. + * doc/gfortran/intrinsic-procedures/char.rst: Likewise. + * doc/gfortran/intrinsic-procedures/conjg.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cos.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cosd.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cosh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cotan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/cotand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/dim.rst: Likewise. + * doc/gfortran/intrinsic-procedures/dprod.rst: Likewise. + * doc/gfortran/intrinsic-procedures/erf.rst: Likewise. + * doc/gfortran/intrinsic-procedures/erfc.rst: Likewise. + * doc/gfortran/intrinsic-procedures/exp.rst: Likewise. + * doc/gfortran/intrinsic-procedures/gamma.rst: Likewise. + * doc/gfortran/intrinsic-procedures/iand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibclr.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibits.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ibset.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ichar.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ieor.rst: Likewise. + * doc/gfortran/intrinsic-procedures/index.rst: Likewise. + * doc/gfortran/intrinsic-procedures/int.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ior.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ishft.rst: Likewise. + * doc/gfortran/intrinsic-procedures/ishftc.rst: Likewise. + * doc/gfortran/intrinsic-procedures/len.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lge.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lgt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/lle.rst: Likewise. + * doc/gfortran/intrinsic-procedures/llt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/log.rst: Likewise. + * doc/gfortran/intrinsic-procedures/log10.rst: Likewise. + * doc/gfortran/intrinsic-procedures/loggamma.rst: Likewise. + * doc/gfortran/intrinsic-procedures/max.rst: Likewise. + * doc/gfortran/intrinsic-procedures/min.rst: Likewise. + * doc/gfortran/intrinsic-procedures/mod.rst: Likewise. + * doc/gfortran/intrinsic-procedures/mvbits.rst: Likewise. + * doc/gfortran/intrinsic-procedures/nint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/not.rst: Likewise. + * doc/gfortran/intrinsic-procedures/real.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sign.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sin.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sind.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sinh.rst: Likewise. + * doc/gfortran/intrinsic-procedures/sqrt.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tan.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tand.rst: Likewise. + * doc/gfortran/intrinsic-procedures/tanh.rst: Likewise. + +2022-11-10 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/conf.py: Add newline at last line. + * doc/gfortran/conf.py: Add newline at last line. + +2022-11-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107559 + * resolve.cc (resolve_equivalence): Avoid NULL pointer dereference + while emitting diagnostics for bad EQUIVALENCEs. + +2022-11-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/107441 + * trans-decl.cc (create_function_arglist): Adjust the ordering of + automatically generated hidden procedure arguments to match the + documented ABI for gfortran. + * trans-types.cc (gfc_get_function_type): Separate hidden parameters + so that the presence flag for optional+value arguments come before + string length, coarray token and offset, as required. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/code-that-interacts-with-the-user.rst: + Add trailing newline. + * doc/gfc-internals/command-line-options.rst: + Add trailing newline. + * doc/gfc-internals/copyright.rst: + Add trailing newline. + * doc/gfc-internals/error-handling.rst: + Add trailing newline. + * doc/gfc-internals/frontend-data-structures.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/accessing-declarations.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/basic-data-structures.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/converting-expressions-to-tree.rst: + Add trailing newline. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/translating-statements.rst: + Add trailing newline. + * doc/gfc-internals/gfccode.rst: + Add trailing newline. + * doc/gfc-internals/gfcexpr.rst: + Add trailing newline. + * doc/gfc-internals/gnu-free-documentation-license.rst: + Add trailing newline. + * doc/gfc-internals/index.rst: + Add trailing newline. + * doc/gfc-internals/indices-and-tables.rst: + Add trailing newline. + * doc/gfc-internals/internals-of-fortran-2003-oop-features.rst: + Add trailing newline. + * doc/gfc-internals/introduction.rst: + Add trailing newline. + * doc/gfc-internals/symbol-versioning.rst: + Add trailing newline. + * doc/gfc-internals/the-libgfortran-runtime-library.rst: + Add trailing newline. + * doc/gfc-internals/type-bound-operators.rst: + Add trailing newline. + * doc/gfc-internals/type-bound-procedures.rst: + Add trailing newline. + * doc/gfortran/about-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/coarray-programming.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/asynchronous-i-o.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/data-consistency-and-durability.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/evaluation-of-logical-expressions.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/file-format-of-unformatted-sequential-files.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/file-operations-on-symbolic-links.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/files-opened-without-an-explicit-action=-specifier.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/internal-representation-of-logical-variables.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/kind-type-parameters.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/max-and-min-intrinsics-with-real-nan-arguments.rst: + Add trailing newline. + * doc/gfortran/compiler-characteristics/thread-safety-of-the-runtime-library.rst: + Add trailing newline. + * doc/gfortran/contributing.rst: + Add trailing newline. + * doc/gfortran/contributors-to-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/copyright.rst: + Add trailing newline. + * doc/gfortran/extensions-implemented-in-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/extensions-not-implemented-in-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/extensions.rst: + Add trailing newline. + * doc/gfortran/function-abi-documentation.rst: + Add trailing newline. + * doc/gfortran/funding.rst: + Add trailing newline. + * doc/gfortran/general-public-license-3.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-and-gcc.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/description.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/enable-and-customize-preprocessing.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/environment-variables-affecting-gfortran.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/influencing-runtime-behavior.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/influencing-the-linking-step.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/option-summary.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-controlling-fortran-dialect.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-code-generation-conventions.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-debugging-your-program-or-gnu-fortran.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-directory-search.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-for-interoperability-with-other-languages.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-command-options/options-to-request-or-suppress-errors-and-warnings.rst: + Add trailing newline. + * doc/gfortran/gnu-fortran-compiler-directives.rst: + Add trailing newline. + * doc/gfortran/gnu-free-documentation-license.rst: + Add trailing newline. + * doc/gfortran/index.rst: + Add trailing newline. + * doc/gfortran/indices-and-tables.rst: + Add trailing newline. + * doc/gfortran/interoperability-with-c.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/ieee-modules-ieeeexceptions-ieeearithmetic-and-ieeefeatures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/isocbinding.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/isofortranenv.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/openacc-module-openacc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-modules/openmp-modules-omplib-and-omplibkinds.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/abort.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/abs.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/access.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/achar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acos.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acosd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/acosh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/adjustl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/adjustr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/aimag.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/alarm.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/all.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/allocated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/and.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/any.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/asinh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/associated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atan2d.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atanh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicadd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomiccas.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicdefine.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchadd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicfetchxor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicref.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/atomicxor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/backtrace.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselj0.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselj1.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besseljn.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bessely0.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bessely1.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/besselyn.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bgt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/bitsize.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ble.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/blt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/btest.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cassociated.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ceiling.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfpointer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfprocpointer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cfunloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/chdir.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/chmod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cmplx.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cobroadcast.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/comax.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/comin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/commandargumentcount.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/compileroptions.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/compilerversion.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/complex.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/conjg.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/coreduce.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cos.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cosum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cotan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cotand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/count.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cputime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/cshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/csizeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ctime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dateandtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dble.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dcmplx.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/digits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dotproduct.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dprod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dreal.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dshiftl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dshiftr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/dtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/eoshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/epsilon.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erf.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erfc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/erfcscaled.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/etime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/eventquery.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/executecommandline.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exit.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exp.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/exponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/extendstypeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fdate.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fget.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fgetc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/findloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/floor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/flush.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fnum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fput.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fputc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fraction.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/free.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fseek.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/fstat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ftell.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gamma.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gerror.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getarg.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcommand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcommandargument.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getcwd.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getenv.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getenvironmentvariable.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getgid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getlog.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getpid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/getuid.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/gmtime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/hostnm.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/huge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/hypot.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iachar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iall.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iany.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iargc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibclr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ibset.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ichar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/idate.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ieor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ierrno.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/imageindex.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/index.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/int2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/int8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/introduction-to-intrinsic-procedures.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ior.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iparity.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/irand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isatty.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/iscontiguous.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ishft.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ishftc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isiostatend.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isiostateor.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/isnan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/itime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/kill.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/kind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lbound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lcobound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/leadz.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/len.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lentrim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lgt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/link.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lle.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/llt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lnblnk.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/loc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/log.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/log10.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/loggamma.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/logical.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/lstat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ltime.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/malloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maskl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maskr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/matmul.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/max.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/maxval.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mclock.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mclock8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/merge.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mergebits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/min.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/minval.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mod.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/modulo.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/movealloc.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/mvbits.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/nearest.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/newline.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/nint.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/norm2.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/not.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/null.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/numimages.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/or.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/pack.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/parity.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/perror.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/popcnt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/poppar.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/precision.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/present.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/product.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/radix.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ran.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randominit.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randomnumber.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/randomseed.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/range.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rank.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rename.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/repeat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/reshape.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rrspacing.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/rshift.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sametypeas.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/scale.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/scan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/secnds.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/second.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedcharkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedintkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/selectedrealkind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/setexponent.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shape.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shifta.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shiftl.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/shiftr.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sign.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/signal.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sin.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sind.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sinh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/size.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sizeof.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sleep.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/spacing.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/spread.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sqrt.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/srand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/stat.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/storagesize.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/sum.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/symlnk.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/system.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/systemclock.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tan.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tand.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tanh.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/thisimage.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/time.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/time8.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/tiny.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/trailz.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/transfer.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/transpose.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/trim.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ttynam.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ubound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/ucobound.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/umask.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/unlink.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/unpack.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/verify.rst: + Add trailing newline. + * doc/gfortran/intrinsic-procedures/xor.rst: + Add trailing newline. + * doc/gfortran/introduction.rst: + Add trailing newline. + * doc/gfortran/mixed-language-programming.rst: + Add trailing newline. + * doc/gfortran/naming-and-argument-passing-conventions.rst: + Add trailing newline. + * doc/gfortran/non-fortran-main-program.rst: + Add trailing newline. + * doc/gfortran/projects.rst: + Add trailing newline. + * doc/gfortran/runtime.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranconvertunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranerrorbacktrace.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranformattedbuffersize.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranlistseparator.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranoptionalplus.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranshowlocus.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstderrunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstdinunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranstdoutunit.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunbufferedall.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunbufferedpreconnected.rst: + Add trailing newline. + * doc/gfortran/runtime/gfortranunformattedbuffersize.rst: + Add trailing newline. + * doc/gfortran/runtime/tmpdir.rst: + Add trailing newline. + * doc/gfortran/standards.rst: + Add trailing newline. + * doc/gfortran/type-and-enum-abi-documentation.rst: + Add trailing newline. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * doc/gfortran/intrinsic-procedures/aint.rst: Simplify function + declaration. + * doc/gfortran/intrinsic-procedures/int.rst: Likewise. + * doc/gfortran/intrinsic-procedures/anint.rst: Likewise. + * doc/gfortran/intrinsic-procedures/char.rst: Likewise. + * doc/gfortran/intrinsic-procedures/real.rst: Likewise. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * Make-lang.in: + Support installation if sphinx-build is missing. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * Make-lang.in: Support --with-sphinx-build. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * gfc-internals.texi: Removed. + * gfortran.texi: Removed. + * intrinsic.texi: Removed. + * invoke.texi: Removed. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * Make-lang.in: Support Sphinx based documentation. + +2022-11-09 Martin Liska <mliska@suse.cz> + + * doc/gfc-internals/code-that-interacts-with-the-user.rst: New file. + * doc/gfc-internals/command-line-options.rst: New file. + * doc/gfc-internals/conf.py: New file. + * doc/gfc-internals/copyright.rst: New file. + * doc/gfc-internals/error-handling.rst: New file. + * doc/gfc-internals/frontend-data-structures.rst: New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages.rst: New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/accessing-declarations.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/basic-data-structures.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/converting-expressions-to-tree.rst: + New file. + * doc/gfc-internals/generating-the-intermediate-language-for-later-stages/translating-statements.rst: + New file. + * doc/gfc-internals/gfccode.rst: New file. + * doc/gfc-internals/gfcexpr.rst: New file. + * doc/gfc-internals/gnu-free-documentation-license.rst: New file. + * doc/gfc-internals/index.rst: New file. + * doc/gfc-internals/indices-and-tables.rst: New file. + * doc/gfc-internals/internals-of-fortran-2003-oop-features.rst: New file. + * doc/gfc-internals/introduction.rst: New file. + * doc/gfc-internals/symbol-versioning.rst: New file. + * doc/gfc-internals/the-libgfortran-runtime-library.rst: New file. + * doc/gfc-internals/type-bound-operators.rst: New file. + * doc/gfc-internals/type-bound-procedures.rst: New file. + * doc/gfortran/about-gnu-fortran.rst: New file. + * doc/gfortran/coarray-programming.rst: New file. + * doc/gfortran/compiler-characteristics.rst: New file. + * doc/gfortran/compiler-characteristics/asynchronous-i-o.rst: New file. + * doc/gfortran/compiler-characteristics/data-consistency-and-durability.rst: New file. + * doc/gfortran/compiler-characteristics/evaluation-of-logical-expressions.rst: New file. + * doc/gfortran/compiler-characteristics/file-format-of-unformatted-sequential-files.rst: + New file. + * doc/gfortran/compiler-characteristics/file-operations-on-symbolic-links.rst: New file. + * doc/gfortran/compiler-characteristics/files-opened-without-an-explicit-action=-specifier.rst: + New file. + * doc/gfortran/compiler-characteristics/internal-representation-of-logical-variables.rst: + New file. + * doc/gfortran/compiler-characteristics/kind-type-parameters.rst: New file. + * doc/gfortran/compiler-characteristics/max-and-min-intrinsics-with-real-nan-arguments.rst: + New file. + * doc/gfortran/compiler-characteristics/thread-safety-of-the-runtime-library.rst: New file. + * doc/gfortran/conf.py: New file. + * doc/gfortran/contributing.rst: New file. + * doc/gfortran/contributors-to-gnu-fortran.rst: New file. + * doc/gfortran/copyright.rst: New file. + * doc/gfortran/extensions-implemented-in-gnu-fortran.rst: New file. + * doc/gfortran/extensions-not-implemented-in-gnu-fortran.rst: New file. + * doc/gfortran/extensions.rst: New file. + * doc/gfortran/function-abi-documentation.rst: New file. + * doc/gfortran/funding.rst: New file. + * doc/gfortran/general-public-license-3.rst: New file. + * doc/gfortran/gnu-fortran-and-gcc.rst: New file. + * doc/gfortran/gnu-fortran-command-options.rst: New file. + * doc/gfortran/gnu-fortran-command-options/description.rst: New file. + * doc/gfortran/gnu-fortran-command-options/enable-and-customize-preprocessing.rst: New file. + * doc/gfortran/gnu-fortran-command-options/environment-variables-affecting-gfortran.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/influencing-runtime-behavior.rst: New file. + * doc/gfortran/gnu-fortran-command-options/influencing-the-linking-step.rst: New file. + * doc/gfortran/gnu-fortran-command-options/option-summary.rst: New file. + * doc/gfortran/gnu-fortran-command-options/options-controlling-fortran-dialect.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-code-generation-conventions.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-debugging-your-program-or-gnu-fortran.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-for-directory-search.rst: New file. + * doc/gfortran/gnu-fortran-command-options/options-for-interoperability-with-other-languages.rst: + New file. + * doc/gfortran/gnu-fortran-command-options/options-to-request-or-suppress-errors-and-warnings.rst: + New file. + * doc/gfortran/gnu-fortran-compiler-directives.rst: New file. + * doc/gfortran/gnu-free-documentation-license.rst: New file. + * doc/gfortran/index.rst: New file. + * doc/gfortran/indices-and-tables.rst: New file. + * doc/gfortran/interoperability-with-c.rst: New file. + * doc/gfortran/intrinsic-modules.rst: New file. + * doc/gfortran/intrinsic-modules/ieee-modules-ieeeexceptions-ieeearithmetic-and-ieeefeatures.rst: + New file. + * doc/gfortran/intrinsic-modules/isocbinding.rst: New file. + * doc/gfortran/intrinsic-modules/isofortranenv.rst: New file. + * doc/gfortran/intrinsic-modules/openacc-module-openacc.rst: New file. + * doc/gfortran/intrinsic-modules/openmp-modules-omplib-and-omplibkinds.rst: New file. + * doc/gfortran/intrinsic-procedures.rst: New file. + * doc/gfortran/intrinsic-procedures/abort.rst: New file. + * doc/gfortran/intrinsic-procedures/abs.rst: New file. + * doc/gfortran/intrinsic-procedures/access.rst: New file. + * doc/gfortran/intrinsic-procedures/achar.rst: New file. + * doc/gfortran/intrinsic-procedures/acos.rst: New file. + * doc/gfortran/intrinsic-procedures/acosd.rst: New file. + * doc/gfortran/intrinsic-procedures/acosh.rst: New file. + * doc/gfortran/intrinsic-procedures/adjustl.rst: New file. + * doc/gfortran/intrinsic-procedures/adjustr.rst: New file. + * doc/gfortran/intrinsic-procedures/aimag.rst: New file. + * doc/gfortran/intrinsic-procedures/aint.rst: New file. + * doc/gfortran/intrinsic-procedures/alarm.rst: New file. + * doc/gfortran/intrinsic-procedures/all.rst: New file. + * doc/gfortran/intrinsic-procedures/allocated.rst: New file. + * doc/gfortran/intrinsic-procedures/and.rst: New file. + * doc/gfortran/intrinsic-procedures/anint.rst: New file. + * doc/gfortran/intrinsic-procedures/any.rst: New file. + * doc/gfortran/intrinsic-procedures/asin.rst: New file. + * doc/gfortran/intrinsic-procedures/asind.rst: New file. + * doc/gfortran/intrinsic-procedures/asinh.rst: New file. + * doc/gfortran/intrinsic-procedures/associated.rst: New file. + * doc/gfortran/intrinsic-procedures/atan.rst: New file. + * doc/gfortran/intrinsic-procedures/atan2.rst: New file. + * doc/gfortran/intrinsic-procedures/atan2d.rst: New file. + * doc/gfortran/intrinsic-procedures/atand.rst: New file. + * doc/gfortran/intrinsic-procedures/atanh.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicadd.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicand.rst: New file. + * doc/gfortran/intrinsic-procedures/atomiccas.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicdefine.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchadd.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchand.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicfetchxor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicor.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicref.rst: New file. + * doc/gfortran/intrinsic-procedures/atomicxor.rst: New file. + * doc/gfortran/intrinsic-procedures/backtrace.rst: New file. + * doc/gfortran/intrinsic-procedures/besselj0.rst: New file. + * doc/gfortran/intrinsic-procedures/besselj1.rst: New file. + * doc/gfortran/intrinsic-procedures/besseljn.rst: New file. + * doc/gfortran/intrinsic-procedures/bessely0.rst: New file. + * doc/gfortran/intrinsic-procedures/bessely1.rst: New file. + * doc/gfortran/intrinsic-procedures/besselyn.rst: New file. + * doc/gfortran/intrinsic-procedures/bge.rst: New file. + * doc/gfortran/intrinsic-procedures/bgt.rst: New file. + * doc/gfortran/intrinsic-procedures/bitsize.rst: New file. + * doc/gfortran/intrinsic-procedures/ble.rst: New file. + * doc/gfortran/intrinsic-procedures/blt.rst: New file. + * doc/gfortran/intrinsic-procedures/btest.rst: New file. + * doc/gfortran/intrinsic-procedures/cassociated.rst: New file. + * doc/gfortran/intrinsic-procedures/ceiling.rst: New file. + * doc/gfortran/intrinsic-procedures/cfpointer.rst: New file. + * doc/gfortran/intrinsic-procedures/cfprocpointer.rst: New file. + * doc/gfortran/intrinsic-procedures/cfunloc.rst: New file. + * doc/gfortran/intrinsic-procedures/char.rst: New file. + * doc/gfortran/intrinsic-procedures/chdir.rst: New file. + * doc/gfortran/intrinsic-procedures/chmod.rst: New file. + * doc/gfortran/intrinsic-procedures/cloc.rst: New file. + * doc/gfortran/intrinsic-procedures/cmplx.rst: New file. + * doc/gfortran/intrinsic-procedures/cobroadcast.rst: New file. + * doc/gfortran/intrinsic-procedures/comax.rst: New file. + * doc/gfortran/intrinsic-procedures/comin.rst: New file. + * doc/gfortran/intrinsic-procedures/commandargumentcount.rst: New file. + * doc/gfortran/intrinsic-procedures/compileroptions.rst: New file. + * doc/gfortran/intrinsic-procedures/compilerversion.rst: New file. + * doc/gfortran/intrinsic-procedures/complex.rst: New file. + * doc/gfortran/intrinsic-procedures/conjg.rst: New file. + * doc/gfortran/intrinsic-procedures/coreduce.rst: New file. + * doc/gfortran/intrinsic-procedures/cos.rst: New file. + * doc/gfortran/intrinsic-procedures/cosd.rst: New file. + * doc/gfortran/intrinsic-procedures/cosh.rst: New file. + * doc/gfortran/intrinsic-procedures/cosum.rst: New file. + * doc/gfortran/intrinsic-procedures/cotan.rst: New file. + * doc/gfortran/intrinsic-procedures/cotand.rst: New file. + * doc/gfortran/intrinsic-procedures/count.rst: New file. + * doc/gfortran/intrinsic-procedures/cputime.rst: New file. + * doc/gfortran/intrinsic-procedures/cshift.rst: New file. + * doc/gfortran/intrinsic-procedures/csizeof.rst: New file. + * doc/gfortran/intrinsic-procedures/ctime.rst: New file. + * doc/gfortran/intrinsic-procedures/dateandtime.rst: New file. + * doc/gfortran/intrinsic-procedures/dble.rst: New file. + * doc/gfortran/intrinsic-procedures/dcmplx.rst: New file. + * doc/gfortran/intrinsic-procedures/digits.rst: New file. + * doc/gfortran/intrinsic-procedures/dim.rst: New file. + * doc/gfortran/intrinsic-procedures/dotproduct.rst: New file. + * doc/gfortran/intrinsic-procedures/dprod.rst: New file. + * doc/gfortran/intrinsic-procedures/dreal.rst: New file. + * doc/gfortran/intrinsic-procedures/dshiftl.rst: New file. + * doc/gfortran/intrinsic-procedures/dshiftr.rst: New file. + * doc/gfortran/intrinsic-procedures/dtime.rst: New file. + * doc/gfortran/intrinsic-procedures/eoshift.rst: New file. + * doc/gfortran/intrinsic-procedures/epsilon.rst: New file. + * doc/gfortran/intrinsic-procedures/erf.rst: New file. + * doc/gfortran/intrinsic-procedures/erfc.rst: New file. + * doc/gfortran/intrinsic-procedures/erfcscaled.rst: New file. + * doc/gfortran/intrinsic-procedures/etime.rst: New file. + * doc/gfortran/intrinsic-procedures/eventquery.rst: New file. + * doc/gfortran/intrinsic-procedures/executecommandline.rst: New file. + * doc/gfortran/intrinsic-procedures/exit.rst: New file. + * doc/gfortran/intrinsic-procedures/exp.rst: New file. + * doc/gfortran/intrinsic-procedures/exponent.rst: New file. + * doc/gfortran/intrinsic-procedures/extendstypeof.rst: New file. + * doc/gfortran/intrinsic-procedures/fdate.rst: New file. + * doc/gfortran/intrinsic-procedures/fget.rst: New file. + * doc/gfortran/intrinsic-procedures/fgetc.rst: New file. + * doc/gfortran/intrinsic-procedures/findloc.rst: New file. + * doc/gfortran/intrinsic-procedures/floor.rst: New file. + * doc/gfortran/intrinsic-procedures/flush.rst: New file. + * doc/gfortran/intrinsic-procedures/fnum.rst: New file. + * doc/gfortran/intrinsic-procedures/fput.rst: New file. + * doc/gfortran/intrinsic-procedures/fputc.rst: New file. + * doc/gfortran/intrinsic-procedures/fraction.rst: New file. + * doc/gfortran/intrinsic-procedures/free.rst: New file. + * doc/gfortran/intrinsic-procedures/fseek.rst: New file. + * doc/gfortran/intrinsic-procedures/fstat.rst: New file. + * doc/gfortran/intrinsic-procedures/ftell.rst: New file. + * doc/gfortran/intrinsic-procedures/gamma.rst: New file. + * doc/gfortran/intrinsic-procedures/gerror.rst: New file. + * doc/gfortran/intrinsic-procedures/getarg.rst: New file. + * doc/gfortran/intrinsic-procedures/getcommand.rst: New file. + * doc/gfortran/intrinsic-procedures/getcommandargument.rst: New file. + * doc/gfortran/intrinsic-procedures/getcwd.rst: New file. + * doc/gfortran/intrinsic-procedures/getenv.rst: New file. + * doc/gfortran/intrinsic-procedures/getenvironmentvariable.rst: New file. + * doc/gfortran/intrinsic-procedures/getgid.rst: New file. + * doc/gfortran/intrinsic-procedures/getlog.rst: New file. + * doc/gfortran/intrinsic-procedures/getpid.rst: New file. + * doc/gfortran/intrinsic-procedures/getuid.rst: New file. + * doc/gfortran/intrinsic-procedures/gmtime.rst: New file. + * doc/gfortran/intrinsic-procedures/hostnm.rst: New file. + * doc/gfortran/intrinsic-procedures/huge.rst: New file. + * doc/gfortran/intrinsic-procedures/hypot.rst: New file. + * doc/gfortran/intrinsic-procedures/iachar.rst: New file. + * doc/gfortran/intrinsic-procedures/iall.rst: New file. + * doc/gfortran/intrinsic-procedures/iand.rst: New file. + * doc/gfortran/intrinsic-procedures/iany.rst: New file. + * doc/gfortran/intrinsic-procedures/iargc.rst: New file. + * doc/gfortran/intrinsic-procedures/ibclr.rst: New file. + * doc/gfortran/intrinsic-procedures/ibits.rst: New file. + * doc/gfortran/intrinsic-procedures/ibset.rst: New file. + * doc/gfortran/intrinsic-procedures/ichar.rst: New file. + * doc/gfortran/intrinsic-procedures/idate.rst: New file. + * doc/gfortran/intrinsic-procedures/ieor.rst: New file. + * doc/gfortran/intrinsic-procedures/ierrno.rst: New file. + * doc/gfortran/intrinsic-procedures/imageindex.rst: New file. + * doc/gfortran/intrinsic-procedures/index.rst: New file. + * doc/gfortran/intrinsic-procedures/int.rst: New file. + * doc/gfortran/intrinsic-procedures/int2.rst: New file. + * doc/gfortran/intrinsic-procedures/int8.rst: New file. + * doc/gfortran/intrinsic-procedures/introduction-to-intrinsic-procedures.rst: New file. + * doc/gfortran/intrinsic-procedures/ior.rst: New file. + * doc/gfortran/intrinsic-procedures/iparity.rst: New file. + * doc/gfortran/intrinsic-procedures/irand.rst: New file. + * doc/gfortran/intrinsic-procedures/isatty.rst: New file. + * doc/gfortran/intrinsic-procedures/iscontiguous.rst: New file. + * doc/gfortran/intrinsic-procedures/ishft.rst: New file. + * doc/gfortran/intrinsic-procedures/ishftc.rst: New file. + * doc/gfortran/intrinsic-procedures/isiostatend.rst: New file. + * doc/gfortran/intrinsic-procedures/isiostateor.rst: New file. + * doc/gfortran/intrinsic-procedures/isnan.rst: New file. + * doc/gfortran/intrinsic-procedures/itime.rst: New file. + * doc/gfortran/intrinsic-procedures/kill.rst: New file. + * doc/gfortran/intrinsic-procedures/kind.rst: New file. + * doc/gfortran/intrinsic-procedures/lbound.rst: New file. + * doc/gfortran/intrinsic-procedures/lcobound.rst: New file. + * doc/gfortran/intrinsic-procedures/leadz.rst: New file. + * doc/gfortran/intrinsic-procedures/len.rst: New file. + * doc/gfortran/intrinsic-procedures/lentrim.rst: New file. + * doc/gfortran/intrinsic-procedures/lge.rst: New file. + * doc/gfortran/intrinsic-procedures/lgt.rst: New file. + * doc/gfortran/intrinsic-procedures/link.rst: New file. + * doc/gfortran/intrinsic-procedures/lle.rst: New file. + * doc/gfortran/intrinsic-procedures/llt.rst: New file. + * doc/gfortran/intrinsic-procedures/lnblnk.rst: New file. + * doc/gfortran/intrinsic-procedures/loc.rst: New file. + * doc/gfortran/intrinsic-procedures/log.rst: New file. + * doc/gfortran/intrinsic-procedures/log10.rst: New file. + * doc/gfortran/intrinsic-procedures/loggamma.rst: New file. + * doc/gfortran/intrinsic-procedures/logical.rst: New file. + * doc/gfortran/intrinsic-procedures/lshift.rst: New file. + * doc/gfortran/intrinsic-procedures/lstat.rst: New file. + * doc/gfortran/intrinsic-procedures/ltime.rst: New file. + * doc/gfortran/intrinsic-procedures/malloc.rst: New file. + * doc/gfortran/intrinsic-procedures/maskl.rst: New file. + * doc/gfortran/intrinsic-procedures/maskr.rst: New file. + * doc/gfortran/intrinsic-procedures/matmul.rst: New file. + * doc/gfortran/intrinsic-procedures/max.rst: New file. + * doc/gfortran/intrinsic-procedures/maxexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/maxloc.rst: New file. + * doc/gfortran/intrinsic-procedures/maxval.rst: New file. + * doc/gfortran/intrinsic-procedures/mclock.rst: New file. + * doc/gfortran/intrinsic-procedures/mclock8.rst: New file. + * doc/gfortran/intrinsic-procedures/merge.rst: New file. + * doc/gfortran/intrinsic-procedures/mergebits.rst: New file. + * doc/gfortran/intrinsic-procedures/min.rst: New file. + * doc/gfortran/intrinsic-procedures/minexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/minloc.rst: New file. + * doc/gfortran/intrinsic-procedures/minval.rst: New file. + * doc/gfortran/intrinsic-procedures/mod.rst: New file. + * doc/gfortran/intrinsic-procedures/modulo.rst: New file. + * doc/gfortran/intrinsic-procedures/movealloc.rst: New file. + * doc/gfortran/intrinsic-procedures/mvbits.rst: New file. + * doc/gfortran/intrinsic-procedures/nearest.rst: New file. + * doc/gfortran/intrinsic-procedures/newline.rst: New file. + * doc/gfortran/intrinsic-procedures/nint.rst: New file. + * doc/gfortran/intrinsic-procedures/norm2.rst: New file. + * doc/gfortran/intrinsic-procedures/not.rst: New file. + * doc/gfortran/intrinsic-procedures/null.rst: New file. + * doc/gfortran/intrinsic-procedures/numimages.rst: New file. + * doc/gfortran/intrinsic-procedures/or.rst: New file. + * doc/gfortran/intrinsic-procedures/pack.rst: New file. + * doc/gfortran/intrinsic-procedures/parity.rst: New file. + * doc/gfortran/intrinsic-procedures/perror.rst: New file. + * doc/gfortran/intrinsic-procedures/popcnt.rst: New file. + * doc/gfortran/intrinsic-procedures/poppar.rst: New file. + * doc/gfortran/intrinsic-procedures/precision.rst: New file. + * doc/gfortran/intrinsic-procedures/present.rst: New file. + * doc/gfortran/intrinsic-procedures/product.rst: New file. + * doc/gfortran/intrinsic-procedures/radix.rst: New file. + * doc/gfortran/intrinsic-procedures/ran.rst: New file. + * doc/gfortran/intrinsic-procedures/rand.rst: New file. + * doc/gfortran/intrinsic-procedures/randominit.rst: New file. + * doc/gfortran/intrinsic-procedures/randomnumber.rst: New file. + * doc/gfortran/intrinsic-procedures/randomseed.rst: New file. + * doc/gfortran/intrinsic-procedures/range.rst: New file. + * doc/gfortran/intrinsic-procedures/rank.rst: New file. + * doc/gfortran/intrinsic-procedures/real.rst: New file. + * doc/gfortran/intrinsic-procedures/rename.rst: New file. + * doc/gfortran/intrinsic-procedures/repeat.rst: New file. + * doc/gfortran/intrinsic-procedures/reshape.rst: New file. + * doc/gfortran/intrinsic-procedures/rrspacing.rst: New file. + * doc/gfortran/intrinsic-procedures/rshift.rst: New file. + * doc/gfortran/intrinsic-procedures/sametypeas.rst: New file. + * doc/gfortran/intrinsic-procedures/scale.rst: New file. + * doc/gfortran/intrinsic-procedures/scan.rst: New file. + * doc/gfortran/intrinsic-procedures/secnds.rst: New file. + * doc/gfortran/intrinsic-procedures/second.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedcharkind.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedintkind.rst: New file. + * doc/gfortran/intrinsic-procedures/selectedrealkind.rst: New file. + * doc/gfortran/intrinsic-procedures/setexponent.rst: New file. + * doc/gfortran/intrinsic-procedures/shape.rst: New file. + * doc/gfortran/intrinsic-procedures/shifta.rst: New file. + * doc/gfortran/intrinsic-procedures/shiftl.rst: New file. + * doc/gfortran/intrinsic-procedures/shiftr.rst: New file. + * doc/gfortran/intrinsic-procedures/sign.rst: New file. + * doc/gfortran/intrinsic-procedures/signal.rst: New file. + * doc/gfortran/intrinsic-procedures/sin.rst: New file. + * doc/gfortran/intrinsic-procedures/sind.rst: New file. + * doc/gfortran/intrinsic-procedures/sinh.rst: New file. + * doc/gfortran/intrinsic-procedures/size.rst: New file. + * doc/gfortran/intrinsic-procedures/sizeof.rst: New file. + * doc/gfortran/intrinsic-procedures/sleep.rst: New file. + * doc/gfortran/intrinsic-procedures/spacing.rst: New file. + * doc/gfortran/intrinsic-procedures/spread.rst: New file. + * doc/gfortran/intrinsic-procedures/sqrt.rst: New file. + * doc/gfortran/intrinsic-procedures/srand.rst: New file. + * doc/gfortran/intrinsic-procedures/stat.rst: New file. + * doc/gfortran/intrinsic-procedures/storagesize.rst: New file. + * doc/gfortran/intrinsic-procedures/sum.rst: New file. + * doc/gfortran/intrinsic-procedures/symlnk.rst: New file. + * doc/gfortran/intrinsic-procedures/system.rst: New file. + * doc/gfortran/intrinsic-procedures/systemclock.rst: New file. + * doc/gfortran/intrinsic-procedures/tan.rst: New file. + * doc/gfortran/intrinsic-procedures/tand.rst: New file. + * doc/gfortran/intrinsic-procedures/tanh.rst: New file. + * doc/gfortran/intrinsic-procedures/thisimage.rst: New file. + * doc/gfortran/intrinsic-procedures/time.rst: New file. + * doc/gfortran/intrinsic-procedures/time8.rst: New file. + * doc/gfortran/intrinsic-procedures/tiny.rst: New file. + * doc/gfortran/intrinsic-procedures/trailz.rst: New file. + * doc/gfortran/intrinsic-procedures/transfer.rst: New file. + * doc/gfortran/intrinsic-procedures/transpose.rst: New file. + * doc/gfortran/intrinsic-procedures/trim.rst: New file. + * doc/gfortran/intrinsic-procedures/ttynam.rst: New file. + * doc/gfortran/intrinsic-procedures/ubound.rst: New file. + * doc/gfortran/intrinsic-procedures/ucobound.rst: New file. + * doc/gfortran/intrinsic-procedures/umask.rst: New file. + * doc/gfortran/intrinsic-procedures/unlink.rst: New file. + * doc/gfortran/intrinsic-procedures/unpack.rst: New file. + * doc/gfortran/intrinsic-procedures/verify.rst: New file. + * doc/gfortran/intrinsic-procedures/xor.rst: New file. + * doc/gfortran/introduction.rst: New file. + * doc/gfortran/mixed-language-programming.rst: New file. + * doc/gfortran/naming-and-argument-passing-conventions.rst: New file. + * doc/gfortran/non-fortran-main-program.rst: New file. + * doc/gfortran/projects.rst: New file. + * doc/gfortran/runtime.rst: New file. + * doc/gfortran/runtime/gfortranconvertunit.rst: New file. + * doc/gfortran/runtime/gfortranerrorbacktrace.rst: New file. + * doc/gfortran/runtime/gfortranformattedbuffersize.rst: New file. + * doc/gfortran/runtime/gfortranlistseparator.rst: New file. + * doc/gfortran/runtime/gfortranoptionalplus.rst: New file. + * doc/gfortran/runtime/gfortranshowlocus.rst: New file. + * doc/gfortran/runtime/gfortranstderrunit.rst: New file. + * doc/gfortran/runtime/gfortranstdinunit.rst: New file. + * doc/gfortran/runtime/gfortranstdoutunit.rst: New file. + * doc/gfortran/runtime/gfortranunbufferedall.rst: New file. + * doc/gfortran/runtime/gfortranunbufferedpreconnected.rst: New file. + * doc/gfortran/runtime/gfortranunformattedbuffersize.rst: New file. + * doc/gfortran/runtime/tmpdir.rst: New file. + * doc/gfortran/standards.rst: New file. + * doc/gfortran/type-and-enum-abi-documentation.rst: New file. + +2022-11-07 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/107508 + * trans-array.cc (gfc_alloc_allocatable_for_assignment): Fix + string-length check, plug memory leak, and avoid generation of + effectively no-op code. + * trans-expr.cc (alloc_scalar_allocatable_for_assignment): Extend + comment; minor cleanup. + +2022-11-03 Tobias Burnus <tobias@codesourcery.com> + + * openmp.cc (gfc_match_omp_clauses): Permit derived types for + the 'to' and 'from' clauses of 'target update'. + * trans-openmp.cc (gfc_trans_omp_clauses): Fixes for + derived-type changes; fix size for scalars. + 2022-10-28 Joseph Myers <joseph@codesourcery.com> * trans-types.cc (gfc_get_function_type): Do not use @@ -150,7 +2896,7 @@ (gfc_match_omp_clauses): Call it; optionally use passed omp_clauses argument. (omp_verify_merge_absent_contains, gfc_match_omp_assume, - gfc_match_omp_assumes, gfc_resolve_omp_assumptions): New. + gfc_match_omp_assumes, gfc_resolve_omp_assumptions): New. (resolve_omp_clauses): Call the latter. (gfc_resolve_omp_directive, omp_code_to_statement): Handle EXEC_OMP_ASSUME. diff --git a/gcc/fortran/arith.cc b/gcc/fortran/arith.cc index fc9224eb..c0d12cf 100644 --- a/gcc/fortran/arith.cc +++ b/gcc/fortran/arith.cc @@ -845,6 +845,13 @@ arith_power (gfc_expr *op1, gfc_expr *op2, gfc_expr **resultp) if (!gfc_numeric_ts (&op1->ts) || !gfc_numeric_ts (&op2->ts)) return ARITH_INVALID_TYPE; + /* The result type is derived from op1 and must be compatible with the + result of the simplification. Otherwise postpone simplification until + after operand conversions usually done by gfc_type_convert_binary. */ + if ((op1->ts.type == BT_INTEGER && op2->ts.type != BT_INTEGER) + || (op1->ts.type == BT_REAL && op2->ts.type == BT_COMPLEX)) + return ARITH_NOT_REDUCED; + rc = ARITH_OK; result = gfc_get_constant_expr (op1->ts.type, op1->ts.kind, &op1->where); @@ -1335,8 +1342,16 @@ reduce_unary (arith (*eval) (gfc_expr *, gfc_expr **), gfc_expr *op, else { gfc_constructor *c = gfc_constructor_first (head); - r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind, - &op->where); + if (c == NULL) + { + /* Handle zero-sized arrays. */ + r = gfc_get_array_expr (op->ts.type, op->ts.kind, &op->where); + } + else + { + r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind, + &op->where); + } r->shape = gfc_copy_shape (op->shape, op->rank); r->rank = op->rank; r->value.constructor = head; @@ -1494,8 +1509,16 @@ reduce_binary_aa (arith (*eval) (gfc_expr *, gfc_expr *, gfc_expr **), else { gfc_constructor *c = gfc_constructor_first (head); - r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind, - &op1->where); + if (c == NULL) + { + /* Handle zero-sized arrays. */ + r = gfc_get_array_expr (op1->ts.type, op1->ts.kind, &op1->where); + } + else + { + r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind, + &op1->where); + } r->shape = gfc_copy_shape (op1->shape, op1->rank); r->rank = op1->rank; r->value.constructor = head; diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index bbdb5b3..10d9e0c 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -489,7 +489,20 @@ match_array_element_spec (gfc_array_spec *as) } if (gfc_match_char (':') == MATCH_YES) - return AS_DEFERRED; + { + locus old_loc = gfc_current_locus; + if (gfc_match_char ('*') == MATCH_YES) + { + /* F2018:R821: "assumed-implied-spec is [ lower-bound : ] *". */ + gfc_error ("A lower bound must precede colon in " + "assumed-size array specification at %L", &old_loc); + return AS_UNKNOWN; + } + else + { + return AS_DEFERRED; + } + } m = gfc_match_expr (upper); if (m == MATCH_NO) @@ -591,6 +604,8 @@ gfc_match_array_spec (gfc_array_spec **asp, bool match_dim, bool match_codim) { as->rank++; current_type = match_array_element_spec (as); + if (current_type == AS_UNKNOWN) + goto cleanup; /* Note that current_type == AS_ASSUMED_SIZE for both assumed-size and implied-shape specifications. If the rank is at least 2, we can @@ -600,8 +615,6 @@ gfc_match_array_spec (gfc_array_spec **asp, bool match_dim, bool match_codim) if (as->rank == 1) { - if (current_type == AS_UNKNOWN) - goto cleanup; as->type = current_type; } else diff --git a/gcc/fortran/cpp.cc b/gcc/fortran/cpp.cc index 364bd0d..0b5755e 100644 --- a/gcc/fortran/cpp.cc +++ b/gcc/fortran/cpp.cc @@ -605,7 +605,7 @@ gfc_cpp_init (void) if (gfc_option.flag_preprocessed) return; - cpp_change_file (cpp_in, LC_RENAME, _("<built-in>")); + cpp_change_file (cpp_in, LC_RENAME, special_fname_builtin ()); if (!gfc_cpp_option.no_predefined) { /* Make sure all of the builtins about to be declared have diff --git a/gcc/fortran/dump-parse-tree.cc b/gcc/fortran/dump-parse-tree.cc index 2f042ab..5ae72dc 100644 --- a/gcc/fortran/dump-parse-tree.cc +++ b/gcc/fortran/dump-parse-tree.cc @@ -1357,6 +1357,29 @@ show_omp_namelist (int list_type, gfc_omp_namelist *n) } ns_iter = n->u2.ns; } + if (list_type == OMP_LIST_ALLOCATE) + { + if (n->expr) + { + fputs ("allocator(", dumpfile); + show_expr (n->expr); + fputc (')', dumpfile); + } + if (n->expr && n->u.align) + fputc (',', dumpfile); + if (n->u.align) + { + fputs ("allocator(", dumpfile); + show_expr (n->u.align); + fputc (')', dumpfile); + } + if (n->expr || n->u.align) + fputc (':', dumpfile); + fputs (n->sym->name, dumpfile); + if (n->next) + fputs (") ALLOCATE(", dumpfile); + continue; + } if (list_type == OMP_LIST_REDUCTION) switch (n->u.reduction_op) { diff --git a/gcc/fortran/error.cc b/gcc/fortran/error.cc index c9d6edb..214fb78 100644 --- a/gcc/fortran/error.cc +++ b/gcc/fortran/error.cc @@ -1147,7 +1147,7 @@ gfc_diagnostic_build_locus_prefix (diagnostic_context *context, const char *locus_ce = colorize_stop (pp_show_color (pp)); return (s.file == NULL ? build_message_string ("%s%s:%s", locus_cs, progname, locus_ce ) - : !strcmp (s.file, N_("<built-in>")) + : !strcmp (s.file, special_fname_builtin ()) ? build_message_string ("%s%s:%s", locus_cs, s.file, locus_ce) : context->show_column ? build_message_string ("%s%s:%d:%d:%s", locus_cs, s.file, s.line, @@ -1167,7 +1167,7 @@ gfc_diagnostic_build_locus_prefix (diagnostic_context *context, return (s.file == NULL ? build_message_string ("%s%s:%s", locus_cs, progname, locus_ce ) - : !strcmp (s.file, N_("<built-in>")) + : !strcmp (s.file, special_fname_builtin ()) ? build_message_string ("%s%s:%s", locus_cs, s.file, locus_ce) : context->show_column ? build_message_string ("%s%s:%d:%d-%d:%s", locus_cs, s.file, s.line, diff --git a/gcc/fortran/f95-lang.cc b/gcc/fortran/f95-lang.cc index a6750be..0d83f3f 100644 --- a/gcc/fortran/f95-lang.cc +++ b/gcc/fortran/f95-lang.cc @@ -259,7 +259,7 @@ gfc_init (void) if (!gfc_cpp_enabled ()) { linemap_add (line_table, LC_ENTER, false, gfc_source_file, 1); - linemap_add (line_table, LC_RENAME, false, "<built-in>", 0); + linemap_add (line_table, LC_RENAME, false, special_fname_builtin (), 0); } else gfc_cpp_init_0 (); diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 6bd8800..5f8a81a 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1349,6 +1349,7 @@ typedef struct gfc_omp_namelist gfc_omp_reduction_op reduction_op; gfc_omp_depend_doacross_op depend_doacross_op; gfc_omp_map_op map_op; + gfc_expr *align; struct { ENUM_BITFIELD (gfc_omp_linear_op) op:4; @@ -3207,7 +3208,6 @@ int gfc_at_eof (void); int gfc_at_bol (void); int gfc_at_eol (void); void gfc_advance_line (void); -int gfc_check_include (void); int gfc_define_undef_line (void); int gfc_wide_is_printable (gfc_char_t); @@ -3573,7 +3573,7 @@ void gfc_free_iterator (gfc_iterator *, int); void gfc_free_forall_iterator (gfc_forall_iterator *); void gfc_free_alloc_list (gfc_alloc *); void gfc_free_namelist (gfc_namelist *); -void gfc_free_omp_namelist (gfc_omp_namelist *, bool); +void gfc_free_omp_namelist (gfc_omp_namelist *, bool, bool); void gfc_free_equiv (gfc_equiv *); void gfc_free_equiv_until (gfc_equiv *, gfc_equiv *); void gfc_free_data (gfc_data *); diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 4b4ecd5..60fac2e 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -3763,8 +3763,7 @@ is used for dummy arguments; with @code{VALUE}, those variables are passed by value. For @code{OPTIONAL} dummy arguments, an absent argument is denoted -by a NULL pointer, except for scalar dummy arguments of type -@code{INTEGER}, @code{LOGICAL}, @code{REAL} and @code{COMPLEX} +by a NULL pointer, except for scalar dummy arguments of intrinsic type which have the @code{VALUE} attribute. For those, a hidden Boolean argument (@code{logical(kind=C_bool),value}) is used to indicate whether the argument is present. diff --git a/gcc/fortran/interface.cc b/gcc/fortran/interface.cc index d3e1995..7d8eeda 100644 --- a/gcc/fortran/interface.cc +++ b/gcc/fortran/interface.cc @@ -1334,6 +1334,12 @@ gfc_check_dummy_characteristics (gfc_symbol *s1, gfc_symbol *s2, if (s1 == NULL || s2 == NULL) return s1 == s2 ? true : false; + if (s1->attr.proc == PROC_ST_FUNCTION || s2->attr.proc == PROC_ST_FUNCTION) + { + strncpy (errmsg, "Statement function", err_len); + return false; + } + /* Check type and rank. */ if (type_must_agree) { @@ -3273,9 +3279,11 @@ gfc_compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, if (a->expr->ts.type == BT_CHARACTER && a->expr->ts.u.cl && a->expr->ts.u.cl->length && a->expr->ts.u.cl->length->expr_type == EXPR_CONSTANT + && a->expr->ts.u.cl->length->ts.type == BT_INTEGER && f->sym->ts.type == BT_CHARACTER && f->sym->ts.u.cl && f->sym->ts.u.cl->length && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT + && f->sym->ts.u.cl->length->ts.type == BT_INTEGER && (f->sym->attr.pointer || f->sym->attr.allocatable || (f->sym->as && f->sym->as->type == AS_ASSUMED_SHAPE)) && (mpz_cmp (a->expr->ts.u.cl->length->value.integer, @@ -3477,25 +3485,39 @@ gfc_compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, goto match; } - if (a->expr->expr_type != EXPR_NULL - && compare_pointer (f->sym, a->expr) == 0) + if (a->expr->expr_type != EXPR_NULL) { - if (where) - gfc_error ("Actual argument for %qs must be a pointer at %L", - f->sym->name, &a->expr->where); - ok = false; - goto match; - } + int cmp = compare_pointer (f->sym, a->expr); + bool pre2008 = ((gfc_option.allow_std & GFC_STD_F2008) == 0); - if (a->expr->expr_type != EXPR_NULL - && (gfc_option.allow_std & GFC_STD_F2008) == 0 - && compare_pointer (f->sym, a->expr) == 2) - { - if (where) - gfc_error ("Fortran 2008: Non-pointer actual argument at %L to " - "pointer dummy %qs", &a->expr->where,f->sym->name); - ok = false; - goto match; + if (pre2008 && cmp == 0) + { + if (where) + gfc_error ("Actual argument for %qs at %L must be a pointer", + f->sym->name, &a->expr->where); + ok = false; + goto match; + } + + if (pre2008 && cmp == 2) + { + if (where) + gfc_error ("Fortran 2008: Non-pointer actual argument at %L to " + "pointer dummy %qs", &a->expr->where, f->sym->name); + ok = false; + goto match; + } + + if (!pre2008 && cmp == 0) + { + if (where) + gfc_error ("Actual argument for %qs at %L must be a pointer " + "or a valid target for the dummy pointer in a " + "pointer assignment statement", + f->sym->name, &a->expr->where); + ok = false; + goto match; + } } @@ -4146,6 +4168,14 @@ gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where) return false; } + if (a->expr && a->expr->expr_type == EXPR_NULL) + { + gfc_error ("Passing intrinsic NULL as actual argument at %L " + "requires an explicit interface", &a->expr->where); + a->expr->error = 1; + return false; + } + /* TS 29113, C407b. */ if (a->expr && a->expr->expr_type == EXPR_VARIABLE && symbol_rank (a->expr->symtree->n.sym) == -1) diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 55f53fc..7af1ca3 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -553,7 +553,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{I} @tab The type shall be @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -920,7 +920,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{A} @tab The type of the argument shall be @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -1202,7 +1202,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{A} @tab The type of the argument shall be @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -3406,7 +3406,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{A} @tab The type shall be @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -3452,7 +3452,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{I} @tab The type shall be @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -3636,7 +3636,7 @@ Elemental function or @code{COMPLEX}. @item @var{Y} @tab (Optional; only allowed if @var{X} is not @code{COMPLEX}.) May be @code{INTEGER} or @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -4527,7 +4527,7 @@ Transformational function @multitable @columnfractions .15 .70 @item @var{MASK} @tab The type shall be @code{LOGICAL}. @item @var{DIM} @tab (Optional) The type shall be @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -6186,7 +6186,7 @@ conformance with @var{ARRAY}. inclusive. It may not be an optional dummy argument. @item @var{MASK} @tab (Optional) Shall be of type @code{LOGICAL}, and conformable with @var{ARRAY}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}. @end multitable @@ -6215,7 +6215,7 @@ is of default kind. @table @asis @item @emph{Description}: -@code{FLOOR(A)} returns the greatest integer less than or equal to @var{X}. +@code{FLOOR(A)} returns the greatest integer less than or equal to @var{A}. @item @emph{Standard}: Fortran 95 and later @@ -6229,7 +6229,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{A} @tab The type shall be @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -7550,7 +7550,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{C} @tab Shall be a scalar @code{CHARACTER}, with @code{INTENT(IN)} -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -8007,7 +8007,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{C} @tab Shall be a scalar @code{CHARACTER}, with @code{INTENT(IN)} -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -8279,7 +8279,7 @@ Elemental function @code{INTENT(IN)} @item @var{BACK} @tab (Optional) Shall be a scalar @code{LOGICAL}, with @code{INTENT(IN)} -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -8324,7 +8324,7 @@ Elemental function @multitable @columnfractions .15 .70 @item @var{A} @tab Shall be of type @code{INTEGER}, @code{REAL}, or @code{COMPLEX} or a boz-literal-constant. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -9109,7 +9109,7 @@ Inquiry function @multitable @columnfractions .15 .70 @item @var{ARRAY} @tab Shall be an array, of any type. @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -9152,7 +9152,7 @@ Inquiry function @multitable @columnfractions .15 .70 @item @var{ARRAY} @tab Shall be an coarray, of any type. @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -9239,7 +9239,7 @@ Inquiry function @multitable @columnfractions .15 .70 @item @var{STRING} @tab Shall be a scalar or array of type @code{CHARACTER}, with @code{INTENT(IN)} -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -9285,7 +9285,7 @@ Elemental function @multitable @columnfractions .15 .70 @item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER}, with @code{INTENT(IN)} -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -9823,7 +9823,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{L} @tab The type shall be @code{LOGICAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -10312,7 +10312,7 @@ Transformational function inclusive. It may not be an optional dummy argument. @item @var{MASK} @tab Shall be of type @code{LOGICAL}, and conformable with @var{ARRAY}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}. @end multitable @@ -10679,7 +10679,7 @@ Transformational function inclusive. It may not be an optional dummy argument. @item @var{MASK} @tab Shall be of type @code{LOGICAL}, and conformable with @var{ARRAY}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}. @end multitable @@ -11111,7 +11111,7 @@ Elemental function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{A} @tab The type of the argument shall be @code{REAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -12216,7 +12216,7 @@ Elemental function @multitable @columnfractions .15 .70 @item @var{A} @tab Shall be @code{INTEGER}, @code{REAL}, or @code{COMPLEX}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -12594,7 +12594,7 @@ Elemental function @item @var{STRING} @tab Shall be of type @code{CHARACTER}. @item @var{SET} @tab Shall be of type @code{CHARACTER}. @item @var{BACK} @tab (Optional) shall be of type @code{LOGICAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -12956,7 +12956,7 @@ Inquiry function @item @var{SOURCE} @tab Shall be an array or scalar of any type. If @var{SOURCE} is a pointer it must be associated and allocatable arrays must be allocated. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -13417,7 +13417,7 @@ a pointer it must be associated and allocatable arrays must be allocated. @item @var{DIM} @tab (Optional) shall be a scalar of type @code{INTEGER} and its value shall be in the range from 1 to n, where n equals the rank of @var{ARRAY}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -14680,8 +14680,8 @@ Inquiry function @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{ARRAY} @tab Shall be an array, of any type. -@item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}. -@item @var{KIND}@tab (Optional) An @code{INTEGER} initialization +@item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}. +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -14725,7 +14725,7 @@ Inquiry function @multitable @columnfractions .15 .70 @item @var{ARRAY} @tab Shall be an coarray, of any type. @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable @@ -14900,7 +14900,7 @@ Elemental function @item @var{STRING} @tab Shall be of type @code{CHARACTER}. @item @var{SET} @tab Shall be of type @code{CHARACTER}. @item @var{BACK} @tab (Optional) shall be of type @code{LOGICAL}. -@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +@item @var{KIND} @tab (Optional) A scalar @code{INTEGER} constant expression indicating the kind parameter of the result. @end multitable diff --git a/gcc/fortran/io.cc b/gcc/fortran/io.cc index 902aa19..b898fd3 100644 --- a/gcc/fortran/io.cc +++ b/gcc/fortran/io.cc @@ -2513,7 +2513,7 @@ check_open_constraints (gfc_open *open, locus *where) spec = ""; } - warn_or_error (G_("%s specifier at %L not allowed in OPEN statement for " + warn_or_error (G_("%sspecifier at %L not allowed in OPEN statement for " "unformatted I/O"), spec, loc); } diff --git a/gcc/fortran/match.cc b/gcc/fortran/match.cc index 8b8b6e7..89fb115 100644 --- a/gcc/fortran/match.cc +++ b/gcc/fortran/match.cc @@ -193,7 +193,7 @@ gfc_match_member_sep(gfc_symbol *sym) if (gfc_match_name (name) != MATCH_YES) { gfc_error ("Expected structure component or operator name " - "after '.' at %C"); + "after %<.%> at %C"); goto error; } @@ -5524,13 +5524,15 @@ gfc_free_namelist (gfc_namelist *name) /* Free an OpenMP namelist structure. */ void -gfc_free_omp_namelist (gfc_omp_namelist *name, bool free_ns) +gfc_free_omp_namelist (gfc_omp_namelist *name, bool free_ns, bool free_align) { gfc_omp_namelist *n; for (; name; name = n) { gfc_free_expr (name->expr); + if (free_align) + gfc_free_expr (name->u.align); if (free_ns) gfc_free_namespace (name->u2.ns); else if (name->u2.udr) diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc index 653c43f..686f924 100644 --- a/gcc/fortran/openmp.cc +++ b/gcc/fortran/openmp.cc @@ -187,7 +187,8 @@ gfc_free_omp_clauses (gfc_omp_clauses *c) gfc_free_expr (c->vector_length_expr); for (i = 0; i < OMP_LIST_NUM; i++) gfc_free_omp_namelist (c->lists[i], - i == OMP_LIST_AFFINITY || i == OMP_LIST_DEPEND); + i == OMP_LIST_AFFINITY || i == OMP_LIST_DEPEND, + i == OMP_LIST_ALLOCATE); gfc_free_expr_list (c->wait_list); gfc_free_expr_list (c->tile_list); free (CONST_CAST (char *, c->critical_name)); @@ -542,7 +543,7 @@ syntax: gfc_error ("Syntax error in OpenMP variable list at %C"); cleanup: - gfc_free_omp_namelist (head, false); + gfc_free_omp_namelist (head, false, false); gfc_current_locus = old_loc; return MATCH_ERROR; } @@ -632,7 +633,7 @@ syntax: gfc_error ("Syntax error in OpenMP variable list at %C"); cleanup: - gfc_free_omp_namelist (head, false); + gfc_free_omp_namelist (head, false, false); gfc_current_locus = old_loc; return MATCH_ERROR; } @@ -741,7 +742,7 @@ syntax: gfc_error ("Syntax error in OpenMP SINK dependence-type list at %C"); cleanup: - gfc_free_omp_namelist (head, false); + gfc_free_omp_namelist (head, false, false); gfc_current_locus = old_loc; return MATCH_ERROR; } @@ -1467,7 +1468,7 @@ gfc_match_omp_clause_reduction (char pc, gfc_omp_clauses *c, bool openacc, *head = NULL; gfc_error_now ("!$OMP DECLARE REDUCTION %s not found at %L", buffer, &old_loc); - gfc_free_omp_namelist (n, false); + gfc_free_omp_namelist (n, false, false); } else for (n = *head; n; n = n->next) @@ -1785,7 +1786,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, if (end_colon && gfc_match (" %e )", &alignment) != MATCH_YES) { - gfc_free_omp_namelist (*head, false); + gfc_free_omp_namelist (*head, false, false); gfc_current_locus = old_loc; *head = NULL; break; @@ -1853,17 +1854,33 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, && gfc_match ("allocate ( ") == MATCH_YES) { gfc_expr *allocator = NULL; + gfc_expr *align = NULL; old_loc = gfc_current_locus; - m = gfc_match_expr (&allocator); - if (m == MATCH_YES && gfc_match (" : ") != MATCH_YES) + if ((m = gfc_match ("allocator ( %e )", &allocator)) == MATCH_YES) + gfc_match (" , align ( %e )", &align); + else if ((m = gfc_match ("align ( %e )", &align)) == MATCH_YES) + gfc_match (" , allocator ( %e )", &allocator); + + if (m == MATCH_YES) { - /* If no ":" then there is no allocator, we backtrack - and read the variable list. */ - gfc_free_expr (allocator); - allocator = NULL; - gfc_current_locus = old_loc; + if (gfc_match (" : ") != MATCH_YES) + { + gfc_error ("Expected %<:%> at %C"); + goto error; + } + } + else + { + m = gfc_match_expr (&allocator); + if (m == MATCH_YES && gfc_match (" : ") != MATCH_YES) + { + /* If no ":" then there is no allocator, we backtrack + and read the variable list. */ + gfc_free_expr (allocator); + allocator = NULL; + gfc_current_locus = old_loc; + } } - gfc_omp_namelist **head = NULL; m = gfc_match_omp_variable_list ("", &c->lists[OMP_LIST_ALLOCATE], true, NULL, &head); @@ -1871,16 +1888,18 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, if (m != MATCH_YES) { gfc_free_expr (allocator); + gfc_free_expr (align); gfc_error ("Expected variable list at %C"); goto error; } for (gfc_omp_namelist *n = *head; n; n = n->next) - if (allocator) - n->expr = gfc_copy_expr (allocator); - else - n->expr = NULL; + { + n->expr = (allocator) ? gfc_copy_expr (allocator) : NULL; + n->u.align = (align) ? gfc_copy_expr (align) : NULL; + } gfc_free_expr (allocator); + gfc_free_expr (align); continue; } if ((mask & OMP_CLAUSE_AT) @@ -2499,9 +2518,10 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, true) == MATCH_YES) continue; if ((mask & OMP_CLAUSE_FROM) - && gfc_match_omp_variable_list ("from (", + && (gfc_match_omp_variable_list ("from (", &c->lists[OMP_LIST_FROM], false, - NULL, &head, true) == MATCH_YES) + NULL, &head, true, true) + == MATCH_YES)) continue; break; case 'g': @@ -2708,7 +2728,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, end_colon = true; else if (gfc_match (" )") != MATCH_YES) { - gfc_free_omp_namelist (*head, false); + gfc_free_omp_namelist (*head, false, false); gfc_current_locus = old_loc; *head = NULL; break; @@ -2719,7 +2739,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, { if (gfc_match (" %e )", &step) != MATCH_YES) { - gfc_free_omp_namelist (*head, false); + gfc_free_omp_namelist (*head, false, false); gfc_current_locus = old_loc; *head = NULL; goto error; @@ -2816,7 +2836,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, } if (has_error) { - gfc_free_omp_namelist (*head, false); + gfc_free_omp_namelist (*head, false, false); *head = NULL; goto error; } @@ -3436,9 +3456,10 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, continue; } else if ((mask & OMP_CLAUSE_TO) - && gfc_match_omp_variable_list ("to (", + && (gfc_match_omp_variable_list ("to (", &c->lists[OMP_LIST_TO], false, - NULL, &head, true) == MATCH_YES) + NULL, &head, true, true) + == MATCH_YES)) continue; break; case 'u': @@ -4038,7 +4059,7 @@ gfc_match_oacc_routine (void) if (gfc_match_char (')') != MATCH_YES) { gfc_error ("Syntax error in !$ACC ROUTINE ( NAME ) at %C, expecting" - " ')' after NAME"); + " %<)%> after NAME"); gfc_current_locus = old_loc; return MATCH_ERROR; } @@ -4171,17 +4192,19 @@ cleanup: (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE \ | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_REDUCTION \ | OMP_CLAUSE_SCHEDULE | OMP_CLAUSE_ORDERED | OMP_CLAUSE_COLLAPSE \ - | OMP_CLAUSE_LINEAR | OMP_CLAUSE_ORDER | OMP_CLAUSE_ALLOCATE) + | OMP_CLAUSE_LINEAR | OMP_CLAUSE_ORDER | OMP_CLAUSE_ALLOCATE \ + | OMP_CLAUSE_NOWAIT) #define OMP_LOOP_CLAUSES \ (omp_mask (OMP_CLAUSE_BIND) | OMP_CLAUSE_COLLAPSE | OMP_CLAUSE_ORDER \ | OMP_CLAUSE_PRIVATE | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_REDUCTION) #define OMP_SCOPE_CLAUSES \ (omp_mask (OMP_CLAUSE_PRIVATE) |OMP_CLAUSE_FIRSTPRIVATE \ - | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_ALLOCATE) + | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_ALLOCATE | OMP_CLAUSE_NOWAIT) #define OMP_SECTIONS_CLAUSES \ (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE \ - | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_ALLOCATE) + | OMP_CLAUSE_LASTPRIVATE | OMP_CLAUSE_REDUCTION \ + | OMP_CLAUSE_ALLOCATE | OMP_CLAUSE_NOWAIT) #define OMP_SIMD_CLAUSES \ (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_LASTPRIVATE \ | OMP_CLAUSE_REDUCTION | OMP_CLAUSE_COLLAPSE | OMP_CLAUSE_SAFELEN \ @@ -4231,7 +4254,7 @@ cleanup: | OMP_CLAUSE_ORDER | OMP_CLAUSE_ALLOCATE) #define OMP_SINGLE_CLAUSES \ (omp_mask (OMP_CLAUSE_PRIVATE) | OMP_CLAUSE_FIRSTPRIVATE \ - | OMP_CLAUSE_ALLOCATE) + | OMP_CLAUSE_ALLOCATE | OMP_CLAUSE_NOWAIT | OMP_CLAUSE_COPYPRIVATE) #define OMP_ORDERED_CLAUSES \ (omp_mask (OMP_CLAUSE_THREADS) | OMP_CLAUSE_SIMD) #define OMP_DECLARE_TARGET_CLAUSES \ @@ -4245,7 +4268,8 @@ cleanup: (omp_mask (OMP_CLAUSE_FILTER)) #define OMP_ERROR_CLAUSES \ (omp_mask (OMP_CLAUSE_AT) | OMP_CLAUSE_MESSAGE | OMP_CLAUSE_SEVERITY) - +#define OMP_WORKSHARE_CLAUSES \ + omp_mask (OMP_CLAUSE_NOWAIT) static match @@ -4456,8 +4480,8 @@ gfc_match_omp_distribute_parallel_do (void) return match_omp (EXEC_OMP_DISTRIBUTE_PARALLEL_DO, (OMP_DISTRIBUTE_CLAUSES | OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES) - & ~(omp_mask (OMP_CLAUSE_ORDERED)) - & ~(omp_mask (OMP_CLAUSE_LINEAR))); + & ~(omp_mask (OMP_CLAUSE_ORDERED) + | OMP_CLAUSE_LINEAR | OMP_CLAUSE_NOWAIT)); } @@ -4467,7 +4491,7 @@ gfc_match_omp_distribute_parallel_do_simd (void) return match_omp (EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD, (OMP_DISTRIBUTE_CLAUSES | OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES | OMP_SIMD_CLAUSES) - & ~(omp_mask (OMP_CLAUSE_ORDERED))); + & ~(omp_mask (OMP_CLAUSE_ORDERED) | OMP_CLAUSE_NOWAIT)); } @@ -4622,14 +4646,14 @@ gfc_match_omp_flush (void) { gfc_error ("List specified together with memory order clause in FLUSH " "directive at %C"); - gfc_free_omp_namelist (list, false); + gfc_free_omp_namelist (list, false, false); gfc_free_omp_clauses (c); return MATCH_ERROR; } if (gfc_match_omp_eos () != MATCH_YES) { gfc_error ("Unexpected junk after $OMP FLUSH statement at %C"); - gfc_free_omp_namelist (list, false); + gfc_free_omp_namelist (list, false, false); gfc_free_omp_clauses (c); return MATCH_ERROR; } @@ -5324,8 +5348,8 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) } else { - gfc_error ("selector '%s' not allowed for context selector " - "set '%s' at %C", + gfc_error ("selector %qs not allowed for context selector " + "set %qs at %C", selector, oss->trait_set_selector_name); return MATCH_ERROR; } @@ -5344,7 +5368,7 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) { if (property_kind == CTX_PROPERTY_NONE) { - gfc_error ("selector '%s' does not accept any properties at %C", + gfc_error ("selector %qs does not accept any properties at %C", selector); return MATCH_ERROR; } @@ -5353,7 +5377,7 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) { if (gfc_match (" (") != MATCH_YES) { - gfc_error ("expected '(' at %C"); + gfc_error ("expected %<(%> at %C"); return MATCH_ERROR; } if (gfc_match_expr (&os->score) != MATCH_YES @@ -5375,7 +5399,7 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) if (gfc_match (" )") != MATCH_YES) { - gfc_error ("expected ')' at %C"); + gfc_error ("expected %<)%> at %C"); return MATCH_ERROR; } @@ -5488,7 +5512,7 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) if (gfc_match (" )") != MATCH_YES) { - gfc_error ("expected ')' at %C"); + gfc_error ("expected %<)%> at %C"); return MATCH_ERROR; } } @@ -5498,7 +5522,7 @@ gfc_match_omp_context_selector (gfc_omp_set_selector *oss) { if (gfc_match (" (") != MATCH_YES) { - gfc_error ("expected '(' at %C"); + gfc_error ("expected %<(%> at %C"); return MATCH_ERROR; } } @@ -5544,22 +5568,22 @@ gfc_match_omp_context_selector_specification (gfc_omp_declare_variant *odv) if (m != MATCH_YES || i == selector_set_count) { - gfc_error ("expected 'construct', 'device', 'implementation' or " - "'user' at %C"); + gfc_error ("expected %<construct%>, %<device%>, %<implementation%> " + "or %<user%> at %C"); return MATCH_ERROR; } m = gfc_match (" ="); if (m != MATCH_YES) { - gfc_error ("expected '=' at %C"); + gfc_error ("expected %<=%> at %C"); return MATCH_ERROR; } m = gfc_match (" {"); if (m != MATCH_YES) { - gfc_error ("expected '{' at %C"); + gfc_error ("expected %<{%> at %C"); return MATCH_ERROR; } @@ -5574,7 +5598,7 @@ gfc_match_omp_context_selector_specification (gfc_omp_declare_variant *odv) m = gfc_match (" }"); if (m != MATCH_YES) { - gfc_error ("expected '}' at %C"); + gfc_error ("expected %<}%> at %C"); return MATCH_ERROR; } @@ -5596,7 +5620,7 @@ gfc_match_omp_declare_variant (void) if (gfc_match (" (") != MATCH_YES) { - gfc_error ("expected '(' at %C"); + gfc_error ("expected %<(%> at %C"); return MATCH_ERROR; } @@ -5644,7 +5668,7 @@ gfc_match_omp_declare_variant (void) if (gfc_match (" )") != MATCH_YES) { - gfc_error ("expected ')' at %C"); + gfc_error ("expected %<)%> at %C"); return MATCH_ERROR; } @@ -5654,7 +5678,7 @@ gfc_match_omp_declare_variant (void) { if (first_p) { - gfc_error ("expected 'match' at %C"); + gfc_error ("expected %<match%> at %C"); return MATCH_ERROR; } else @@ -5663,7 +5687,7 @@ gfc_match_omp_declare_variant (void) if (gfc_match (" (") != MATCH_YES) { - gfc_error ("expected '(' at %C"); + gfc_error ("expected %<(%> at %C"); return MATCH_ERROR; } @@ -5672,7 +5696,7 @@ gfc_match_omp_declare_variant (void) if (gfc_match (" )") != MATCH_YES) { - gfc_error ("expected ')' at %C"); + gfc_error ("expected %<)%> at %C"); return MATCH_ERROR; } @@ -5768,7 +5792,8 @@ match gfc_match_omp_parallel_do (void) { return match_omp (EXEC_OMP_PARALLEL_DO, - OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES); + (OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES) + & ~(omp_mask (OMP_CLAUSE_NOWAIT))); } @@ -5776,7 +5801,8 @@ match gfc_match_omp_parallel_do_simd (void) { return match_omp (EXEC_OMP_PARALLEL_DO_SIMD, - OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES | OMP_SIMD_CLAUSES); + (OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES | OMP_SIMD_CLAUSES) + & ~(omp_mask (OMP_CLAUSE_NOWAIT))); } @@ -5832,7 +5858,8 @@ match gfc_match_omp_parallel_sections (void) { return match_omp (EXEC_OMP_PARALLEL_SECTIONS, - OMP_PARALLEL_CLAUSES | OMP_SECTIONS_CLAUSES); + (OMP_PARALLEL_CLAUSES | OMP_SECTIONS_CLAUSES) + & ~(omp_mask (OMP_CLAUSE_NOWAIT))); } @@ -6318,8 +6345,8 @@ gfc_match_omp_teams_distribute_parallel_do (void) return match_omp (EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO, (OMP_TEAMS_CLAUSES | OMP_DISTRIBUTE_CLAUSES | OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES) - & ~(omp_mask (OMP_CLAUSE_ORDERED)) - & ~(omp_mask (OMP_CLAUSE_LINEAR))); + & ~(omp_mask (OMP_CLAUSE_ORDERED) + | OMP_CLAUSE_LINEAR | OMP_CLAUSE_NOWAIT)); } @@ -6329,7 +6356,8 @@ gfc_match_omp_teams_distribute_parallel_do_simd (void) return match_omp (EXEC_OMP_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD, (OMP_TEAMS_CLAUSES | OMP_DISTRIBUTE_CLAUSES | OMP_PARALLEL_CLAUSES | OMP_DO_CLAUSES - | OMP_SIMD_CLAUSES) & ~(omp_mask (OMP_CLAUSE_ORDERED))); + | OMP_SIMD_CLAUSES) + & ~(omp_mask (OMP_CLAUSE_ORDERED) | OMP_CLAUSE_NOWAIT)); } @@ -6345,14 +6373,7 @@ gfc_match_omp_teams_distribute_simd (void) match gfc_match_omp_workshare (void) { - if (gfc_match_omp_eos () != MATCH_YES) - { - gfc_error ("Unexpected junk after $OMP WORKSHARE statement at %C"); - return MATCH_ERROR; - } - new_st.op = EXEC_OMP_WORKSHARE; - new_st.ext.omp_clauses = gfc_get_omp_clauses (); - return MATCH_YES; + return match_omp (EXEC_OMP_WORKSHARE, OMP_WORKSHARE_CLAUSES); } @@ -6656,14 +6677,8 @@ match gfc_match_omp_end_single (void) { gfc_omp_clauses *c; - if (gfc_match ("% nowait") == MATCH_YES) - { - new_st.op = EXEC_OMP_END_NOWAIT; - new_st.ext.omp_bool = true; - return MATCH_YES; - } - if (gfc_match_omp_clauses (&c, omp_mask (OMP_CLAUSE_COPYPRIVATE)) - != MATCH_YES) + if (gfc_match_omp_clauses (&c, omp_mask (OMP_CLAUSE_COPYPRIVATE) + | OMP_CLAUSE_NOWAIT) != MATCH_YES) return MATCH_ERROR; new_st.op = EXEC_OMP_END_SINGLE; new_st.ext.omp_clauses = c; @@ -7283,19 +7298,36 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, if (omp_clauses->lists[OMP_LIST_ALLOCATE]) { for (n = omp_clauses->lists[OMP_LIST_ALLOCATE]; n; n = n->next) - if (n->expr && (n->expr->ts.type != BT_INTEGER - || n->expr->ts.kind != gfc_c_intptr_kind)) - { - gfc_error ("Expected integer expression of the " - "'omp_allocator_handle_kind' kind at %L", - &n->expr->where); - break; - } + { + if (n->expr && (!gfc_resolve_expr (n->expr) + || n->expr->ts.type != BT_INTEGER + || n->expr->ts.kind != gfc_c_intptr_kind)) + { + gfc_error ("Expected integer expression of the " + "%<omp_allocator_handle_kind%> kind at %L", + &n->expr->where); + break; + } + if (!n->u.align) + continue; + int alignment = 0; + if (!gfc_resolve_expr (n->u.align) + || n->u.align->ts.type != BT_INTEGER + || n->u.align->rank != 0 + || gfc_extract_int (n->u.align, &alignment) + || alignment <= 0) + { + gfc_error ("ALIGN modifier requires a scalar positive " + "constant integer alignment expression at %L", + &n->u.align->where); + break; + } + } /* Check for 2 things here. - 1. There is no duplication of variable in allocate clause. - 2. Variable in allocate clause are also present in some - privatization clase (non-composite case). */ + 1. There is no duplication of variable in allocate clause. + 2. Variable in allocate clause are also present in some + privatization clase (non-composite case). */ for (n = omp_clauses->lists[OMP_LIST_ALLOCATE]; n; n = n->next) n->sym->mark = 0; @@ -7312,7 +7344,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, { prev->next = n->next; n->next = NULL; - gfc_free_omp_namelist (n, 0); + gfc_free_omp_namelist (n, false, true); n = prev->next; } continue; @@ -7346,7 +7378,7 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, for (n = omp_clauses->lists[OMP_LIST_ALLOCATE]; n; n = n->next) if (n->sym->mark == 1) - gfc_error ("%qs specified in 'allocate' clause at %L but not " + gfc_error ("%qs specified in %<allocate%> clause at %L but not " "in an explicit privatization clause", n->sym->name, &n->where); } @@ -7404,6 +7436,9 @@ resolve_omp_clauses (gfc_code *code, gfc_omp_clauses *omp_clauses, } break; case OMP_LIST_COPYPRIVATE: + if (omp_clauses->nowait) + gfc_error ("NOWAIT clause must not be used with COPYPRIVATE " + "clause at %L", &n->where); for (; n != NULL; n = n->next) { if (n->sym->as && n->sym->as->type == AS_ASSUMED_SIZE) diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc index f04fd13..cdae43f 100644 --- a/gcc/fortran/parse.cc +++ b/gcc/fortran/parse.cc @@ -942,7 +942,8 @@ decode_omp_directive (void) matchs ("end ordered", gfc_match_omp_eos_error, ST_OMP_END_ORDERED); matchs ("end parallel do simd", gfc_match_omp_eos_error, ST_OMP_END_PARALLEL_DO_SIMD); - matcho ("end parallel do", gfc_match_omp_eos_error, ST_OMP_END_PARALLEL_DO); + matcho ("end parallel do", gfc_match_omp_eos_error, + ST_OMP_END_PARALLEL_DO); matcho ("end parallel loop", gfc_match_omp_eos_error, ST_OMP_END_PARALLEL_LOOP); matcho ("end parallel masked taskloop simd", gfc_match_omp_eos_error, @@ -5305,7 +5306,13 @@ parse_omp_do (gfc_statement omp_st) if (st == omp_end_st) { if (new_st.op == EXEC_OMP_END_NOWAIT) - cp->ext.omp_clauses->nowait |= new_st.ext.omp_bool; + { + if (cp->ext.omp_clauses->nowait && new_st.ext.omp_bool) + gfc_error_now ("Duplicated NOWAIT clause on %s and %s at %C", + gfc_ascii_statement (omp_st), + gfc_ascii_statement (omp_end_st)); + cp->ext.omp_clauses->nowait |= new_st.ext.omp_bool; + } else gcc_assert (new_st.op == EXEC_NOP); gfc_clear_new_st (); @@ -5745,6 +5752,10 @@ parse_omp_structured_block (gfc_statement omp_st, bool workshare_stmts_only) switch (new_st.op) { case EXEC_OMP_END_NOWAIT: + if (cp->ext.omp_clauses->nowait && new_st.ext.omp_bool) + gfc_error_now ("Duplicated NOWAIT clause on %s and %s at %C", + gfc_ascii_statement (omp_st), + gfc_ascii_statement (omp_end_st)); cp->ext.omp_clauses->nowait |= new_st.ext.omp_bool; break; case EXEC_OMP_END_CRITICAL: @@ -5759,8 +5770,22 @@ parse_omp_structured_block (gfc_statement omp_st, bool workshare_stmts_only) new_st.ext.omp_name = NULL; break; case EXEC_OMP_END_SINGLE: - cp->ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE] - = new_st.ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE]; + if (cp->ext.omp_clauses->nowait && new_st.ext.omp_clauses->nowait) + gfc_error_now ("Duplicated NOWAIT clause on %s and %s at %C", + gfc_ascii_statement (omp_st), + gfc_ascii_statement (omp_end_st)); + cp->ext.omp_clauses->nowait |= new_st.ext.omp_clauses->nowait; + if (cp->ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE]) + { + gfc_omp_namelist *nl; + for (nl = cp->ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE]; + nl->next; nl = nl->next) + ; + nl->next = new_st.ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE]; + } + else + cp->ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE] + = new_st.ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE]; new_st.ext.omp_clauses->lists[OMP_LIST_COPYPRIVATE] = NULL; gfc_free_omp_clauses (new_st.ext.omp_clauses); break; diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc index 19f2e78..21a8eb7 100644 --- a/gcc/fortran/primary.cc +++ b/gcc/fortran/primary.cc @@ -586,7 +586,7 @@ match_real_constant (gfc_expr **result, int signflag) if (c == 'q') { - if (!gfc_notify_std (GFC_STD_GNU, "exponent-letter 'q' in " + if (!gfc_notify_std (GFC_STD_GNU, "exponent-letter %<q%> in " "real-literal-constant at %C")) return MATCH_ERROR; else if (warn_real_q_constant) @@ -2070,8 +2070,8 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, || (sym->ts.type == BT_CLASS && CLASS_DATA (sym) && CLASS_DATA (sym)->attr.dimension)) { - gfc_error ("Array section designator, e.g. '(:)', is required " - "besides the coarray designator '[...]' at %C"); + gfc_error ("Array section designator, e.g. %<(:)%>, is required " + "besides the coarray designator %<[...]%> at %C"); return MATCH_ERROR; } if ((sym->ts.type != BT_CLASS && !sym->attr.codimension) diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 9202e2f..0f5f1d2 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -514,7 +514,7 @@ gfc_resolve_formal_arglist (gfc_symbol *proc) { /* F03:C1263 (R1238) The function-name and each dummy-arg-name shall be specified, explicitly or implicitly, to be scalar. */ - gfc_error ("Argument '%s' of statement function '%s' at %L " + gfc_error ("Argument %qs of statement function %qs at %L " "must be scalar", sym->name, proc->name, &proc->declared_at); continue; @@ -4381,8 +4381,8 @@ resolve_operator (gfc_expr *e) guessed = lookup_uop_fuzzy (name, e->value.op.uop->ns->uop_root); if (guessed) snprintf (msg, sizeof (msg), - _("Unknown operator %%<%s%%> at %%L; did you mean '%s'?"), - name, guessed); + _("Unknown operator %%<%s%%> at %%L; did you mean " + "%%<%s%%>?"), name, guessed); else snprintf (msg, sizeof (msg), _("Unknown operator %%<%s%%> at %%L"), name); @@ -5005,8 +5005,9 @@ find_array_spec (gfc_expr *e) case REF_ARRAY: if (as == NULL) { + locus loc = ref->u.ar.where.lb ? ref->u.ar.where : e->where; gfc_error ("Invalid array reference of a non-array entity at %L", - &ref->u.ar.where); + &loc); return false; } @@ -7535,7 +7536,8 @@ derived_inaccessible (gfc_symbol *sym) for (c = sym->components; c; c = c->next) { /* Prevent an infinite loop through this function. */ - if (c->ts.type == BT_DERIVED && c->attr.pointer + if (c->ts.type == BT_DERIVED + && (c->attr.pointer || c->attr.allocatable) && sym == c->ts.u.derived) continue; @@ -7569,7 +7571,7 @@ resolve_deallocate_expr (gfc_expr *e) sym = e->symtree->n.sym; unlimited = UNLIMITED_POLY(sym); - if (sym->ts.type == BT_CLASS) + if (sym->ts.type == BT_CLASS && sym->attr.class_ok && CLASS_DATA (sym)) { allocatable = CLASS_DATA (sym)->attr.allocatable; pointer = CLASS_DATA (sym)->attr.class_pointer; @@ -8211,7 +8213,7 @@ check_symbols: { if (i == (ar->dimen + ar->codimen - 1)) { - gfc_error ("Expected '*' in coindex specification in ALLOCATE " + gfc_error ("Expected %<*%> in coindex specification in ALLOCATE " "statement at %L", &e->where); goto failure; } @@ -11185,7 +11187,7 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) { gfc_error ("Nonallocatable variable must not be polymorphic in intrinsic " "assignment at %L - check that there is a matching specific " - "subroutine for '=' operator", &lhs->where); + "subroutine for %<=%> operator", &lhs->where); return false; } @@ -12967,6 +12969,7 @@ resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag) && sym->ts.u.derived && !sym->attr.select_type_temporary && !UNLIMITED_POLY (sym) + && CLASS_DATA (sym)->ts.u.derived && !gfc_type_is_extensible (CLASS_DATA (sym)->ts.u.derived)) { gfc_error ("Type %qs of CLASS variable %qs at %L is not extensible", @@ -17218,6 +17221,7 @@ resolve_equivalence (gfc_equiv *eq) "statement at %L with different type objects"; if ((object ==2 && last_eq_type == SEQ_MIXED + && last_where && !gfc_notify_std (GFC_STD_GNU, msg, first_sym->name, last_where)) || (eq_type == SEQ_MIXED && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where))) @@ -17227,6 +17231,7 @@ resolve_equivalence (gfc_equiv *eq) "statement at %L with objects of different type"; if ((object ==2 && last_eq_type == SEQ_NONDEFAULT + && last_where && !gfc_notify_std (GFC_STD_GNU, msg, first_sym->name, last_where)) || (eq_type == SEQ_NONDEFAULT && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where))) diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index 9c2fea8..3d3aaba 100644 --- a/gcc/fortran/simplify.cc +++ b/gcc/fortran/simplify.cc @@ -3955,6 +3955,9 @@ gfc_simplify_ishftc (gfc_expr *e, gfc_expr *s, gfc_expr *sz) return NULL; gfc_extract_int (sz, &ssize); + + if (ssize > isize || ssize <= 0) + return &gfc_bad_expr; } else ssize = isize; @@ -4913,7 +4916,22 @@ gfc_simplify_merge (gfc_expr *tsource, gfc_expr *fsource, gfc_expr *mask) if (mask->expr_type == EXPR_CONSTANT) { - result = gfc_copy_expr (mask->value.logical ? tsource : fsource); + /* The standard requires evaluation of all function arguments. + Simplify only when the other dropped argument (FSOURCE or TSOURCE) + is a constant expression. */ + if (mask->value.logical) + { + if (!gfc_is_constant_expr (fsource)) + return NULL; + result = gfc_copy_expr (tsource); + } + else + { + if (!gfc_is_constant_expr (tsource)) + return NULL; + result = gfc_copy_expr (fsource); + } + /* Parenthesis is needed to get lower bounds of 1. */ result = gfc_get_parentheses (result); gfc_simplify_expr (result, 1); @@ -8470,7 +8488,16 @@ gfc_simplify_unpack (gfc_expr *vector, gfc_expr *mask, gfc_expr *field) } } else if (field->expr_type == EXPR_ARRAY) - e = gfc_copy_expr (field_ctor->expr); + { + if (field_ctor) + e = gfc_copy_expr (field_ctor->expr); + else + { + /* Not enough elements in array FIELD. */ + gfc_free_expr (result); + return &gfc_bad_expr; + } + } else e = gfc_copy_expr (field); diff --git a/gcc/fortran/st.cc b/gcc/fortran/st.cc index 3c8ca66..8b4ca5e 100644 --- a/gcc/fortran/st.cc +++ b/gcc/fortran/st.cc @@ -286,7 +286,7 @@ gfc_free_statement (gfc_code *p) break; case EXEC_OMP_FLUSH: - gfc_free_omp_namelist (p->ext.omp_namelist, false); + gfc_free_omp_namelist (p->ext.omp_namelist, false, false); break; case EXEC_OMP_BARRIER: diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index 49fb378..e704e7a 100644 --- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -1108,6 +1108,12 @@ gfc_add_contiguous (symbol_attribute *attr, const char *name, locus *where) if (check_used (attr, name, where)) return false; + if (attr->contiguous) + { + duplicate_attr ("CONTIGUOUS", where); + return false; + } + attr->contiguous = 1; return gfc_check_conflict (attr, name, where); } diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 514cb05..b7d4c41 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -10527,7 +10527,6 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, tree offset; tree jump_label1; tree jump_label2; - tree neq_size; tree lbd; tree class_expr2 = NULL_TREE; int n; @@ -10607,6 +10606,11 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, elemsize1 = expr1->ts.u.cl->backend_decl; else elemsize1 = lss->info->string_length; + tree unit_size = TYPE_SIZE_UNIT (gfc_get_char_type (expr1->ts.kind)); + elemsize1 = fold_build2_loc (input_location, MULT_EXPR, + TREE_TYPE (elemsize1), elemsize1, + fold_convert (TREE_TYPE (elemsize1), unit_size)); + } else if (expr1->ts.type == BT_CLASS) { @@ -10699,19 +10703,7 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, /* Allocate if data is NULL. */ cond_null = fold_build2_loc (input_location, EQ_EXPR, logical_type_node, array1, build_int_cst (TREE_TYPE (array1), 0)); - - if (expr1->ts.type == BT_CHARACTER && expr1->ts.deferred) - { - tmp = fold_build2_loc (input_location, NE_EXPR, - logical_type_node, - lss->info->string_length, - rss->info->string_length); - cond_null = fold_build2_loc (input_location, TRUTH_OR_EXPR, - logical_type_node, tmp, cond_null); - cond_null= gfc_evaluate_now (cond_null, &fblock); - } - else - cond_null= gfc_evaluate_now (cond_null, &fblock); + cond_null= gfc_evaluate_now (cond_null, &fblock); tmp = build3_v (COND_EXPR, cond_null, build1_v (GOTO_EXPR, jump_label1), @@ -10778,19 +10770,6 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, tmp = build1_v (LABEL_EXPR, jump_label1); gfc_add_expr_to_block (&fblock, tmp); - /* If the lhs has not been allocated, its bounds will not have been - initialized and so its size is set to zero. */ - size1 = gfc_create_var (gfc_array_index_type, NULL); - gfc_init_block (&alloc_block); - gfc_add_modify (&alloc_block, size1, gfc_index_zero_node); - gfc_init_block (&realloc_block); - gfc_add_modify (&realloc_block, size1, - gfc_conv_descriptor_size (desc, expr1->rank)); - tmp = build3_v (COND_EXPR, cond_null, - gfc_finish_block (&alloc_block), - gfc_finish_block (&realloc_block)); - gfc_add_expr_to_block (&fblock, tmp); - /* Get the rhs size and fix it. */ size2 = gfc_index_one_node; for (n = 0; n < expr2->rank; n++) @@ -10807,16 +10786,6 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, } size2 = gfc_evaluate_now (size2, &fblock); - cond = fold_build2_loc (input_location, NE_EXPR, logical_type_node, - size1, size2); - - /* If the lhs is deferred length, assume that the element size - changes and force a reallocation. */ - if (expr1->ts.deferred) - neq_size = gfc_evaluate_now (logical_true_node, &fblock); - else - neq_size = gfc_evaluate_now (cond, &fblock); - /* Deallocation of allocatable components will have to occur on reallocation. Fix the old descriptor now. */ if ((expr1->ts.type == BT_DERIVED) @@ -11048,20 +11017,6 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, gfc_add_block_to_block (&realloc_block, &caf_se.post); realloc_expr = gfc_finish_block (&realloc_block); - /* Reallocate if sizes or dynamic types are different. */ - if (elemsize1) - { - tmp = fold_build2_loc (input_location, NE_EXPR, logical_type_node, - elemsize1, elemsize2); - tmp = gfc_evaluate_now (tmp, &fblock); - neq_size = fold_build2_loc (input_location, TRUTH_OR_EXPR, - logical_type_node, neq_size, tmp); - } - tmp = build3_v (COND_EXPR, neq_size, realloc_expr, - build_empty_stmt (input_location)); - - realloc_expr = tmp; - /* Malloc expression. */ gfc_init_block (&alloc_block); if (!coarray) diff --git a/gcc/fortran/trans-decl.cc b/gcc/fortran/trans-decl.cc index 63515b9..217de6b 100644 --- a/gcc/fortran/trans-decl.cc +++ b/gcc/fortran/trans-decl.cc @@ -2507,8 +2507,8 @@ create_function_arglist (gfc_symbol * sym) { tree fndecl; gfc_formal_arglist *f; - tree typelist, hidden_typelist; - tree arglist, hidden_arglist; + tree typelist, hidden_typelist, optval_typelist; + tree arglist, hidden_arglist, optval_arglist; tree type; tree parm; @@ -2518,6 +2518,7 @@ create_function_arglist (gfc_symbol * sym) the new FUNCTION_DECL node. */ arglist = NULL_TREE; hidden_arglist = NULL_TREE; + optval_arglist = NULL_TREE; typelist = TYPE_ARG_TYPES (TREE_TYPE (fndecl)); if (sym->attr.entry_master) @@ -2619,6 +2620,15 @@ create_function_arglist (gfc_symbol * sym) if (f->sym != NULL) /* Ignore alternate returns. */ hidden_typelist = TREE_CHAIN (hidden_typelist); + /* Advance hidden_typelist over optional+value argument presence flags. */ + optval_typelist = hidden_typelist; + for (f = gfc_sym_get_dummy_args (sym); f; f = f->next) + if (f->sym != NULL + && f->sym->attr.optional && f->sym->attr.value + && !f->sym->attr.dimension && f->sym->ts.type != BT_CLASS + && !gfc_bt_struct (f->sym->ts.type)) + hidden_typelist = TREE_CHAIN (hidden_typelist); + for (f = gfc_sym_get_dummy_args (sym); f; f = f->next) { char name[GFC_MAX_SYMBOL_LEN + 2]; @@ -2698,28 +2708,30 @@ create_function_arglist (gfc_symbol * sym) type = gfc_sym_type (f->sym); } } - /* For noncharacter scalar intrinsic types, VALUE passes the value, + /* For scalar intrinsic types, VALUE passes the value, hence, the optional status cannot be transferred via a NULL pointer. Thus, we will use a hidden argument in that case. */ - else if (f->sym->attr.optional && f->sym->attr.value - && !f->sym->attr.dimension && f->sym->ts.type != BT_CLASS - && !gfc_bt_struct (f->sym->ts.type)) + if (f->sym->attr.optional && f->sym->attr.value + && !f->sym->attr.dimension && f->sym->ts.type != BT_CLASS + && !gfc_bt_struct (f->sym->ts.type)) { tree tmp; strcpy (&name[1], f->sym->name); - name[0] = '_'; + name[0] = '.'; tmp = build_decl (input_location, PARM_DECL, get_identifier (name), boolean_type_node); - hidden_arglist = chainon (hidden_arglist, tmp); + optval_arglist = chainon (optval_arglist, tmp); DECL_CONTEXT (tmp) = fndecl; DECL_ARTIFICIAL (tmp) = 1; DECL_ARG_TYPE (tmp) = boolean_type_node; TREE_READONLY (tmp) = 1; gfc_finish_decl (tmp); - hidden_typelist = TREE_CHAIN (hidden_typelist); + /* The presence flag must be boolean. */ + gcc_assert (TREE_VALUE (optval_typelist) == boolean_type_node); + optval_typelist = TREE_CHAIN (optval_typelist); } /* For non-constant length array arguments, make sure they use @@ -2863,6 +2875,9 @@ create_function_arglist (gfc_symbol * sym) typelist = TREE_CHAIN (typelist); } + /* Add hidden present status for optional+value arguments. */ + arglist = chainon (arglist, optval_arglist); + /* Add the hidden string length parameters, unless the procedure is bind(C). */ if (!sym->attr.is_bind_c) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index e7b9211..b95c5cf 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -1985,15 +1985,14 @@ gfc_conv_expr_present (gfc_symbol * sym, bool use_saved_desc) /* Intrinsic scalars with VALUE attribute which are passed by value use a hidden argument to denote the present status. */ - if (sym->attr.value && sym->ts.type != BT_CHARACTER - && sym->ts.type != BT_CLASS && sym->ts.type != BT_DERIVED - && !sym->attr.dimension) + if (sym->attr.value && !sym->attr.dimension + && sym->ts.type != BT_CLASS && !gfc_bt_struct (sym->ts.type)) { char name[GFC_MAX_SYMBOL_LEN + 2]; tree tree_name; gcc_assert (TREE_CODE (decl) == PARM_DECL); - name[0] = '_'; + name[0] = '.'; strcpy (&name[1], sym->name); tree_name = get_identifier (name); @@ -6162,11 +6161,21 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym, value, pass "0" and a hidden argument gives the optional status. */ if (fsym && fsym->attr.optional && fsym->attr.value - && !fsym->attr.dimension && fsym->ts.type != BT_CHARACTER - && fsym->ts.type != BT_CLASS && fsym->ts.type != BT_DERIVED) + && !fsym->attr.dimension && fsym->ts.type != BT_CLASS + && !gfc_bt_struct (sym->ts.type)) { - parmse.expr = fold_convert (gfc_sym_type (fsym), - integer_zero_node); + if (fsym->ts.type == BT_CHARACTER) + { + /* Pass a NULL pointer for an absent CHARACTER arg + and a length of zero. */ + parmse.expr = null_pointer_node; + parmse.string_length + = build_int_cst (gfc_charlen_type_node, + 0); + } + else + parmse.expr = fold_convert (gfc_sym_type (fsym), + integer_zero_node); vec_safe_push (optionalargs, boolean_false_node); } else @@ -11236,10 +11245,10 @@ alloc_scalar_allocatable_for_assignment (stmtblock_t *block, if (expr1->ts.type == BT_CHARACTER && expr1->ts.deferred) { - /* Use the rhs string length and the lhs element size. */ + /* Use the rhs string length and the lhs element size. Note that 'size' is + used below for the string-length comparison, only. */ size = string_length; - tmp = TREE_TYPE (gfc_typenode_for_spec (&expr1->ts)); - tmp = TYPE_SIZE_UNIT (tmp); + tmp = TYPE_SIZE_UNIT (gfc_get_char_type (expr1->ts.kind)); size_in_bytes = fold_build2_loc (input_location, MULT_EXPR, TREE_TYPE (tmp), tmp, fold_convert (TREE_TYPE (tmp), size)); diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc index bb93802..9342698 100644 --- a/gcc/fortran/trans-intrinsic.cc +++ b/gcc/fortran/trans-intrinsic.cc @@ -7557,6 +7557,9 @@ gfc_conv_intrinsic_merge (gfc_se * se, gfc_expr * expr) &se->pre); se->string_length = len; } + tsource = gfc_evaluate_now (tsource, &se->pre); + fsource = gfc_evaluate_now (fsource, &se->pre); + mask = gfc_evaluate_now (mask, &se->pre); type = TREE_TYPE (tsource); se->expr = fold_build3_loc (input_location, COND_EXPR, type, mask, tsource, fold_convert (type, fsource)); diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc index 9bd4e6c..7a4a339 100644 --- a/gcc/fortran/trans-openmp.cc +++ b/gcc/fortran/trans-openmp.cc @@ -123,7 +123,7 @@ gfc_omp_check_optional_argument (tree decl, bool for_present_check) char name[GFC_MAX_SYMBOL_LEN + 2]; tree tree_name; - name[0] = '_'; + name[0] = '.'; strcpy (&name[1], IDENTIFIER_POINTER (DECL_NAME (decl))); tree_name = get_identifier (name); @@ -2724,6 +2724,14 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, allocator_ = gfc_evaluate_now (se.expr, block); OMP_CLAUSE_ALLOCATE_ALLOCATOR (node) = allocator_; } + if (n->u.align) + { + tree align_; + gfc_init_se (&se, NULL); + gfc_conv_expr (&se, n->u.align); + align_ = gfc_evaluate_now (se.expr, block); + OMP_CLAUSE_ALLOCATE_ALIGN (node) = align_; + } omp_clauses = gfc_trans_add_clause (node, omp_clauses); } } @@ -3626,7 +3634,10 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, gcc_unreachable (); } tree node = build_omp_clause (input_location, clause_code); - if (n->expr == NULL || n->expr->ref->u.ar.type == AR_FULL) + if (n->expr == NULL + || (n->expr->ref->type == REF_ARRAY + && n->expr->ref->u.ar.type == AR_FULL + && n->expr->ref->next == NULL)) { tree decl = gfc_trans_omp_variable (n->sym, false); if (gfc_omp_privatize_by_reference (decl)) @@ -3666,13 +3677,13 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, { tree ptr; gfc_init_se (&se, NULL); - if (n->expr->ref->u.ar.type == AR_ELEMENT) + if (n->expr->rank == 0) { gfc_conv_expr_reference (&se, n->expr); ptr = se.expr; gfc_add_block_to_block (block, &se.pre); OMP_CLAUSE_SIZE (node) - = TYPE_SIZE_UNIT (TREE_TYPE (ptr)); + = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ptr))); } else { diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc index fd6d294..b288f1f 100644 --- a/gcc/fortran/trans-stmt.cc +++ b/gcc/fortran/trans-stmt.cc @@ -264,6 +264,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, if (e->expr_type == EXPR_VARIABLE && e->rank && fsym && fsym->attr.intent != INTENT_IN + && !fsym->attr.value && gfc_check_fncall_dependency (e, fsym->attr.intent, sym, arg0, check_variable)) { diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index def7552..196f2ce 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -3105,6 +3105,7 @@ gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args, { tree type; vec<tree, va_gc> *typelist = NULL; + vec<tree, va_gc> *hidden_typelist = NULL; gfc_formal_arglist *f; gfc_symbol *arg; int alternate_return = 0; @@ -3222,17 +3223,17 @@ gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args, so that the value can be returned. */ type = build_pointer_type (gfc_charlen_type_node); - vec_safe_push (typelist, type); + vec_safe_push (hidden_typelist, type); } - /* For noncharacter scalar intrinsic types, VALUE passes the value, + /* For scalar intrinsic types, VALUE passes the value, hence, the optional status cannot be transferred via a NULL pointer. Thus, we will use a hidden argument in that case. */ - else if (arg - && arg->attr.optional - && arg->attr.value - && !arg->attr.dimension - && arg->ts.type != BT_CLASS - && !gfc_bt_struct (arg->ts.type)) + if (arg + && arg->attr.optional + && arg->attr.value + && !arg->attr.dimension + && arg->ts.type != BT_CLASS + && !gfc_bt_struct (arg->ts.type)) vec_safe_push (typelist, boolean_type_node); /* Coarrays which are descriptorless or assumed-shape pass with -fcoarray=lib the token and the offset as hidden arguments. */ @@ -3245,11 +3246,15 @@ gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args, && CLASS_DATA (arg)->attr.codimension && !CLASS_DATA (arg)->attr.allocatable))) { - vec_safe_push (typelist, pvoid_type_node); /* caf_token. */ - vec_safe_push (typelist, gfc_array_index_type); /* caf_offset. */ + vec_safe_push (hidden_typelist, pvoid_type_node); /* caf_token. */ + vec_safe_push (hidden_typelist, gfc_array_index_type); /* caf_offset. */ } } + /* Put hidden character length, caf_token, caf_offset at the end. */ + vec_safe_reserve (typelist, vec_safe_length (hidden_typelist)); + vec_safe_splice (typelist, hidden_typelist); + if (!vec_safe_is_empty (typelist) || sym->attr.is_main_program || sym->attr.if_source != IFSRC_UNKNOWN) |