summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-14 07:03:09 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-14 07:03:09 +0000
commitd329a134cd2455f54f873318532f14938116b8b6 (patch)
tree2e790b36b33b55ae6f7b6bdff6fbf559fce5df4f
parent9f9551c1ebf9d9421d8496c92d0f4a8c7b7571b5 (diff)
downloadgcc-d329a134cd2455f54f873318532f14938116b8b6.tar.gz
2011-03-14 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 170931 using svnmerge git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@170932 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.MELT4
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac2
-rw-r--r--gcc/ChangeLog95
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/attribs.c2
-rw-r--r--gcc/c-family/ChangeLog8
-rw-r--r--gcc/c-family/c-common.c11
-rw-r--r--gcc/cgraphunit.c2
-rw-r--r--gcc/config.gcc5
-rw-r--r--gcc/config/rs6000/freebsd.h9
-rw-r--r--gcc/config/rs6000/predicates.md10
-rw-r--r--gcc/config/rs6000/rs6000.c45
-rw-r--r--gcc/config/rs6000/rs6000.md20
-rw-r--r--gcc/config/rs6000/t-freebsd50
-rw-r--r--gcc/config/sparc/sparc.c2
-rw-r--r--gcc/cp/ChangeLog29
-rw-r--r--gcc/cp/call.c4
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/cp/init.c60
-rw-r--r--gcc/cp/parser.c8
-rw-r--r--gcc/cp/pt.c18
-rw-r--r--gcc/doc/invoke.texi25
-rw-r--r--gcc/fortran/ChangeLog23
-rw-r--r--gcc/fortran/intrinsic.texi17
-rw-r--r--gcc/fortran/module.c11
-rw-r--r--gcc/fortran/trans-expr.c4
-rw-r--r--gcc/fortran/trans-intrinsic.c2
-rw-r--r--gcc/graphite-clast-to-gimple.c37
-rw-r--r--gcc/graphite-clast-to-gimple.h7
-rw-r--r--gcc/graphite.c4
-rw-r--r--gcc/ipa-inline.c3
-rw-r--r--gcc/ipa.c4
-rw-r--r--gcc/testsuite/ChangeLog69
-rw-r--r--gcc/testsuite/g++.dg/conversion/cast3.C14
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/regress/array1.C16
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib40.C4
-rw-r--r--gcc/testsuite/g++.dg/inherit/virtual8.C48
-rw-r--r--gcc/testsuite/g++.dg/lto/20110311-1_0.C51
-rw-r--r--gcc/testsuite/g++.dg/parse/no-type-defn1.C5
-rw-r--r--gcc/testsuite/g++.dg/template/error45.C22
-rw-r--r--gcc/testsuite/gcc.dg/pr48067.c11
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47278-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr47278-2.c15
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48044.c7
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48063.c19
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48053-1.c30
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr48053-2.c38
-rw-r--r--gcc/testsuite/gfortran.dg/class_41.f0324
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f908
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f9022
-rw-r--r--gcc/tree-ssa-math-opts.c8
-rw-r--r--gcc/tree.c6
-rw-r--r--gcc/tree.h2
-rw-r--r--libgcc/ChangeLog5
-rw-r--r--libgcc/config.host3
-rw-r--r--libgfortran/ChangeLog124
-rw-r--r--libgfortran/generated/all_l1.c2
-rw-r--r--libgfortran/generated/all_l16.c2
-rw-r--r--libgfortran/generated/all_l2.c2
-rw-r--r--libgfortran/generated/all_l4.c2
-rw-r--r--libgfortran/generated/all_l8.c2
-rw-r--r--libgfortran/generated/any_l1.c2
-rw-r--r--libgfortran/generated/any_l16.c2
-rw-r--r--libgfortran/generated/any_l2.c2
-rw-r--r--libgfortran/generated/any_l4.c2
-rw-r--r--libgfortran/generated/any_l8.c2
-rw-r--r--libgfortran/generated/count_16_l.c2
-rw-r--r--libgfortran/generated/count_1_l.c2
-rw-r--r--libgfortran/generated/count_2_l.c2
-rw-r--r--libgfortran/generated/count_4_l.c2
-rw-r--r--libgfortran/generated/count_8_l.c2
-rw-r--r--libgfortran/generated/maxloc1_16_i1.c2
-rw-r--r--libgfortran/generated/maxloc1_16_i16.c2
-rw-r--r--libgfortran/generated/maxloc1_16_i2.c2
-rw-r--r--libgfortran/generated/maxloc1_16_i4.c2
-rw-r--r--libgfortran/generated/maxloc1_16_i8.c2
-rw-r--r--libgfortran/generated/maxloc1_16_r10.c2
-rw-r--r--libgfortran/generated/maxloc1_16_r16.c2
-rw-r--r--libgfortran/generated/maxloc1_16_r4.c2
-rw-r--r--libgfortran/generated/maxloc1_16_r8.c2
-rw-r--r--libgfortran/generated/maxloc1_4_i1.c2
-rw-r--r--libgfortran/generated/maxloc1_4_i16.c2
-rw-r--r--libgfortran/generated/maxloc1_4_i2.c2
-rw-r--r--libgfortran/generated/maxloc1_4_i4.c2
-rw-r--r--libgfortran/generated/maxloc1_4_i8.c2
-rw-r--r--libgfortran/generated/maxloc1_4_r10.c2
-rw-r--r--libgfortran/generated/maxloc1_4_r16.c2
-rw-r--r--libgfortran/generated/maxloc1_4_r4.c2
-rw-r--r--libgfortran/generated/maxloc1_4_r8.c2
-rw-r--r--libgfortran/generated/maxloc1_8_i1.c2
-rw-r--r--libgfortran/generated/maxloc1_8_i16.c2
-rw-r--r--libgfortran/generated/maxloc1_8_i2.c2
-rw-r--r--libgfortran/generated/maxloc1_8_i4.c2
-rw-r--r--libgfortran/generated/maxloc1_8_i8.c2
-rw-r--r--libgfortran/generated/maxloc1_8_r10.c2
-rw-r--r--libgfortran/generated/maxloc1_8_r16.c2
-rw-r--r--libgfortran/generated/maxloc1_8_r4.c2
-rw-r--r--libgfortran/generated/maxloc1_8_r8.c2
-rw-r--r--libgfortran/generated/maxval_i1.c2
-rw-r--r--libgfortran/generated/maxval_i16.c2
-rw-r--r--libgfortran/generated/maxval_i2.c2
-rw-r--r--libgfortran/generated/maxval_i4.c2
-rw-r--r--libgfortran/generated/maxval_i8.c2
-rw-r--r--libgfortran/generated/maxval_r10.c2
-rw-r--r--libgfortran/generated/maxval_r16.c2
-rw-r--r--libgfortran/generated/maxval_r4.c2
-rw-r--r--libgfortran/generated/maxval_r8.c2
-rw-r--r--libgfortran/generated/minloc1_16_i1.c2
-rw-r--r--libgfortran/generated/minloc1_16_i16.c2
-rw-r--r--libgfortran/generated/minloc1_16_i2.c2
-rw-r--r--libgfortran/generated/minloc1_16_i4.c2
-rw-r--r--libgfortran/generated/minloc1_16_i8.c2
-rw-r--r--libgfortran/generated/minloc1_16_r10.c2
-rw-r--r--libgfortran/generated/minloc1_16_r16.c2
-rw-r--r--libgfortran/generated/minloc1_16_r4.c2
-rw-r--r--libgfortran/generated/minloc1_16_r8.c2
-rw-r--r--libgfortran/generated/minloc1_4_i1.c2
-rw-r--r--libgfortran/generated/minloc1_4_i16.c2
-rw-r--r--libgfortran/generated/minloc1_4_i2.c2
-rw-r--r--libgfortran/generated/minloc1_4_i4.c2
-rw-r--r--libgfortran/generated/minloc1_4_i8.c2
-rw-r--r--libgfortran/generated/minloc1_4_r10.c2
-rw-r--r--libgfortran/generated/minloc1_4_r16.c2
-rw-r--r--libgfortran/generated/minloc1_4_r4.c2
-rw-r--r--libgfortran/generated/minloc1_4_r8.c2
-rw-r--r--libgfortran/generated/minloc1_8_i1.c2
-rw-r--r--libgfortran/generated/minloc1_8_i16.c2
-rw-r--r--libgfortran/generated/minloc1_8_i2.c2
-rw-r--r--libgfortran/generated/minloc1_8_i4.c2
-rw-r--r--libgfortran/generated/minloc1_8_i8.c2
-rw-r--r--libgfortran/generated/minloc1_8_r10.c2
-rw-r--r--libgfortran/generated/minloc1_8_r16.c2
-rw-r--r--libgfortran/generated/minloc1_8_r4.c2
-rw-r--r--libgfortran/generated/minloc1_8_r8.c2
-rw-r--r--libgfortran/generated/minval_i1.c2
-rw-r--r--libgfortran/generated/minval_i16.c2
-rw-r--r--libgfortran/generated/minval_i2.c2
-rw-r--r--libgfortran/generated/minval_i4.c2
-rw-r--r--libgfortran/generated/minval_i8.c2
-rw-r--r--libgfortran/generated/minval_r10.c2
-rw-r--r--libgfortran/generated/minval_r16.c2
-rw-r--r--libgfortran/generated/minval_r4.c2
-rw-r--r--libgfortran/generated/minval_r8.c2
-rw-r--r--libgfortran/generated/product_c10.c2
-rw-r--r--libgfortran/generated/product_c16.c2
-rw-r--r--libgfortran/generated/product_c4.c2
-rw-r--r--libgfortran/generated/product_c8.c2
-rw-r--r--libgfortran/generated/product_i1.c2
-rw-r--r--libgfortran/generated/product_i16.c2
-rw-r--r--libgfortran/generated/product_i2.c2
-rw-r--r--libgfortran/generated/product_i4.c2
-rw-r--r--libgfortran/generated/product_i8.c2
-rw-r--r--libgfortran/generated/product_r10.c2
-rw-r--r--libgfortran/generated/product_r16.c2
-rw-r--r--libgfortran/generated/product_r4.c2
-rw-r--r--libgfortran/generated/product_r8.c2
-rw-r--r--libgfortran/generated/sum_c10.c2
-rw-r--r--libgfortran/generated/sum_c16.c2
-rw-r--r--libgfortran/generated/sum_c4.c2
-rw-r--r--libgfortran/generated/sum_c8.c2
-rw-r--r--libgfortran/generated/sum_i1.c2
-rw-r--r--libgfortran/generated/sum_i16.c2
-rw-r--r--libgfortran/generated/sum_i2.c2
-rw-r--r--libgfortran/generated/sum_i4.c2
-rw-r--r--libgfortran/generated/sum_i8.c2
-rw-r--r--libgfortran/generated/sum_r10.c2
-rw-r--r--libgfortran/generated/sum_r16.c2
-rw-r--r--libgfortran/generated/sum_r4.c2
-rw-r--r--libgfortran/generated/sum_r8.c2
-rw-r--r--libgfortran/io/write_float.def2
-rw-r--r--libgfortran/m4/ifunction.m42
-rw-r--r--libgfortran/m4/ifunction_logical.m42
174 files changed, 1103 insertions, 220 deletions
diff --git a/ChangeLog b/ChangeLog
index 72d5ca7082c..ab6a900c51f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-03-13 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR lto/48086
+ * configure.ac: Disable LTO on darwin due to an assembler change in
+ Xcode 3.2.6/4.0 that limits the total number of sections/segments to
+ under 256.
+ * configure: Regenerate.
+
2011-03-11 Chen Liqin <liqin.gcc@gmail.com>
* MAINTAINERS: Update myself as score backend maintainer, update my e-mail address.
diff --git a/ChangeLog.MELT b/ChangeLog.MELT
index 68d6c323846..fb30beda122 100644
--- a/ChangeLog.MELT
+++ b/ChangeLog.MELT
@@ -1,4 +1,8 @@
+2011-03-14 Basile Starynkevitch <basile@starynkevitch.net>
+
+ MELT branch merged with trunk rev 170931 using svnmerge
+
2011-03-11 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 170865 using svnmerge
diff --git a/configure b/configure
index 4b0347c5842..b911f50b7a5 100755
--- a/configure
+++ b/configure
@@ -6207,7 +6207,7 @@ if test $target_elf = yes; then :
else
if test x"$default_enable_lto" = x"yes" ; then
case $target in
- *-apple-darwin* | *-cygwin* | *-mingw*) ;;
+ *-cygwin* | *-mingw*) ;;
# On other non-ELF platforms, LTO has yet to be validated.
*) enable_lto=no ;;
esac
diff --git a/configure.ac b/configure.ac
index ed64dcea404..c45cab829ef 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1744,7 +1744,7 @@ ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always.
build_lto_plugin=yes
],[if test x"$default_enable_lto" = x"yes" ; then
case $target in
- *-apple-darwin* | *-cygwin* | *-mingw*) ;;
+ *-cygwin* | *-mingw*) ;;
# On other non-ELF platforms, LTO has yet to be validated.
*) enable_lto=no ;;
esac
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 498e45c40a3..785ff831d0e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,98 @@
+2011-03-14 Andreas Tobler <andreast@fgznet.ch>
+
+ * config/rs6000/freebsd.h: (RELOCATABLE_NEEDS_FIXUP): Define in
+ terms of target_flags_explicit. Adjust copyright year.
+
+ * config.gcc: Add FreeBSD PowerPC soft-float libgcc bits.
+ * config/rs6000/t-freebsd: New file. Add override for
+ LIB2FUNCS_EXTRA.
+
+2011-03-13 Chris Demetriou <cgd@google.com>
+
+ * doc/invoke.texi (-fdiagnostics-show-option): Replace with...
+ (-fno-diagnostics-show-option): this, to reflect current default.
+ (-Werror=): Update text about -fno-diagnostics-show-option.
+
+2011-03-12 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR target/48053
+ * config/rs6000/predicates.md (easy_vector_constant_add_self,
+ easy_vector_constant_msb): Do not handle V2DImode and V2DFmode.
+ * config/rs6000/rs6000.c (const_vector_elt_as_int): Add assert that
+ mode is not V2DImode or V2DFmode.
+ (vspltis_constant): Do not handle V2DImode and V2DFmode.
+ (rs6000_expand_vector_init): Replace copy_to_reg with copy_to_mode_reg.
+ * config/rs6000/rs6000.md (movdi_internal32): Allow setting VSX
+ registers to 0.
+ (movdi_internal64): Likewise.
+
+2011-03-12 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR tree-optimization/47127
+ * graphite-clast-to-gimple.c (build_cloog_prog): Removed state
+ parameter.
+ (set_cloog_options): Same.
+ (scop_to_clast): Same.
+ (print_clast_stmt): Do not call cloog_state_malloc and
+ cloog_state_free.
+ (print_generated_program): Same.
+ (gloog): Same.
+ * graphite-clast-to-gimple.h (cloog_state): Declared.
+ (scop_to_clast): Adjust declaration.
+ * graphite.c (cloog_state): Defined here.
+ (graphite_initialize): Call cloog_state_malloc.
+ (graphite_finalize): Call cloog_state_free.
+
+2011-03-11 Jason Merrill <jason@redhat.com>
+
+ * attribs.c (lookup_attribute_spec): Take const_tree.
+ * tree.h: Adjust.
+
+2011-03-11 Joseph Myers <joseph@codesourcery.com>
+
+ * config/sparc/sparc.c (sparc_option_override): Use
+ PROCESSOR_NIAGARA2 not PROCESSOR_NIAGARA for "niagara2".
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48067
+ * tree-ssa-math-opts.c (convert_mult_to_fma): Verify the
+ multiplication result will be only used once on the target
+ stmt.
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ * doc/invoke.texi (max-inline-insns-single): Adjust default value.
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ PR lto/48073
+ * tree.c (find_decls_types_r): Do not walk types only reachable
+ from IDENTIFIER_NODEs.
+
+2011-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48044
+ * ipa.c (cgraph_remove_unreachable_nodes): Enqueue
+ all vnode->force_output nodes as needed.
+
+2011-03-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/48069
+ * tree.c (type_hash_eq): Use COMPLETE_TYPE_P, not
+ COMPLETE_OR_UNBOUND_ARRAY_TYPE_P.
+
+2011-03-11 Martin Jambor <mjambor@suse.cz>
+
+ * cgraphunit.c (verify_cgraph_node): Call cgraph_get_node instead of
+ cgraph_node.
+
+2011-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48063
+ * ipa-inline.c (cgraph_decide_inlining): Don't try to
+ inline functions called once if !tree_can_inline_p (node->callers).
+
2011-03-11 Chen Liqin <liqin.gcc@gmail.com>
* config.gcc (score-*-elf): Add extra_parts .., update tmake_file and
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index a60a9745032..fce29759d95 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20110311
+20110314
diff --git a/gcc/attribs.c b/gcc/attribs.c
index d8daa6f5ed6..fee149955d8 100644
--- a/gcc/attribs.c
+++ b/gcc/attribs.c
@@ -208,7 +208,7 @@ register_attribute (const struct attribute_spec *attr)
/* Return the spec for the attribute named NAME. */
const struct attribute_spec *
-lookup_attribute_spec (tree name)
+lookup_attribute_spec (const_tree name)
{
struct substring attr;
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 60fc08fa849..6b5fd91b0b6 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,11 @@
+2011-03-11 Jason Merrill <jason@redhat.com>
+
+ * c-common.c (attribute_takes_identifier_p): Add missing const.
+
+ PR c++/46803
+ * c-common.c (attribute_takes_identifier_p): Assume that an
+ unknown attribute takes an identifier.
+
2011-03-07 Nathan Froyd <froydnj@codesourcery.com>
PR c/47786
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index f0296612e51..4da9a2da0ca 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -5665,9 +5665,14 @@ c_init_attributes (void)
bool
attribute_takes_identifier_p (const_tree attr_id)
{
- if (is_attribute_p ("mode", attr_id)
- || is_attribute_p ("format", attr_id)
- || is_attribute_p ("cleanup", attr_id))
+ const struct attribute_spec *spec = lookup_attribute_spec (attr_id);
+ if (spec == NULL)
+ /* Unknown attribute that we'll end up ignoring, return true so we
+ don't complain about an identifier argument. */
+ return true;
+ else if (!strcmp ("mode", spec->name)
+ || !strcmp ("format", spec->name)
+ || !strcmp ("cleanup", spec->name))
return true;
else
return targetm.attribute_takes_identifier_p (attr_id);
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 049d1b9f7b6..e6a0ea65b26 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -551,7 +551,7 @@ verify_cgraph_node (struct cgraph_node *node)
error_found = true;
}
- if (!cgraph_node (node->decl))
+ if (!cgraph_get_node (node->decl))
{
error ("node not found in cgraph_hash");
error_found = true;
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 24289d7c578..58f67878d24 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2071,9 +2071,10 @@ powerpc64-*-darwin*)
tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
extra_headers=altivec.h
;;
-powerpc*-*-freebsd*)
+powerpc-*-freebsd*)
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
+ tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd"
+ tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
powerpc-*-netbsd*)
diff --git a/gcc/config/rs6000/freebsd.h b/gcc/config/rs6000/freebsd.h
index bd3045ea181..567263b2aef 100644
--- a/gcc/config/rs6000/freebsd.h
+++ b/gcc/config/rs6000/freebsd.h
@@ -1,5 +1,6 @@
/* Definitions for PowerPC running FreeBSD using the ELF format
- Copyright (C) 2001, 2003, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2007, 2009, 2010, 2011
+ Free Software Foundation, Inc.
Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
This file is part of GCC.
@@ -70,4 +71,10 @@
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
+/* We don't need to generate entries in .fixup, except when
+ -mrelocatable or -mrelocatable-lib is given. */
+#undef RELOCATABLE_NEEDS_FIXUP
+#define RELOCATABLE_NEEDS_FIXUP \
+ (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+
#define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 3839643af4a..1796bf58eed 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -371,7 +371,10 @@
(and (match_test "TARGET_ALTIVEC")
(match_test "easy_altivec_constant (op, mode)")))
{
- HOST_WIDE_INT val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
+ HOST_WIDE_INT val;
+ if (mode == V2DImode || mode == V2DFmode)
+ return 0;
+ val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
val = ((val & 0xff) ^ 0x80) - 0x80;
return EASY_VECTOR_15_ADD_SELF (val);
})
@@ -382,7 +385,10 @@
(and (match_test "TARGET_ALTIVEC")
(match_test "easy_altivec_constant (op, mode)")))
{
- HOST_WIDE_INT val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
+ HOST_WIDE_INT val;
+ if (mode == V2DImode || mode == V2DFmode)
+ return 0;
+ val = const_vector_elt_as_int (op, GET_MODE_NUNITS (mode) - 1);
return EASY_VECTOR_MSB (val, GET_MODE_INNER (mode));
})
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index b6d1a94caea..231651e0d46 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4855,7 +4855,13 @@ num_insns_constant (rtx op, enum machine_mode mode)
HOST_WIDE_INT
const_vector_elt_as_int (rtx op, unsigned int elt)
{
- rtx tmp = CONST_VECTOR_ELT (op, elt);
+ rtx tmp;
+
+ /* We can't handle V2DImode and V2DFmode vector constants here yet. */
+ gcc_assert (GET_MODE (op) != V2DImode
+ && GET_MODE (op) != V2DFmode);
+
+ tmp = CONST_VECTOR_ELT (op, elt);
if (GET_MODE (op) == V4SFmode
|| GET_MODE (op) == V2SFmode)
tmp = gen_lowpart (SImode, tmp);
@@ -4876,13 +4882,24 @@ vspltis_constant (rtx op, unsigned step, unsigned copies)
enum machine_mode inner = GET_MODE_INNER (mode);
unsigned i;
- unsigned nunits = GET_MODE_NUNITS (mode);
- unsigned bitsize = GET_MODE_BITSIZE (inner);
- unsigned mask = GET_MODE_MASK (inner);
+ unsigned nunits;
+ unsigned bitsize;
+ unsigned mask;
+
+ HOST_WIDE_INT val;
+ HOST_WIDE_INT splat_val;
+ HOST_WIDE_INT msb_val;
+
+ if (mode == V2DImode || mode == V2DFmode)
+ return false;
+
+ nunits = GET_MODE_NUNITS (mode);
+ bitsize = GET_MODE_BITSIZE (inner);
+ mask = GET_MODE_MASK (inner);
- HOST_WIDE_INT val = const_vector_elt_as_int (op, nunits - 1);
- HOST_WIDE_INT splat_val = val;
- HOST_WIDE_INT msb_val = val > 0 ? 0 : -1;
+ val = const_vector_elt_as_int (op, nunits - 1);
+ splat_val = val;
+ msb_val = val > 0 ? 0 : -1;
/* Construct the value to be splatted, if possible. If not, return 0. */
for (i = 2; i <= copies; i *= 2)
@@ -5314,12 +5331,18 @@ rs6000_expand_vector_init (rtx target, rtx vals)
}
else
{
- rtx op0 = copy_to_reg (XVECEXP (vals, 0, 0));
- rtx op1 = copy_to_reg (XVECEXP (vals, 0, 1));
if (mode == V2DFmode)
- emit_insn (gen_vsx_concat_v2df (target, op0, op1));
+ {
+ rtx op0 = copy_to_mode_reg (DFmode, XVECEXP (vals, 0, 0));
+ rtx op1 = copy_to_mode_reg (DFmode, XVECEXP (vals, 0, 1));
+ emit_insn (gen_vsx_concat_v2df (target, op0, op1));
+ }
else
- emit_insn (gen_vsx_concat_v2di (target, op0, op1));
+ {
+ rtx op0 = copy_to_mode_reg (DImode, XVECEXP (vals, 0, 0));
+ rtx op1 = copy_to_mode_reg (DImode, XVECEXP (vals, 0, 1));
+ emit_insn (gen_vsx_concat_v2di (target, op0, op1));
+ }
}
return;
}
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 38a5a50b8e5..4455d9a8319 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -10052,8 +10052,8 @@
; List r->r after r->"o<>", otherwise reload will try to reload a
; non-offsettable address by using r->r which won't make progress.
(define_insn "*movdi_internal32"
- [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=o<>,r,r,*d,*d,m,r")
- (match_operand:DI 1 "input_operand" "r,r,m,d,m,d,IJKnGHF"))]
+ [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=o<>,r,r,*d,*d,m,r,?wa")
+ (match_operand:DI 1 "input_operand" "r,r,m,d,m,d,IJKnGHF,O"))]
"! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
@@ -10064,8 +10064,9 @@
fmr %0,%1
lfd%U1%X1 %0,%1
stfd%U0%X0 %1,%0
- #"
- [(set_attr "type" "load,*,store,fp,fpload,fpstore,*")])
+ #
+ xxlxor %x0,%x0,%x0"
+ [(set_attr "type" "load,*,store,fp,fpload,fpstore,*,vecsimple")])
(define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "")
@@ -10122,8 +10123,8 @@
(set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4,4,4")])
(define_insn "*movdi_internal64"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,*d,*d,m,r,*h,*h")
- (match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,d,m,d,*h,r,0"))]
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,*d,*d,m,r,*h,*h,?wa")
+ (match_operand:DI 1 "input_operand" "r,m,r,I,L,nF,R,d,m,d,*h,r,0,O"))]
"TARGET_POWERPC64 && (!TARGET_MFPGPR || !TARGET_HARD_FLOAT || !TARGET_FPRS)
&& (gpc_reg_operand (operands[0], DImode)
|| gpc_reg_operand (operands[1], DImode))"
@@ -10140,9 +10141,10 @@
stfd%U0%X0 %1,%0
mf%1 %0
mt%0 %1
- {cror 0,0,0|nop}"
- [(set_attr "type" "*,load,store,*,*,*,*,fp,fpload,fpstore,mfjmpr,mtjmpr,*")
- (set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4")])
+ {cror 0,0,0|nop}
+ xxlxor %x0,%x0,%x0"
+ [(set_attr "type" "*,load,store,*,*,*,*,fp,fpload,fpstore,mfjmpr,mtjmpr,*,vecsimple")
+ (set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4,4")])
;; immediate value valid for a single instruction hiding in a const_double
(define_insn ""
diff --git a/gcc/config/rs6000/t-freebsd b/gcc/config/rs6000/t-freebsd
new file mode 100644
index 00000000000..8c5c2565615
--- /dev/null
+++ b/gcc/config/rs6000/t-freebsd
@@ -0,0 +1,50 @@
+# Overrides for FreeBSD PowerPC
+#
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# We do not want to build darwin-ldouble.c, so set the LIB2FUNCS_EXTRA again.
+# Invoke this file after rs6000/t-ppccomm.
+
+LIB2FUNCS_EXTRA = tramp.S
+
+# Overrides for FreeBSD PowerPC
+#
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# We do not want to build darwin-ldouble.c, so set the LIB2FUNCS_EXTRA again.
+# Invoke this file after rs6000/t-ppccomm.
+
+LIB2FUNCS_EXTRA = tramp.S
+
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 109aa1b27c3..0f137e8b68f 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -776,7 +776,7 @@ sparc_option_override (void)
{ "niagara", PROCESSOR_NIAGARA, MASK_ISA,
MASK_V9|MASK_DEPRECATED_V8_INSNS},
/* UltraSPARC T2 */
- { "niagara2", PROCESSOR_NIAGARA, MASK_ISA, MASK_V9},
+ { "niagara2", PROCESSOR_NIAGARA2, MASK_ISA, MASK_V9},
{ 0, (enum processor_type) 0, 0, 0 }
};
const struct cpu_table *cpu;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a4c394cbf35..bebb1fcee5d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,32 @@
+2011-03-11 Dodji Seketeli <dodji@redhat.com>
+
+ * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
+ the argument of the indirection operator should not be dependent.
+ Fix the comment.
+
+2011-03-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/47125
+ * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
+
+ PR c++/47144
+ * parser.c (cp_parser_template_type_arg): Set
+ type_definition_forbidden_message.
+
+ PR c++/47808
+ * decl.c (compute_array_index_type): Discard folding
+ if it didn't produce a constant.
+
+2011-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/48035
+ * init.c (build_zero_init_1): Extracted from build_zero_init.
+ Add FIELD_SIZE argument, if non-NULL and field bit_position
+ as not smaller than that, don't add that field's initializer.
+ Pass DECL_SIZE as last argument to build_zero_init_1
+ for DECL_FIELD_IS_BASE fields.
+ (build_zero_init): Use build_zero_init_1.
+
2011-03-10 Jason Merrill <jason@redhat.com>
PR c++/48029
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index a297f5313e3..5953e3524cc 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -2150,7 +2150,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
}
return;
-/* 7 For every cv-qualified or cv-unqualified complete object type T, there
+/* 7 For every cv-qualified or cv-unqualified object type T, there
exist candidate operator functions of the form
T& operator*(T*);
@@ -2161,7 +2161,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
case INDIRECT_REF:
if (TREE_CODE (type1) == POINTER_TYPE
- && is_complete (TREE_TYPE (type1))
+ && !uses_template_parms (TREE_TYPE (type1))
&& (TYPE_PTROB_P (type1)
|| TREE_CODE (TREE_TYPE (type1)) == FUNCTION_TYPE))
break;
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 93c184845f9..f9d90ad3258 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7523,6 +7523,8 @@ compute_array_index_type (tree name, tree size, tsubst_flags_t complain)
}
size = maybe_constant_value (size);
+ if (!TREE_CONSTANT (size))
+ size = osize;
}
if (error_operand_p (size))
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 56f66faffdd..e1961c8ee77 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1,7 +1,7 @@
/* Handle initialization things in C++.
Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
This file is part of GCC.
@@ -140,10 +140,13 @@ initialize_vtbl_ptrs (tree addr)
is the number of elements in the array. If STATIC_STORAGE_P is
TRUE, initializers are only generated for entities for which
zero-initialization does not simply mean filling the storage with
- zero bytes. */
+ zero bytes. FIELD_SIZE, if non-NULL, is the bit size of the field,
+ subfields with bit positions at or above that bit size shouldn't
+ be added. */
-tree
-build_zero_init (tree type, tree nelts, bool static_storage_p)
+static tree
+build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
+ tree field_size)
{
tree init = NULL_TREE;
@@ -188,15 +191,32 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
if (TREE_CODE (field) != FIELD_DECL)
continue;
+ /* Don't add virtual bases for base classes if they are beyond
+ the size of the current field, that means it is present
+ somewhere else in the object. */
+ if (field_size)
+ {
+ tree bitpos = bit_position (field);
+ if (TREE_CODE (bitpos) == INTEGER_CST
+ && !tree_int_cst_lt (bitpos, field_size))
+ continue;
+ }
+
/* Note that for class types there will be FIELD_DECLs
corresponding to base classes as well. Thus, iterating
over TYPE_FIELDs will result in correct initialization of
all of the subobjects. */
if (!static_storage_p || !zero_init_p (TREE_TYPE (field)))
{
- tree value = build_zero_init (TREE_TYPE (field),
- /*nelts=*/NULL_TREE,
- static_storage_p);
+ tree new_field_size
+ = (DECL_FIELD_IS_BASE (field)
+ && DECL_SIZE (field)
+ && TREE_CODE (DECL_SIZE (field)) == INTEGER_CST)
+ ? DECL_SIZE (field) : NULL_TREE;
+ tree value = build_zero_init_1 (TREE_TYPE (field),
+ /*nelts=*/NULL_TREE,
+ static_storage_p,
+ new_field_size);
if (value)
CONSTRUCTOR_APPEND_ELT(v, field, value);
}
@@ -244,9 +264,9 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
ce->index = build2 (RANGE_EXPR, sizetype, size_zero_node,
max_index);
- ce->value = build_zero_init (TREE_TYPE (type),
- /*nelts=*/NULL_TREE,
- static_storage_p);
+ ce->value = build_zero_init_1 (TREE_TYPE (type),
+ /*nelts=*/NULL_TREE,
+ static_storage_p, NULL_TREE);
}
/* Build a constructor to contain the initializations. */
@@ -264,6 +284,24 @@ build_zero_init (tree type, tree nelts, bool static_storage_p)
return init;
}
+/* Return an expression for the zero-initialization of an object with
+ type T. This expression will either be a constant (in the case
+ that T is a scalar), or a CONSTRUCTOR (in the case that T is an
+ aggregate), or NULL (in the case that T does not require
+ initialization). In either case, the value can be used as
+ DECL_INITIAL for a decl of the indicated TYPE; it is a valid static
+ initializer. If NELTS is non-NULL, and TYPE is an ARRAY_TYPE, NELTS
+ is the number of elements in the array. If STATIC_STORAGE_P is
+ TRUE, initializers are only generated for entities for which
+ zero-initialization does not simply mean filling the storage with
+ zero bytes. */
+
+tree
+build_zero_init (tree type, tree nelts, bool static_storage_p)
+{
+ return build_zero_init_1 (type, nelts, static_storage_p, NULL_TREE);
+}
+
/* Return a suitable initializer for value-initializing an object of type
TYPE, as described in [dcl.init]. */
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 7e9b286c0ae..4260f6d135a 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -15685,7 +15685,13 @@ static tree cp_parser_type_id (cp_parser *parser)
static tree cp_parser_template_type_arg (cp_parser *parser)
{
- return cp_parser_type_id_1 (parser, true, false);
+ tree r;
+ const char *saved_message = parser->type_definition_forbidden_message;
+ parser->type_definition_forbidden_message
+ = G_("types may not be defined in template arguments");
+ r = cp_parser_type_id_1 (parser, true, false);
+ parser->type_definition_forbidden_message = saved_message;
+ return r;
}
static tree cp_parser_trailing_type_id (cp_parser *parser)
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index ab2aea3b536..95b82ee579d 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -10948,11 +10948,21 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
if (TREE_CODE (f) != TYPENAME_TYPE)
{
if (TYPENAME_IS_ENUM_P (t) && TREE_CODE (f) != ENUMERAL_TYPE)
- error ("%qT resolves to %qT, which is not an enumeration type",
- t, f);
+ {
+ if (complain & tf_error)
+ error ("%qT resolves to %qT, which is not an enumeration type",
+ t, f);
+ else
+ return error_mark_node;
+ }
else if (TYPENAME_IS_CLASS_P (t) && !CLASS_TYPE_P (f))
- error ("%qT resolves to %qT, which is is not a class type",
- t, f);
+ {
+ if (complain & tf_error)
+ error ("%qT resolves to %qT, which is is not a class type",
+ t, f);
+ else
+ return error_mark_node;
+ }
}
return cp_build_qualified_type_real
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index ff0ba670863..1d3556c7751 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -227,7 +227,7 @@ Objective-C and Objective-C++ Dialects}.
@xref{Language Independent Options,,Options to Control Diagnostic Messages Formatting}.
@gccoptlist{-fmessage-length=@var{n} @gol
-fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]} @gol
--fdiagnostics-show-option}
+-fno-diagnostics-show-option}
@item Warning Options
@xref{Warning Options,,Options to Request or Suppress Warnings}.
@@ -2776,12 +2776,13 @@ messages reporter to emit the same source location information (as
prefix) for physical lines that result from the process of breaking
a message which is too long to fit on a single line.
-@item -fdiagnostics-show-option
+@item -fno-diagnostics-show-option
+@opindex fno-diagnostics-show-option
@opindex fdiagnostics-show-option
-This option instructs the diagnostic machinery to add text to each
-diagnostic emitted, which indicates which command line option directly
-controls that diagnostic, when such an option is known to the
-diagnostic machinery.
+By default, each diagnostic emitted includes text which indicates the
+command line option that directly controls the diagnostic (if such an
+option is known to the diagnostic machinery). Specifying the
+@option{-fno-diagnostics-show-option} flag suppresses that behavior.
@item -Wcoverage-mismatch
@opindex Wcoverage-mismatch
@@ -2847,9 +2848,13 @@ controlled by @option{-Wswitch} into errors. This switch takes a
negative form, to be used to negate @option{-Werror} for specific
warnings, for example @option{-Wno-error=switch} makes
@option{-Wswitch} warnings not be errors, even when @option{-Werror}
-is in effect. You can use the @option{-fdiagnostics-show-option}
-option to have each controllable warning amended with the option which
-controls it, to determine what to use with this option.
+is in effect.
+
+The warning message for each controllable warning includes the
+option which controls the warning. That option can then be used with
+@option{-Werror=} and @option{-Wno-error=} as described above.
+(Printing of the option in the warning message can be disabled using the
+@option{-fno-diagnostics-show-option} flag.)
Note that specifying @option{-Werror=}@var{foo} automatically implies
@option{-W}@var{foo}. However, @option{-Wno-error=}@var{foo} does not
@@ -8307,7 +8312,7 @@ This number sets the maximum number of instructions (counted in GCC's
internal representation) in a single function that the tree inliner
will consider for inlining. This only affects functions declared
inline and methods implemented in a class declaration (C++).
-The default value is 300.
+The default value is 400.
@item max-inline-insns-auto
When you use @option{-finline-functions} (included in @option{-O3}),
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a479ef67210..503b7b8c3d4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,26 @@
+2011-03-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48059
+ * trans-expr.c (gfc_apply_interface_mapping_to_expr): Replace base type
+ for polymorphic arguments.
+
+2011-03-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/48054
+ * intrinsic.texi: Clarify doc of logarithm functions.
+
+2011-03-12 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/47552
+ * trans-intrinsic.c (gfc_conv_intrinsic_ctime): Fix type of
+ the string length variable.
+
+2011-03-11 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/47768
+ * module.c (ab_attribute,attr_bits): Add AB_PROC_POINTER_COMP.
+ (mio_symbol_attribute): Handle attribute 'proc_pointer_comp'.
+
2011-03-06 Paul Thomas <pault@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 28b5fe8ade8..a13c83350e4 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -4285,7 +4285,7 @@ end program test_exit
@fnindex ZEXP
@fnindex CDEXP
@cindex exponential function
-@cindex logarithmic function, inverse
+@cindex logarithm function, inverse
@table @asis
@item @emph{Description}:
@@ -7766,7 +7766,7 @@ end program test_loc
@node LOG
-@section @code{LOG} --- Logarithm function
+@section @code{LOG} --- Natural logarithm function
@fnindex LOG
@fnindex ALOG
@fnindex DLOG
@@ -7774,11 +7774,13 @@ end program test_loc
@fnindex ZLOG
@fnindex CDLOG
@cindex exponential function, inverse
-@cindex logarithmic function
+@cindex logarithm function
+@cindex natural logarithm function
@table @asis
@item @emph{Description}:
-@code{LOG(X)} computes the logarithm of @var{X}.
+@code{LOG(X)} computes the natural logarithm of @var{X}, i.e. the
+logarithm to the base @math{e}.
@item @emph{Standard}:
Fortran 77 and later
@@ -7804,9 +7806,9 @@ If @var{X} is @code{COMPLEX}, the imaginary part @math{\omega} is in the range
@item @emph{Example}:
@smallexample
program test_log
- real(8) :: x = 1.0_8
+ real(8) :: x = 2.7182818284590451_8
complex :: z = (1.0, 2.0)
- x = log(x)
+ x = log(x) ! will yield (approximately) 1
z = log(z)
end program test_log
@end smallexample
@@ -7830,7 +7832,8 @@ end program test_log
@fnindex ALOG10
@fnindex DLOG10
@cindex exponential function, inverse
-@cindex logarithmic function
+@cindex logarithm function with base 10
+@cindex base 10 logarithm function
@table @asis
@item @emph{Description}:
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 6f1520c0205..923f8c695e4 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -1671,8 +1671,9 @@ typedef enum
AB_POINTER, AB_TARGET, AB_DUMMY, AB_RESULT, AB_DATA,
AB_IN_NAMELIST, AB_IN_COMMON, AB_FUNCTION, AB_SUBROUTINE, AB_SEQUENCE,
AB_ELEMENTAL, AB_PURE, AB_RECURSIVE, AB_GENERIC, AB_ALWAYS_EXPLICIT,
- AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, AB_ALLOC_COMP,
- AB_POINTER_COMP, AB_PRIVATE_COMP, AB_VALUE, AB_VOLATILE, AB_PROTECTED,
+ AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE,
+ AB_ALLOC_COMP, AB_POINTER_COMP, AB_PROC_POINTER_COMP, AB_PRIVATE_COMP,
+ AB_VALUE, AB_VOLATILE, AB_PROTECTED,
AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT, AB_ZERO_COMP,
AB_IS_CLASS, AB_PROCEDURE, AB_PROC_POINTER, AB_ASYNCHRONOUS, AB_CODIMENSION,
AB_COARRAY_COMP, AB_VTYPE, AB_VTAB, AB_CONTIGUOUS, AB_CLASS_POINTER,
@@ -1716,6 +1717,7 @@ static const mstring attr_bits[] =
minit ("ALLOC_COMP", AB_ALLOC_COMP),
minit ("COARRAY_COMP", AB_COARRAY_COMP),
minit ("POINTER_COMP", AB_POINTER_COMP),
+ minit ("PROC_POINTER_COMP", AB_PROC_POINTER_COMP),
minit ("PRIVATE_COMP", AB_PRIVATE_COMP),
minit ("ZERO_COMP", AB_ZERO_COMP),
minit ("PROTECTED", AB_PROTECTED),
@@ -1881,6 +1883,8 @@ mio_symbol_attribute (symbol_attribute *attr)
MIO_NAME (ab_attribute) (AB_ALLOC_COMP, attr_bits);
if (attr->pointer_comp)
MIO_NAME (ab_attribute) (AB_POINTER_COMP, attr_bits);
+ if (attr->proc_pointer_comp)
+ MIO_NAME (ab_attribute) (AB_PROC_POINTER_COMP, attr_bits);
if (attr->private_comp)
MIO_NAME (ab_attribute) (AB_PRIVATE_COMP, attr_bits);
if (attr->coarray_comp)
@@ -2027,6 +2031,9 @@ mio_symbol_attribute (symbol_attribute *attr)
case AB_POINTER_COMP:
attr->pointer_comp = 1;
break;
+ case AB_PROC_POINTER_COMP:
+ attr->proc_pointer_comp = 1;
+ break;
case AB_PRIVATE_COMP:
attr->private_comp = 1;
break;
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index d6c1f9f5a17..da7cfba5981 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -2247,6 +2247,10 @@ gfc_apply_interface_mapping_to_expr (gfc_interface_mapping * mapping,
expr->symtree = sym->new_sym;
else if (sym->expr)
gfc_replace_expr (expr, gfc_copy_expr (sym->expr));
+ /* Replace base type for polymorphic arguments. */
+ if (expr->ref && expr->ref->type == REF_COMPONENT
+ && sym->expr && sym->expr->ts.type == BT_CLASS)
+ expr->ref->u.c.sym = sym->expr->ts.u.derived;
}
/* ...and to subexpressions in expr->value. */
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 502a8153d5d..403aa3068b7 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -1501,7 +1501,7 @@ gfc_conv_intrinsic_ctime (gfc_se * se, gfc_expr * expr)
args = XALLOCAVEC (tree, num_args);
var = gfc_create_var (pchar_type_node, "pstr");
- len = gfc_create_var (gfc_get_int_type (8), "len");
+ len = gfc_create_var (gfc_charlen_type_node, "len");
gfc_conv_intrinsic_function_args (se, expr, &args[2], num_args - 2);
args[0] = gfc_build_addr_expr (NULL_TREE, var);
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
index 47a03d50f6f..41356dc814a 100644
--- a/gcc/graphite-clast-to-gimple.c
+++ b/gcc/graphite-clast-to-gimple.c
@@ -1236,7 +1236,7 @@ init_cloog_input_file (int scop_number)
static void
build_cloog_prog (scop_p scop, CloogProgram *prog,
- CloogOptions *options, CloogState *state ATTRIBUTE_UNUSED)
+ CloogOptions *options)
{
int i;
int max_nb_loops = scop_max_loop_depth (scop);
@@ -1249,7 +1249,7 @@ build_cloog_prog (scop_p scop, CloogProgram *prog,
cloog_program_set_context
(prog, new_Cloog_Domain_from_ppl_Pointset_Powerset (SCOP_CONTEXT (scop),
- scop_nb_params (scop), state));
+ scop_nb_params (scop), cloog_state));
nbs = unify_scattering_dimensions (scop);
scaldims = (int *) xmalloc (nbs * (sizeof (int)));
cloog_program_set_nb_scattdims (prog, nbs);
@@ -1267,16 +1267,16 @@ build_cloog_prog (scop_p scop, CloogProgram *prog,
continue;
/* Build the new statement and its block. */
- stmt = cloog_statement_alloc (state, pbb_index (pbb));
+ stmt = cloog_statement_alloc (cloog_state, pbb_index (pbb));
dom = new_Cloog_Domain_from_ppl_Pointset_Powerset (PBB_DOMAIN (pbb),
scop_nb_params (scop),
- state);
+ cloog_state);
block = cloog_block_alloc (stmt, 0, NULL, pbb_dim_iter_domain (pbb));
cloog_statement_set_usr (stmt, pbb);
/* Build loop list. */
{
- CloogLoop *new_loop_list = cloog_loop_malloc (state);
+ CloogLoop *new_loop_list = cloog_loop_malloc (cloog_state);
cloog_loop_set_next (new_loop_list, loop_list);
cloog_loop_set_domain (new_loop_list, dom);
cloog_loop_set_block (new_loop_list, block);
@@ -1303,7 +1303,7 @@ build_cloog_prog (scop_p scop, CloogProgram *prog,
scat = PBB_TRANSFORMED_SCATTERING (pbb);
dom = new_Cloog_Scattering_from_ppl_Polyhedron
(scat, scop_nb_params (scop), pbb_nb_scattering_transform (pbb),
- state);
+ cloog_state);
cloog_set_next_scattering (new_scattering, scattering);
cloog_set_scattering (new_scattering, dom);
@@ -1360,9 +1360,9 @@ build_cloog_prog (scop_p scop, CloogProgram *prog,
/* Return the options that will be used in GLOOG. */
static CloogOptions *
-set_cloog_options (CloogState *state ATTRIBUTE_UNUSED)
+set_cloog_options (void)
{
- CloogOptions *options = cloog_options_malloc (state);
+ CloogOptions *options = cloog_options_malloc (cloog_state);
/* Change cloog output language to C. If we do use FORTRAN instead, cloog
will stop e.g. with "ERROR: unbounded loops not allowed in FORTRAN.", if
@@ -1411,12 +1411,10 @@ set_cloog_options (CloogState *state ATTRIBUTE_UNUSED)
void
print_clast_stmt (FILE *file, struct clast_stmt *stmt)
{
- CloogState *state = cloog_state_malloc ();
- CloogOptions *options = set_cloog_options (state);
+ CloogOptions *options = set_cloog_options ();
clast_pprint (file, stmt, 0, options);
cloog_options_free (options);
- cloog_state_free (state);
}
/* Prints STMT to STDERR. */
@@ -1432,14 +1430,14 @@ debug_clast_stmt (struct clast_stmt *stmt)
without a program. */
cloog_prog_clast
-scop_to_clast (scop_p scop, CloogState *state)
+scop_to_clast (scop_p scop)
{
- CloogOptions *options = set_cloog_options (state);
+ CloogOptions *options = set_cloog_options ();
cloog_prog_clast pc;
/* Connect new cloog prog generation to graphite. */
pc.prog = cloog_program_malloc ();
- build_cloog_prog (scop, pc.prog, options, state);
+ build_cloog_prog (scop, pc.prog, options);
pc.prog = cloog_program_generate (pc.prog, options);
pc.stmt = cloog_clast_create (pc.prog, options);
@@ -1452,10 +1450,9 @@ scop_to_clast (scop_p scop, CloogState *state)
void
print_generated_program (FILE *file, scop_p scop)
{
- CloogState *state = cloog_state_malloc ();
- CloogOptions *options = set_cloog_options (state);
+ CloogOptions *options = set_cloog_options ();
- cloog_prog_clast pc = scop_to_clast (scop, state);
+ cloog_prog_clast pc = scop_to_clast (scop);
fprintf (file, " (prog: \n");
cloog_program_print (file, pc.prog);
@@ -1506,13 +1503,11 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
ifsese if_region = NULL;
htab_t newivs_index, params_index;
cloog_prog_clast pc;
- CloogState *state;
- state = cloog_state_malloc ();
timevar_push (TV_GRAPHITE_CODE_GEN);
gloog_error = false;
- pc = scop_to_clast (scop, state);
+ pc = scop_to_clast (scop);
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -1577,8 +1572,6 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
num_no_dependency);
}
- cloog_state_free (state);
-
return !gloog_error;
}
#endif
diff --git a/gcc/graphite-clast-to-gimple.h b/gcc/graphite-clast-to-gimple.h
index cd3cbcaebea..9d599d6d075 100644
--- a/gcc/graphite-clast-to-gimple.h
+++ b/gcc/graphite-clast-to-gimple.h
@@ -22,6 +22,9 @@ along with GCC; see the file COPYING3. If not see
#define GCC_GRAPHITE_CLAST_TO_GIMPLE_H
#include "graphite-cloog-util.h"
+
+extern CloogState *cloog_state;
+
/* Data structure for CLooG program representation. */
typedef struct cloog_prog_clast {
@@ -35,10 +38,10 @@ typedef struct bb_pbb_def
{
basic_block bb;
poly_bb_p pbb;
-}bb_pbb_def;
+} bb_pbb_def;
extern bool gloog (scop_p, htab_t);
-extern cloog_prog_clast scop_to_clast (scop_p, CloogState *);
+extern cloog_prog_clast scop_to_clast (scop_p);
extern void debug_clast_stmt (struct clast_stmt *);
extern void print_clast_stmt (FILE *, struct clast_stmt *);
diff --git a/gcc/graphite.c b/gcc/graphite.c
index 70c3d463f8f..b013447443f 100644
--- a/gcc/graphite.c
+++ b/gcc/graphite.c
@@ -54,6 +54,8 @@ along with GCC; see the file COPYING3. If not see
#include "graphite-clast-to-gimple.h"
#include "graphite-sese-to-poly.h"
+CloogState *cloog_state;
+
/* Print global statistics to FILE. */
static void
@@ -206,6 +208,7 @@ graphite_initialize (void)
ppl_initialized = ppl_initialize ();
gcc_assert (ppl_initialized == 0);
+ cloog_state = cloog_state_malloc ();
cloog_initialize ();
if (dump_file && dump_flags)
@@ -229,6 +232,7 @@ graphite_finalize (bool need_cfg_cleanup_p)
tree_estimate_probability ();
}
+ cloog_state_free (cloog_state);
cloog_finalize ();
ppl_finalize ();
free_original_copy_tables ();
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index e8676c8394b..7ae5f96dc7c 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -1,5 +1,5 @@
/* Inlining decision heuristics.
- Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
+ Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Jan Hubicka
@@ -1498,6 +1498,7 @@ cgraph_decide_inlining (void)
&& node->callers->caller != node
&& node->callers->caller->global.inlined_to != node
&& !node->callers->call_stmt_cannot_inline_p
+ && tree_can_inline_p (node->callers)
&& !DECL_EXTERNAL (node->decl))
{
cgraph_inline_failed_t reason;
diff --git a/gcc/ipa.c b/gcc/ipa.c
index 0320ded7a87..49554083c02 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -1,5 +1,5 @@
/* Basic IPA optimizations and utilities.
- Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -259,7 +259,7 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
{
vnode->next_needed = NULL;
vnode->prev_needed = NULL;
- if (vnode->analyzed
+ if ((vnode->analyzed || vnode->force_output)
&& !varpool_can_remove_if_no_refs (vnode))
{
vnode->needed = false;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c3dec73ba13..0ea094682b0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,72 @@
+2011-03-12 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR target/48053
+ * gcc/testsuite/gcc.target/powerpc/pr48053-1.c: New test.
+ * gcc/testsuite/gcc.target/powerpc/pr48053-2.c: Likewise.
+
+2011-03-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/48066
+ * gfortran.dg/intrinsic_ifunction_2.f90: Correct PR number.
+
+2011-03-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/48066
+ * gfortran.dg/intrinsic_ifunction_2.f90: New test case.
+
+2011-03-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48059
+ * gfortran.dg/class_41.f03: New.
+
+2011-03-11 Dodji Seketeli <dodji@redhat.com>
+
+ * g++.dg/conversion/cast3.C: New test.
+
+2011-03-11 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/error45.C: New.
+
+ * g++.dg/parse/no-type-defn1.C: New.
+
+ * g++.dg/ext/attrib40.C: New.
+
+ * g++.dg/cpp0x/regress/array1.C: New.
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48067
+ * gcc.dg/pr48067.c: New testcase.
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ PR lto/48073
+ * g++.dg/lto/20110311-1_0.C: New testcase.
+
+2011-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/48035
+ * g++.dg/inherit/virtual8.C: New test.
+
+ PR middle-end/48044
+ * gcc.dg/torture/pr48044.c: New test.
+
+2011-03-11 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/47768
+ * gfortran.dg/proc_ptr_comp_31.f90: New.
+
+2011-03-11 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/47278
+ * gcc.dg/torture/pr47278-1.c: New testcase.
+ * gcc.dg/torture/pr47278-2.c: Likewise.
+
+2011-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48063
+ * gcc.dg/torture/pr48063.c: New test.
+
2011-03-10 Jason Merrill <jason@redhat.com>
* g++.dg/template/array22.C: New.
diff --git a/gcc/testsuite/g++.dg/conversion/cast3.C b/gcc/testsuite/g++.dg/conversion/cast3.C
new file mode 100644
index 00000000000..43287a1eb36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/conversion/cast3.C
@@ -0,0 +1,14 @@
+// Origin: PR c++/46824
+
+class Incomplete;
+struct Ptr
+{
+ operator Incomplete*();
+};
+
+int
+main()
+{
+ Ptr p;
+ *p;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/regress/array1.C b/gcc/testsuite/g++.dg/cpp0x/regress/array1.C
new file mode 100644
index 00000000000..629ab4103f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/regress/array1.C
@@ -0,0 +1,16 @@
+// PR c++/47808
+// { dg-options -std=c++0x }
+
+template <typename T>
+inline T abs (T const & x) { return x; }
+
+template <typename T>
+void f (T)
+{
+ typedef int ai[(abs(0.1) > 0) ? 1 : -1];
+}
+
+int main()
+{
+ f(1);
+}
diff --git a/gcc/testsuite/g++.dg/ext/attrib40.C b/gcc/testsuite/g++.dg/ext/attrib40.C
new file mode 100644
index 00000000000..9c3f761596d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/attrib40.C
@@ -0,0 +1,4 @@
+// PR c++/46803
+
+int strftime(char *, int, const char *, const struct tm *)
+ __attribute__ ((__bounded__(__string__,1,2))); // { dg-warning "ignored" }
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
new file mode 100644
index 00000000000..4f6a119b287
--- /dev/null
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -0,0 +1,48 @@
+// PR c++/48035
+// { dg-do run }
+
+#include <new>
+#include <cstring>
+#include <cstdlib>
+
+struct A
+{
+ virtual void foo (void) {}
+ virtual ~A () {}
+};
+
+struct B : public A
+{
+ virtual ~B () {}
+};
+
+struct C
+{
+ virtual ~C () {}
+ int c;
+};
+
+struct D : public virtual B, public C
+{
+ virtual ~D () {}
+};
+
+struct E : public virtual D
+{
+ virtual ~E () {}
+};
+
+int
+main ()
+{
+ char *v = new char[sizeof (E) + 16];
+ memset (v, 0x55, sizeof (E) + 16);
+ E *e = new (v) E ();
+ e->~E ();
+
+ for (unsigned i = sizeof (E); i < sizeof (E) + 16; ++i)
+ if (v[i] != 0x55)
+ abort ();
+
+ delete[] v;
+}
diff --git a/gcc/testsuite/g++.dg/lto/20110311-1_0.C b/gcc/testsuite/g++.dg/lto/20110311-1_0.C
new file mode 100644
index 00000000000..c63951e5bd8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/20110311-1_0.C
@@ -0,0 +1,51 @@
+/* { dg-lto-do link } */
+/* { dg-extra-ld-options "-r -nostdlib" } */
+
+struct NullType {};
+
+template <class T, class U>
+struct TList
+{
+ typedef T Head;
+ typedef U Tail;
+};
+
+template <class T>
+struct TListLength {};
+
+template <class T, class U>
+struct TListLength<TList<T,U> >
+{
+ enum
+ {
+ Ret = 1 + TListLength<U>::Ret
+ };
+};
+
+template <>
+struct TListLength<NullType>
+{
+ enum
+ {
+ Ret = 0
+ };
+};
+
+template <class Moves>
+class DDQMC
+{
+public:
+ int* moves[TListLength<Moves>::Ret];
+ inline DDQMC();
+private:
+};
+
+template <class Moves>
+DDQMC<Moves>::DDQMC()
+{
+}
+
+int main()
+{
+ typedef DDQMC< TList<float, TList<int, NullType> > > mytype;
+}
diff --git a/gcc/testsuite/g++.dg/parse/no-type-defn1.C b/gcc/testsuite/g++.dg/parse/no-type-defn1.C
new file mode 100644
index 00000000000..9e899579ef6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/no-type-defn1.C
@@ -0,0 +1,5 @@
+// PR c++/47144
+
+template<typename> struct A { };
+A< struct B { }* >::SomeNonSense // { dg-error "types may not be defined" }
+int y;
diff --git a/gcc/testsuite/g++.dg/template/error45.C b/gcc/testsuite/g++.dg/template/error45.C
new file mode 100644
index 00000000000..454acc63149
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/error45.C
@@ -0,0 +1,22 @@
+// PR c++/47125
+
+template < bool, typename >
+struct enable_if {};
+
+template < typename T >
+struct enable_if< true, T >
+{
+ typedef T type;
+};
+
+template < typename T >
+struct enable_if< true, T >::type
+f( T x );
+
+void
+g( void )
+{
+ f< int >( 0 ); // { dg-error "no match" }
+}
+
+// { dg-prune-output "note" }
diff --git a/gcc/testsuite/gcc.dg/pr48067.c b/gcc/testsuite/gcc.dg/pr48067.c
new file mode 100644
index 00000000000..779690918ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr48067.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ffast-math -fno-tree-forwprop -fno-tree-reassoc" } */
+/* { dg-options "-O2 -ffast-math -fno-tree-forwprop -fno-tree-reassoc -mfma4" { target x86_64-*-* i?86-*-* } } */
+
+float
+foo (float x, float cim)
+{
+ float c = x * cim;
+ float d = -c;
+ return c - d;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr47278-1.c b/gcc/testsuite/gcc.dg/torture/pr47278-1.c
new file mode 100644
index 00000000000..f97906c61a3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr47278-1.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-require-visibility "" } */
+/* { dg-additional-sources "pr47278-2.c" } */
+
+int foo (void) { return 1; }
diff --git a/gcc/testsuite/gcc.dg/torture/pr47278-2.c b/gcc/testsuite/gcc.dg/torture/pr47278-2.c
new file mode 100644
index 00000000000..0c700d19612
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr47278-2.c
@@ -0,0 +1,15 @@
+/* { dg-require-visibility "" } */
+
+extern void abort (void);
+
+int __attribute__((weak,visibility("hidden"))) foo (void)
+{
+ return 0;
+}
+
+int main()
+{
+ if (foo() != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr48044.c b/gcc/testsuite/gcc.dg/torture/pr48044.c
new file mode 100644
index 00000000000..fe3b73402cc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48044.c
@@ -0,0 +1,7 @@
+/* PR middle-end/48044 */
+/* { dg-do compile } */
+/* { dg-require-alias "" } */
+
+int a __asm__ ("b") = 0;
+extern int c __asm__ ("a") __attribute__ ((alias ("b")));
+extern int d __attribute__ ((weak, alias ("a")));
diff --git a/gcc/testsuite/gcc.dg/torture/pr48063.c b/gcc/testsuite/gcc.dg/torture/pr48063.c
new file mode 100644
index 00000000000..d861bf04c80
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48063.c
@@ -0,0 +1,19 @@
+/* PR tree-optimization/48063 */
+/* { dg-do compile } */
+/* { dg-options "-fno-early-inlining" } */
+
+extern void abort (void);
+static void bar ();
+
+void
+foo ()
+{
+ bar (1);
+}
+
+static void
+bar (double i)
+{
+ if (i)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48053-1.c b/gcc/testsuite/gcc.target/powerpc/pr48053-1.c
new file mode 100644
index 00000000000..fd7cd3d9ed3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48053-1.c
@@ -0,0 +1,30 @@
+/* Test for ICE arising from VSX code generation. */
+/* { dg-do compile } */
+/* { dg-options "-O3 -mcpu=power7 -funroll-loops" } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+
+int sourcenode;
+int ARCHelems;
+int *source_elms;
+void
+foo (int argc, char **argv)
+{
+ int i, j;
+ int cor[4];
+ double Ke[12][12], Me[12], Ce[12], Mexv[12], Cexv[12], v[12];
+ for (i = 0; i < ARCHelems; i++)
+ {
+ for (j = 0; j < 12; j++)
+ Me[j] = 0.0;
+ if (cor[j] == sourcenode)
+ vv12x12 (Me, v, Mexv);
+ vv12x12 (Ce, v, Cexv);
+ if (source_elms[i] == 3)
+ for (j = 0; j < 12; j++)
+ {
+ v[j] = -v[j];
+ Mexv[j] = -Mexv[j];
+ Cexv[j] = -Cexv[j];
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr48053-2.c b/gcc/testsuite/gcc.target/powerpc/pr48053-2.c
new file mode 100644
index 00000000000..2cdec6a68d7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr48053-2.c
@@ -0,0 +1,38 @@
+/* Test for ICE arising from VSX code generation. */
+/* { dg-do compile } */
+/* { dg-options "-O3 -mcpu=power7" } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+
+struct timeval
+{
+ long tv_sec;
+ long tv_usec;
+};
+
+extern char *bar (struct timeval *);
+int *error;
+
+void
+foo (void *ptr)
+{
+ struct timeval tm;
+ long n1, n2;
+
+ if (!ptr)
+ {
+ *error = 1;
+ n1 = -1;
+ n2 = -1;
+ }
+ else
+ {
+ n1 = 0;
+ n2 = *error;
+ }
+
+ tm.tv_sec = n1;
+ tm.tv_usec = n2;
+
+ if (*error)
+ bar (&tm);
+}
diff --git a/gcc/testsuite/gfortran.dg/class_41.f03 b/gcc/testsuite/gfortran.dg/class_41.f03
new file mode 100644
index 00000000000..bcab2b4ceef
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_41.f03
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR 48059: [4.6 Regression][OOP] ICE in in gfc_conv_component_ref: character function of extended type
+!
+! Contributed by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+
+module a_module
+ type :: a_type
+ integer::length=0
+ end type a_type
+ type,extends(a_type) :: b_type
+ end type b_type
+contains
+ function a_string(this) result(form)
+ class(a_type),intent(in)::this
+ character(max(1,this%length))::form
+ end function a_string
+ subroutine b_sub(this)
+ class(b_type),intent(inout),target::this
+ print *,a_string(this)
+ end subroutine b_sub
+end module a_module
+
+! { dg-final { cleanup-modules "a_module" } }
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f90 b/gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f90
new file mode 100644
index 00000000000..1014cfff385
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/intrinsic_ifunction_2.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+! PR 48066 - this used to segfault.
+program p
+ real(8) :: empty(0, 3), square(0)
+ logical :: lempty(0, 3), lsquare(0)
+ square = sum(empty * empty, 2)
+ lsquare = any(lempty .and. lempty, 2)
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90
new file mode 100644
index 00000000000..6a5d8c967e2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+!
+! PR 47768: printing a derived-type variable with proc-pointer components
+!
+! Contributed by Arjen Markus <arjen.markus895@gmail.com>
+
+module proc_pointers
+ implicit none
+ type :: rectangle
+ real :: width, height
+ procedure(real), pointer, nopass :: get_special_area
+ end type
+end module
+
+program test_objects
+ use proc_pointers
+ implicit none
+ type(rectangle) :: rect
+ write(*,*) rect ! { dg-error "cannot have procedure pointer components" }
+end program
+
+! { dg-final { cleanup-modules "proc_pointers" } }
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index ed9b7a9d546..6e2213ccea2 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -1557,6 +1557,9 @@ convert_mult_to_fma (gimple mul_stmt, tree op1, tree op2)
/* A negate on the multiplication leads to FNMA. */
if (use_code == NEGATE_EXPR)
{
+ ssa_op_iter iter;
+ tree use;
+
result = gimple_assign_lhs (use_stmt);
/* Make sure the negate statement becomes dead with this
@@ -1565,6 +1568,11 @@ convert_mult_to_fma (gimple mul_stmt, tree op1, tree op2)
&use_p, &neguse_stmt))
return false;
+ /* Make sure the multiplication isn't also used on that stmt. */
+ FOR_EACH_SSA_TREE_OPERAND (use, neguse_stmt, iter, SSA_OP_USE)
+ if (use == mul_result)
+ return false;
+
/* Re-validate. */
use_stmt = neguse_stmt;
if (gimple_bb (use_stmt) != gimple_bb (mul_stmt))
diff --git a/gcc/tree.c b/gcc/tree.c
index 2e1b9a308bd..be469909995 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4822,7 +4822,8 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
}
- fld_worklist_push (TREE_TYPE (t), fld);
+ if (TREE_CODE (t) != IDENTIFIER_NODE)
+ fld_worklist_push (TREE_TYPE (t), fld);
return NULL_TREE;
}
@@ -5988,8 +5989,7 @@ type_hash_eq (const void *va, const void *vb)
/* Be careful about comparing arrays before and after the element type
has been completed; don't compare TYPE_ALIGN unless both types are
complete. */
- if (COMPLETE_OR_UNBOUND_ARRAY_TYPE_P (a->type)
- && COMPLETE_OR_UNBOUND_ARRAY_TYPE_P (b->type)
+ if (COMPLETE_TYPE_P (a->type) && COMPLETE_TYPE_P (b->type)
&& (TYPE_ALIGN (a->type) != TYPE_ALIGN (b->type)
|| TYPE_MODE (a->type) != TYPE_MODE (b->type)))
return 0;
diff --git a/gcc/tree.h b/gcc/tree.h
index 296e6de8ee4..2a94b3ae0d0 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -5348,7 +5348,7 @@ extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree);
/* In attribs.c. */
-extern const struct attribute_spec *lookup_attribute_spec (tree);
+extern const struct attribute_spec *lookup_attribute_spec (const_tree);
/* Process the attributes listed in ATTRIBUTES and install them in *NODE,
which is either a DECL (including a TYPE_DECL) or a TYPE. If a DECL,
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 4092218f587..c6e2567b1da 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-14 Andreas Tobler <andreast@fgznet.ch>
+
+ * config.host (cpu_type): Add FreeBSD PowerPC specific parts.
+ Adjust copyright year.
+
2011-03-07 Ian Lance Taylor <iant@google.com>
* generic-morestack.c (__splitstack_find): Adjust returned stack
diff --git a/libgcc/config.host b/libgcc/config.host
index eb70215536d..d3f64d687fc 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -463,7 +463,8 @@ powerpc-*-darwin*)
;;
powerpc64-*-darwin*)
;;
-powerpc*-*-freebsd*)
+powerpc-*-freebsd*)
+ tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp"
;;
powerpc-*-netbsd*)
;;
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 33e2836ea7f..70c2b527d79 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,127 @@
+2011-03-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/48066
+ * m4/ifunction.m4: If return array is empty, return.
+ * m4/ifunction_logical.m4: Likewise.
+ * generated/all_l16.c: Regenerated.
+ * generated/all_l1.c: Regenerated.
+ * generated/all_l2.c: Regenerated.
+ * generated/all_l4.c: Regenerated.
+ * generated/all_l8.c: Regenerated.
+ * generated/any_l16.c: Regenerated.
+ * generated/any_l1.c: Regenerated.
+ * generated/any_l2.c: Regenerated.
+ * generated/any_l4.c: Regenerated.
+ * generated/any_l8.c: Regenerated.
+ * generated/count_16_l.c: Regenerated.
+ * generated/count_1_l.c: Regenerated.
+ * generated/count_2_l.c: Regenerated.
+ * generated/count_4_l.c: Regenerated.
+ * generated/count_8_l.c: Regenerated.
+ * generated/maxloc1_16_i16.c: Regenerated.
+ * generated/maxloc1_16_i1.c: Regenerated.
+ * generated/maxloc1_16_i2.c: Regenerated.
+ * generated/maxloc1_16_i4.c: Regenerated.
+ * generated/maxloc1_16_i8.c: Regenerated.
+ * generated/maxloc1_16_r10.c: Regenerated.
+ * generated/maxloc1_16_r16.c: Regenerated.
+ * generated/maxloc1_16_r4.c: Regenerated.
+ * generated/maxloc1_16_r8.c: Regenerated.
+ * generated/maxloc1_4_i16.c: Regenerated.
+ * generated/maxloc1_4_i1.c: Regenerated.
+ * generated/maxloc1_4_i2.c: Regenerated.
+ * generated/maxloc1_4_i4.c: Regenerated.
+ * generated/maxloc1_4_i8.c: Regenerated.
+ * generated/maxloc1_4_r10.c: Regenerated.
+ * generated/maxloc1_4_r16.c: Regenerated.
+ * generated/maxloc1_4_r4.c: Regenerated.
+ * generated/maxloc1_4_r8.c: Regenerated.
+ * generated/maxloc1_8_i16.c: Regenerated.
+ * generated/maxloc1_8_i1.c: Regenerated.
+ * generated/maxloc1_8_i2.c: Regenerated.
+ * generated/maxloc1_8_i4.c: Regenerated.
+ * generated/maxloc1_8_i8.c: Regenerated.
+ * generated/maxloc1_8_r10.c: Regenerated.
+ * generated/maxloc1_8_r16.c: Regenerated.
+ * generated/maxloc1_8_r4.c: Regenerated.
+ * generated/maxloc1_8_r8.c: Regenerated.
+ * generated/maxval_i16.c: Regenerated.
+ * generated/maxval_i1.c: Regenerated.
+ * generated/maxval_i2.c: Regenerated.
+ * generated/maxval_i4.c: Regenerated.
+ * generated/maxval_i8.c: Regenerated.
+ * generated/maxval_r10.c: Regenerated.
+ * generated/maxval_r16.c: Regenerated.
+ * generated/maxval_r4.c: Regenerated.
+ * generated/maxval_r8.c: Regenerated.
+ * generated/minloc1_16_i16.c: Regenerated.
+ * generated/minloc1_16_i1.c: Regenerated.
+ * generated/minloc1_16_i2.c: Regenerated.
+ * generated/minloc1_16_i4.c: Regenerated.
+ * generated/minloc1_16_i8.c: Regenerated.
+ * generated/minloc1_16_r10.c: Regenerated.
+ * generated/minloc1_16_r16.c: Regenerated.
+ * generated/minloc1_16_r4.c: Regenerated.
+ * generated/minloc1_16_r8.c: Regenerated.
+ * generated/minloc1_4_i16.c: Regenerated.
+ * generated/minloc1_4_i1.c: Regenerated.
+ * generated/minloc1_4_i2.c: Regenerated.
+ * generated/minloc1_4_i4.c: Regenerated.
+ * generated/minloc1_4_i8.c: Regenerated.
+ * generated/minloc1_4_r10.c: Regenerated.
+ * generated/minloc1_4_r16.c: Regenerated.
+ * generated/minloc1_4_r4.c: Regenerated.
+ * generated/minloc1_4_r8.c: Regenerated.
+ * generated/minloc1_8_i16.c: Regenerated.
+ * generated/minloc1_8_i1.c: Regenerated.
+ * generated/minloc1_8_i2.c: Regenerated.
+ * generated/minloc1_8_i4.c: Regenerated.
+ * generated/minloc1_8_i8.c: Regenerated.
+ * generated/minloc1_8_r10.c: Regenerated.
+ * generated/minloc1_8_r16.c: Regenerated.
+ * generated/minloc1_8_r4.c: Regenerated.
+ * generated/minloc1_8_r8.c: Regenerated.
+ * generated/minval_i16.c: Regenerated.
+ * generated/minval_i1.c: Regenerated.
+ * generated/minval_i2.c: Regenerated.
+ * generated/minval_i4.c: Regenerated.
+ * generated/minval_i8.c: Regenerated.
+ * generated/minval_r10.c: Regenerated.
+ * generated/minval_r16.c: Regenerated.
+ * generated/minval_r4.c: Regenerated.
+ * generated/minval_r8.c: Regenerated.
+ * generated/product_c10.c: Regenerated.
+ * generated/product_c16.c: Regenerated.
+ * generated/product_c4.c: Regenerated.
+ * generated/product_c8.c: Regenerated.
+ * generated/product_i16.c: Regenerated.
+ * generated/product_i1.c: Regenerated.
+ * generated/product_i2.c: Regenerated.
+ * generated/product_i4.c: Regenerated.
+ * generated/product_i8.c: Regenerated.
+ * generated/product_r10.c: Regenerated.
+ * generated/product_r16.c: Regenerated.
+ * generated/product_r4.c: Regenerated.
+ * generated/product_r8.c: Regenerated.
+ * generated/sum_c10.c: Regenerated.
+ * generated/sum_c16.c: Regenerated.
+ * generated/sum_c4.c: Regenerated.
+ * generated/sum_c8.c: Regenerated.
+ * generated/sum_i16.c: Regenerated.
+ * generated/sum_i1.c: Regenerated.
+ * generated/sum_i2.c: Regenerated.
+ * generated/sum_i4.c: Regenerated.
+ * generated/sum_i8.c: Regenerated.
+ * generated/sum_r10.c: Regenerated.
+ * generated/sum_r16.c: Regenerated.
+ * generated/sum_r4.c: Regenerated.
+ * generated/sum_r8.c: Regenerated.
+
+2011-03-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/48047
+ * io/write_float.def (write_float): Change MIN_FIELD_WIDTH to 48.
+
2011-03-04 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/47802
diff --git a/libgfortran/generated/all_l1.c b/libgfortran/generated/all_l1.c
index 400cfd90115..edf98184865 100644
--- a/libgfortran/generated/all_l1.c
+++ b/libgfortran/generated/all_l1.c
@@ -142,7 +142,7 @@ all_l1 (gfc_array_l1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/all_l16.c b/libgfortran/generated/all_l16.c
index abe10d7b388..d5cde25a983 100644
--- a/libgfortran/generated/all_l16.c
+++ b/libgfortran/generated/all_l16.c
@@ -142,7 +142,7 @@ all_l16 (gfc_array_l16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/all_l2.c b/libgfortran/generated/all_l2.c
index 2cbd1266b74..1128adabf58 100644
--- a/libgfortran/generated/all_l2.c
+++ b/libgfortran/generated/all_l2.c
@@ -142,7 +142,7 @@ all_l2 (gfc_array_l2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/all_l4.c b/libgfortran/generated/all_l4.c
index 14b63034949..97ad5a4f638 100644
--- a/libgfortran/generated/all_l4.c
+++ b/libgfortran/generated/all_l4.c
@@ -142,7 +142,7 @@ all_l4 (gfc_array_l4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/all_l8.c b/libgfortran/generated/all_l8.c
index ae5e6faf3c3..8846d34e5aa 100644
--- a/libgfortran/generated/all_l8.c
+++ b/libgfortran/generated/all_l8.c
@@ -142,7 +142,7 @@ all_l8 (gfc_array_l8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/any_l1.c b/libgfortran/generated/any_l1.c
index f8af5447a40..8f52b51fd79 100644
--- a/libgfortran/generated/any_l1.c
+++ b/libgfortran/generated/any_l1.c
@@ -142,7 +142,7 @@ any_l1 (gfc_array_l1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/any_l16.c b/libgfortran/generated/any_l16.c
index f92d7152b12..7f3f69e11e4 100644
--- a/libgfortran/generated/any_l16.c
+++ b/libgfortran/generated/any_l16.c
@@ -142,7 +142,7 @@ any_l16 (gfc_array_l16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/any_l2.c b/libgfortran/generated/any_l2.c
index 9c5e90a03b8..d2c4dbedbd6 100644
--- a/libgfortran/generated/any_l2.c
+++ b/libgfortran/generated/any_l2.c
@@ -142,7 +142,7 @@ any_l2 (gfc_array_l2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/any_l4.c b/libgfortran/generated/any_l4.c
index 44d5ed97e6b..f9d563743d3 100644
--- a/libgfortran/generated/any_l4.c
+++ b/libgfortran/generated/any_l4.c
@@ -142,7 +142,7 @@ any_l4 (gfc_array_l4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/any_l8.c b/libgfortran/generated/any_l8.c
index eabf8300dcb..f595826cc36 100644
--- a/libgfortran/generated/any_l8.c
+++ b/libgfortran/generated/any_l8.c
@@ -142,7 +142,7 @@ any_l8 (gfc_array_l8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/count_16_l.c b/libgfortran/generated/count_16_l.c
index d65999aff5a..e894e561dc3 100644
--- a/libgfortran/generated/count_16_l.c
+++ b/libgfortran/generated/count_16_l.c
@@ -142,7 +142,7 @@ count_16_l (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/count_1_l.c b/libgfortran/generated/count_1_l.c
index b2d89f4af37..894ad0c291f 100644
--- a/libgfortran/generated/count_1_l.c
+++ b/libgfortran/generated/count_1_l.c
@@ -142,7 +142,7 @@ count_1_l (gfc_array_i1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/count_2_l.c b/libgfortran/generated/count_2_l.c
index 8369a94feb8..d0e5ee497a4 100644
--- a/libgfortran/generated/count_2_l.c
+++ b/libgfortran/generated/count_2_l.c
@@ -142,7 +142,7 @@ count_2_l (gfc_array_i2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/count_4_l.c b/libgfortran/generated/count_4_l.c
index 8b5cbb0faa3..43af56b78fa 100644
--- a/libgfortran/generated/count_4_l.c
+++ b/libgfortran/generated/count_4_l.c
@@ -142,7 +142,7 @@ count_4_l (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/count_8_l.c b/libgfortran/generated/count_8_l.c
index 9cb6a26f2f1..6ddd701f97b 100644
--- a/libgfortran/generated/count_8_l.c
+++ b/libgfortran/generated/count_8_l.c
@@ -142,7 +142,7 @@ count_8_l (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_i1.c b/libgfortran/generated/maxloc1_16_i1.c
index a3aafcf6f80..920ea836b74 100644
--- a/libgfortran/generated/maxloc1_16_i1.c
+++ b/libgfortran/generated/maxloc1_16_i1.c
@@ -129,7 +129,7 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_i16.c b/libgfortran/generated/maxloc1_16_i16.c
index 8dc8ef79d23..0da1cc42f85 100644
--- a/libgfortran/generated/maxloc1_16_i16.c
+++ b/libgfortran/generated/maxloc1_16_i16.c
@@ -129,7 +129,7 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_i2.c b/libgfortran/generated/maxloc1_16_i2.c
index d1325729996..08d2dc19a5d 100644
--- a/libgfortran/generated/maxloc1_16_i2.c
+++ b/libgfortran/generated/maxloc1_16_i2.c
@@ -129,7 +129,7 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_i4.c b/libgfortran/generated/maxloc1_16_i4.c
index 995b1e44f03..4b8a19ef21d 100644
--- a/libgfortran/generated/maxloc1_16_i4.c
+++ b/libgfortran/generated/maxloc1_16_i4.c
@@ -129,7 +129,7 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_i8.c b/libgfortran/generated/maxloc1_16_i8.c
index 5376bcb3213..292dad31693 100644
--- a/libgfortran/generated/maxloc1_16_i8.c
+++ b/libgfortran/generated/maxloc1_16_i8.c
@@ -129,7 +129,7 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_r10.c b/libgfortran/generated/maxloc1_16_r10.c
index a23655da947..090e9a9d409 100644
--- a/libgfortran/generated/maxloc1_16_r10.c
+++ b/libgfortran/generated/maxloc1_16_r10.c
@@ -129,7 +129,7 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_r16.c b/libgfortran/generated/maxloc1_16_r16.c
index 9e47498169f..a8fe92c85c3 100644
--- a/libgfortran/generated/maxloc1_16_r16.c
+++ b/libgfortran/generated/maxloc1_16_r16.c
@@ -129,7 +129,7 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_r4.c b/libgfortran/generated/maxloc1_16_r4.c
index a551aff9945..5c80034a186 100644
--- a/libgfortran/generated/maxloc1_16_r4.c
+++ b/libgfortran/generated/maxloc1_16_r4.c
@@ -129,7 +129,7 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_16_r8.c b/libgfortran/generated/maxloc1_16_r8.c
index 802ea09825f..3f9200ecd0a 100644
--- a/libgfortran/generated/maxloc1_16_r8.c
+++ b/libgfortran/generated/maxloc1_16_r8.c
@@ -129,7 +129,7 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_i1.c b/libgfortran/generated/maxloc1_4_i1.c
index 484cb0d4d45..90f529ac812 100644
--- a/libgfortran/generated/maxloc1_4_i1.c
+++ b/libgfortran/generated/maxloc1_4_i1.c
@@ -129,7 +129,7 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_i16.c b/libgfortran/generated/maxloc1_4_i16.c
index 353d4975505..1b4f3377535 100644
--- a/libgfortran/generated/maxloc1_4_i16.c
+++ b/libgfortran/generated/maxloc1_4_i16.c
@@ -129,7 +129,7 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_i2.c b/libgfortran/generated/maxloc1_4_i2.c
index 7342ac8e1ab..3898b6f3855 100644
--- a/libgfortran/generated/maxloc1_4_i2.c
+++ b/libgfortran/generated/maxloc1_4_i2.c
@@ -129,7 +129,7 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_i4.c b/libgfortran/generated/maxloc1_4_i4.c
index 12b978f9289..5fcb7545220 100644
--- a/libgfortran/generated/maxloc1_4_i4.c
+++ b/libgfortran/generated/maxloc1_4_i4.c
@@ -129,7 +129,7 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_i8.c b/libgfortran/generated/maxloc1_4_i8.c
index 4f5c6590bf0..b3b1caa1134 100644
--- a/libgfortran/generated/maxloc1_4_i8.c
+++ b/libgfortran/generated/maxloc1_4_i8.c
@@ -129,7 +129,7 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_r10.c b/libgfortran/generated/maxloc1_4_r10.c
index 5df2ca36bed..7e94e7b45bc 100644
--- a/libgfortran/generated/maxloc1_4_r10.c
+++ b/libgfortran/generated/maxloc1_4_r10.c
@@ -129,7 +129,7 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_r16.c b/libgfortran/generated/maxloc1_4_r16.c
index c556452a2fd..2793b6abcc6 100644
--- a/libgfortran/generated/maxloc1_4_r16.c
+++ b/libgfortran/generated/maxloc1_4_r16.c
@@ -129,7 +129,7 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_r4.c b/libgfortran/generated/maxloc1_4_r4.c
index fecd072b2e0..5292711e50b 100644
--- a/libgfortran/generated/maxloc1_4_r4.c
+++ b/libgfortran/generated/maxloc1_4_r4.c
@@ -129,7 +129,7 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_4_r8.c b/libgfortran/generated/maxloc1_4_r8.c
index a63fe367c85..312e5d0b8ca 100644
--- a/libgfortran/generated/maxloc1_4_r8.c
+++ b/libgfortran/generated/maxloc1_4_r8.c
@@ -129,7 +129,7 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_i1.c b/libgfortran/generated/maxloc1_8_i1.c
index d70c663128c..6e63c7eb61b 100644
--- a/libgfortran/generated/maxloc1_8_i1.c
+++ b/libgfortran/generated/maxloc1_8_i1.c
@@ -129,7 +129,7 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_i16.c b/libgfortran/generated/maxloc1_8_i16.c
index ce4afb12176..ea1fa93678e 100644
--- a/libgfortran/generated/maxloc1_8_i16.c
+++ b/libgfortran/generated/maxloc1_8_i16.c
@@ -129,7 +129,7 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_i2.c b/libgfortran/generated/maxloc1_8_i2.c
index 1bffde89c9b..21362a9d4af 100644
--- a/libgfortran/generated/maxloc1_8_i2.c
+++ b/libgfortran/generated/maxloc1_8_i2.c
@@ -129,7 +129,7 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_i4.c b/libgfortran/generated/maxloc1_8_i4.c
index 3abd6ab6e13..e0245e3f9b2 100644
--- a/libgfortran/generated/maxloc1_8_i4.c
+++ b/libgfortran/generated/maxloc1_8_i4.c
@@ -129,7 +129,7 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_i8.c b/libgfortran/generated/maxloc1_8_i8.c
index 57fcae0e48d..c5312c0a12f 100644
--- a/libgfortran/generated/maxloc1_8_i8.c
+++ b/libgfortran/generated/maxloc1_8_i8.c
@@ -129,7 +129,7 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_r10.c b/libgfortran/generated/maxloc1_8_r10.c
index ca8047e5cca..6459ecffc7a 100644
--- a/libgfortran/generated/maxloc1_8_r10.c
+++ b/libgfortran/generated/maxloc1_8_r10.c
@@ -129,7 +129,7 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_r16.c b/libgfortran/generated/maxloc1_8_r16.c
index 12ab6669898..62b9ddbdac8 100644
--- a/libgfortran/generated/maxloc1_8_r16.c
+++ b/libgfortran/generated/maxloc1_8_r16.c
@@ -129,7 +129,7 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_r4.c b/libgfortran/generated/maxloc1_8_r4.c
index 479660e6e42..97ef902d9e4 100644
--- a/libgfortran/generated/maxloc1_8_r4.c
+++ b/libgfortran/generated/maxloc1_8_r4.c
@@ -129,7 +129,7 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxloc1_8_r8.c b/libgfortran/generated/maxloc1_8_r8.c
index 6f47a15415d..e8cb0678f25 100644
--- a/libgfortran/generated/maxloc1_8_r8.c
+++ b/libgfortran/generated/maxloc1_8_r8.c
@@ -129,7 +129,7 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_i1.c b/libgfortran/generated/maxval_i1.c
index cb429016ce4..ca6222bd63f 100644
--- a/libgfortran/generated/maxval_i1.c
+++ b/libgfortran/generated/maxval_i1.c
@@ -128,7 +128,7 @@ maxval_i1 (gfc_array_i1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_i16.c b/libgfortran/generated/maxval_i16.c
index 4f11635a0f6..56580b64d8f 100644
--- a/libgfortran/generated/maxval_i16.c
+++ b/libgfortran/generated/maxval_i16.c
@@ -128,7 +128,7 @@ maxval_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_i2.c b/libgfortran/generated/maxval_i2.c
index 8fb385688d8..7d39b2f9bf8 100644
--- a/libgfortran/generated/maxval_i2.c
+++ b/libgfortran/generated/maxval_i2.c
@@ -128,7 +128,7 @@ maxval_i2 (gfc_array_i2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_i4.c b/libgfortran/generated/maxval_i4.c
index c67d0cb6986..0acb6b3e3d7 100644
--- a/libgfortran/generated/maxval_i4.c
+++ b/libgfortran/generated/maxval_i4.c
@@ -128,7 +128,7 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_i8.c b/libgfortran/generated/maxval_i8.c
index b2f33ddde86..803a79f38d9 100644
--- a/libgfortran/generated/maxval_i8.c
+++ b/libgfortran/generated/maxval_i8.c
@@ -128,7 +128,7 @@ maxval_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_r10.c b/libgfortran/generated/maxval_r10.c
index 75c45f93a5a..6eb3ea76ed1 100644
--- a/libgfortran/generated/maxval_r10.c
+++ b/libgfortran/generated/maxval_r10.c
@@ -128,7 +128,7 @@ maxval_r10 (gfc_array_r10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_r16.c b/libgfortran/generated/maxval_r16.c
index 4ade432b297..32387f4e3c5 100644
--- a/libgfortran/generated/maxval_r16.c
+++ b/libgfortran/generated/maxval_r16.c
@@ -128,7 +128,7 @@ maxval_r16 (gfc_array_r16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_r4.c b/libgfortran/generated/maxval_r4.c
index 567ad3b4008..c4fe4df3631 100644
--- a/libgfortran/generated/maxval_r4.c
+++ b/libgfortran/generated/maxval_r4.c
@@ -128,7 +128,7 @@ maxval_r4 (gfc_array_r4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/maxval_r8.c b/libgfortran/generated/maxval_r8.c
index 196021cf0c2..bffc2b7681e 100644
--- a/libgfortran/generated/maxval_r8.c
+++ b/libgfortran/generated/maxval_r8.c
@@ -128,7 +128,7 @@ maxval_r8 (gfc_array_r8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_i1.c b/libgfortran/generated/minloc1_16_i1.c
index a287fee23c0..2cdfd0f5842 100644
--- a/libgfortran/generated/minloc1_16_i1.c
+++ b/libgfortran/generated/minloc1_16_i1.c
@@ -129,7 +129,7 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_i16.c b/libgfortran/generated/minloc1_16_i16.c
index 852118813b6..9e4f82a5fd9 100644
--- a/libgfortran/generated/minloc1_16_i16.c
+++ b/libgfortran/generated/minloc1_16_i16.c
@@ -129,7 +129,7 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_i2.c b/libgfortran/generated/minloc1_16_i2.c
index f7c951c7b40..5d55ed01f7d 100644
--- a/libgfortran/generated/minloc1_16_i2.c
+++ b/libgfortran/generated/minloc1_16_i2.c
@@ -129,7 +129,7 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_i4.c b/libgfortran/generated/minloc1_16_i4.c
index 98ec8996daf..3ee75aecd60 100644
--- a/libgfortran/generated/minloc1_16_i4.c
+++ b/libgfortran/generated/minloc1_16_i4.c
@@ -129,7 +129,7 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_i8.c b/libgfortran/generated/minloc1_16_i8.c
index ab0a296b7af..847aa5184b8 100644
--- a/libgfortran/generated/minloc1_16_i8.c
+++ b/libgfortran/generated/minloc1_16_i8.c
@@ -129,7 +129,7 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_r10.c b/libgfortran/generated/minloc1_16_r10.c
index 5fe952cebc4..cf6f7cf517d 100644
--- a/libgfortran/generated/minloc1_16_r10.c
+++ b/libgfortran/generated/minloc1_16_r10.c
@@ -129,7 +129,7 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_r16.c b/libgfortran/generated/minloc1_16_r16.c
index d68cc7aab36..ebe6c6dd4a4 100644
--- a/libgfortran/generated/minloc1_16_r16.c
+++ b/libgfortran/generated/minloc1_16_r16.c
@@ -129,7 +129,7 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_r4.c b/libgfortran/generated/minloc1_16_r4.c
index 8207441618e..7b335a93573 100644
--- a/libgfortran/generated/minloc1_16_r4.c
+++ b/libgfortran/generated/minloc1_16_r4.c
@@ -129,7 +129,7 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_16_r8.c b/libgfortran/generated/minloc1_16_r8.c
index 72bfcce6488..a410a278387 100644
--- a/libgfortran/generated/minloc1_16_r8.c
+++ b/libgfortran/generated/minloc1_16_r8.c
@@ -129,7 +129,7 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_i1.c b/libgfortran/generated/minloc1_4_i1.c
index 631645f6b08..21448ac187c 100644
--- a/libgfortran/generated/minloc1_4_i1.c
+++ b/libgfortran/generated/minloc1_4_i1.c
@@ -129,7 +129,7 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_i16.c b/libgfortran/generated/minloc1_4_i16.c
index 2096589cfec..7851ba8a579 100644
--- a/libgfortran/generated/minloc1_4_i16.c
+++ b/libgfortran/generated/minloc1_4_i16.c
@@ -129,7 +129,7 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_i2.c b/libgfortran/generated/minloc1_4_i2.c
index 2bdedd82d3a..265472dbd2a 100644
--- a/libgfortran/generated/minloc1_4_i2.c
+++ b/libgfortran/generated/minloc1_4_i2.c
@@ -129,7 +129,7 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_i4.c b/libgfortran/generated/minloc1_4_i4.c
index 513b0cf8ec6..794f25e7f06 100644
--- a/libgfortran/generated/minloc1_4_i4.c
+++ b/libgfortran/generated/minloc1_4_i4.c
@@ -129,7 +129,7 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_i8.c b/libgfortran/generated/minloc1_4_i8.c
index c15914bc7b0..05e4a6540ef 100644
--- a/libgfortran/generated/minloc1_4_i8.c
+++ b/libgfortran/generated/minloc1_4_i8.c
@@ -129,7 +129,7 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_r10.c b/libgfortran/generated/minloc1_4_r10.c
index f60262ac42a..8f5018f012e 100644
--- a/libgfortran/generated/minloc1_4_r10.c
+++ b/libgfortran/generated/minloc1_4_r10.c
@@ -129,7 +129,7 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_r16.c b/libgfortran/generated/minloc1_4_r16.c
index e0c1e6b262d..42f428a49f7 100644
--- a/libgfortran/generated/minloc1_4_r16.c
+++ b/libgfortran/generated/minloc1_4_r16.c
@@ -129,7 +129,7 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_r4.c b/libgfortran/generated/minloc1_4_r4.c
index 31104510b28..d05ac79fb1b 100644
--- a/libgfortran/generated/minloc1_4_r4.c
+++ b/libgfortran/generated/minloc1_4_r4.c
@@ -129,7 +129,7 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_4_r8.c b/libgfortran/generated/minloc1_4_r8.c
index 4888dd72f3d..372e592daab 100644
--- a/libgfortran/generated/minloc1_4_r8.c
+++ b/libgfortran/generated/minloc1_4_r8.c
@@ -129,7 +129,7 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_i1.c b/libgfortran/generated/minloc1_8_i1.c
index 953460d33be..c71191f17f4 100644
--- a/libgfortran/generated/minloc1_8_i1.c
+++ b/libgfortran/generated/minloc1_8_i1.c
@@ -129,7 +129,7 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_i16.c b/libgfortran/generated/minloc1_8_i16.c
index 9ac6de055b8..1939ab3582f 100644
--- a/libgfortran/generated/minloc1_8_i16.c
+++ b/libgfortran/generated/minloc1_8_i16.c
@@ -129,7 +129,7 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_i2.c b/libgfortran/generated/minloc1_8_i2.c
index 7f4db409831..d869537e668 100644
--- a/libgfortran/generated/minloc1_8_i2.c
+++ b/libgfortran/generated/minloc1_8_i2.c
@@ -129,7 +129,7 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_i4.c b/libgfortran/generated/minloc1_8_i4.c
index cb68b4b78f5..2ee384f24e3 100644
--- a/libgfortran/generated/minloc1_8_i4.c
+++ b/libgfortran/generated/minloc1_8_i4.c
@@ -129,7 +129,7 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_i8.c b/libgfortran/generated/minloc1_8_i8.c
index e6eb5c3dc03..ae164cf8e42 100644
--- a/libgfortran/generated/minloc1_8_i8.c
+++ b/libgfortran/generated/minloc1_8_i8.c
@@ -129,7 +129,7 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_r10.c b/libgfortran/generated/minloc1_8_r10.c
index c78b092d130..383cb884b1a 100644
--- a/libgfortran/generated/minloc1_8_r10.c
+++ b/libgfortran/generated/minloc1_8_r10.c
@@ -129,7 +129,7 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_r16.c b/libgfortran/generated/minloc1_8_r16.c
index ecd80313ca5..3f4d4702c73 100644
--- a/libgfortran/generated/minloc1_8_r16.c
+++ b/libgfortran/generated/minloc1_8_r16.c
@@ -129,7 +129,7 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_r4.c b/libgfortran/generated/minloc1_8_r4.c
index 053ef6f7e9a..f72cbb2ca05 100644
--- a/libgfortran/generated/minloc1_8_r4.c
+++ b/libgfortran/generated/minloc1_8_r4.c
@@ -129,7 +129,7 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minloc1_8_r8.c b/libgfortran/generated/minloc1_8_r8.c
index ac06ec97933..1ed4486c623 100644
--- a/libgfortran/generated/minloc1_8_r8.c
+++ b/libgfortran/generated/minloc1_8_r8.c
@@ -129,7 +129,7 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_i1.c b/libgfortran/generated/minval_i1.c
index 93276f977e6..9b15d0f3f2b 100644
--- a/libgfortran/generated/minval_i1.c
+++ b/libgfortran/generated/minval_i1.c
@@ -128,7 +128,7 @@ minval_i1 (gfc_array_i1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_i16.c b/libgfortran/generated/minval_i16.c
index a5ff46e9a38..1aea301427c 100644
--- a/libgfortran/generated/minval_i16.c
+++ b/libgfortran/generated/minval_i16.c
@@ -128,7 +128,7 @@ minval_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_i2.c b/libgfortran/generated/minval_i2.c
index b4e8dd55667..3de9f023b5b 100644
--- a/libgfortran/generated/minval_i2.c
+++ b/libgfortran/generated/minval_i2.c
@@ -128,7 +128,7 @@ minval_i2 (gfc_array_i2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_i4.c b/libgfortran/generated/minval_i4.c
index 3f9e0682b76..3023bc214a1 100644
--- a/libgfortran/generated/minval_i4.c
+++ b/libgfortran/generated/minval_i4.c
@@ -128,7 +128,7 @@ minval_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_i8.c b/libgfortran/generated/minval_i8.c
index 725093e21ed..32fb133ce1b 100644
--- a/libgfortran/generated/minval_i8.c
+++ b/libgfortran/generated/minval_i8.c
@@ -128,7 +128,7 @@ minval_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_r10.c b/libgfortran/generated/minval_r10.c
index dacbb709400..033288d94df 100644
--- a/libgfortran/generated/minval_r10.c
+++ b/libgfortran/generated/minval_r10.c
@@ -128,7 +128,7 @@ minval_r10 (gfc_array_r10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_r16.c b/libgfortran/generated/minval_r16.c
index 93289ba0974..35d2bac110d 100644
--- a/libgfortran/generated/minval_r16.c
+++ b/libgfortran/generated/minval_r16.c
@@ -128,7 +128,7 @@ minval_r16 (gfc_array_r16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_r4.c b/libgfortran/generated/minval_r4.c
index 4d5b8b0cfb3..61502b0c2ae 100644
--- a/libgfortran/generated/minval_r4.c
+++ b/libgfortran/generated/minval_r4.c
@@ -128,7 +128,7 @@ minval_r4 (gfc_array_r4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/minval_r8.c b/libgfortran/generated/minval_r8.c
index 7b0fdb88fb7..8884d93b9b8 100644
--- a/libgfortran/generated/minval_r8.c
+++ b/libgfortran/generated/minval_r8.c
@@ -128,7 +128,7 @@ minval_r8 (gfc_array_r8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_c10.c b/libgfortran/generated/product_c10.c
index 125c44d1e0e..4aa057de4e7 100644
--- a/libgfortran/generated/product_c10.c
+++ b/libgfortran/generated/product_c10.c
@@ -128,7 +128,7 @@ product_c10 (gfc_array_c10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_c16.c b/libgfortran/generated/product_c16.c
index 6a64e656209..aa69fa86fbf 100644
--- a/libgfortran/generated/product_c16.c
+++ b/libgfortran/generated/product_c16.c
@@ -128,7 +128,7 @@ product_c16 (gfc_array_c16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_c4.c b/libgfortran/generated/product_c4.c
index 9c092eb4670..145f41f336d 100644
--- a/libgfortran/generated/product_c4.c
+++ b/libgfortran/generated/product_c4.c
@@ -128,7 +128,7 @@ product_c4 (gfc_array_c4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_c8.c b/libgfortran/generated/product_c8.c
index a6b3c3db12b..7c16b6425f4 100644
--- a/libgfortran/generated/product_c8.c
+++ b/libgfortran/generated/product_c8.c
@@ -128,7 +128,7 @@ product_c8 (gfc_array_c8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_i1.c b/libgfortran/generated/product_i1.c
index 96c4f9c45d6..e087a0621f0 100644
--- a/libgfortran/generated/product_i1.c
+++ b/libgfortran/generated/product_i1.c
@@ -128,7 +128,7 @@ product_i1 (gfc_array_i1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_i16.c b/libgfortran/generated/product_i16.c
index bae7554a75b..9d224f39f9f 100644
--- a/libgfortran/generated/product_i16.c
+++ b/libgfortran/generated/product_i16.c
@@ -128,7 +128,7 @@ product_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_i2.c b/libgfortran/generated/product_i2.c
index 5546f59e389..f025729fe84 100644
--- a/libgfortran/generated/product_i2.c
+++ b/libgfortran/generated/product_i2.c
@@ -128,7 +128,7 @@ product_i2 (gfc_array_i2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_i4.c b/libgfortran/generated/product_i4.c
index acb2f9780dc..3452923b06a 100644
--- a/libgfortran/generated/product_i4.c
+++ b/libgfortran/generated/product_i4.c
@@ -128,7 +128,7 @@ product_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_i8.c b/libgfortran/generated/product_i8.c
index bb2e63147fa..44b0163ca87 100644
--- a/libgfortran/generated/product_i8.c
+++ b/libgfortran/generated/product_i8.c
@@ -128,7 +128,7 @@ product_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_r10.c b/libgfortran/generated/product_r10.c
index ae86e720497..b93929d95db 100644
--- a/libgfortran/generated/product_r10.c
+++ b/libgfortran/generated/product_r10.c
@@ -128,7 +128,7 @@ product_r10 (gfc_array_r10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_r16.c b/libgfortran/generated/product_r16.c
index 71bc8cc0fdb..6348cc50e1d 100644
--- a/libgfortran/generated/product_r16.c
+++ b/libgfortran/generated/product_r16.c
@@ -128,7 +128,7 @@ product_r16 (gfc_array_r16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_r4.c b/libgfortran/generated/product_r4.c
index 142b7c3ddf8..a1c0b521be5 100644
--- a/libgfortran/generated/product_r4.c
+++ b/libgfortran/generated/product_r4.c
@@ -128,7 +128,7 @@ product_r4 (gfc_array_r4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/product_r8.c b/libgfortran/generated/product_r8.c
index 8e50e01d2af..b56fcfb23e4 100644
--- a/libgfortran/generated/product_r8.c
+++ b/libgfortran/generated/product_r8.c
@@ -128,7 +128,7 @@ product_r8 (gfc_array_r8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_c10.c b/libgfortran/generated/sum_c10.c
index f254190d4c0..ae654dc9aae 100644
--- a/libgfortran/generated/sum_c10.c
+++ b/libgfortran/generated/sum_c10.c
@@ -128,7 +128,7 @@ sum_c10 (gfc_array_c10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_c16.c b/libgfortran/generated/sum_c16.c
index 5505647ff1f..7829b5594f7 100644
--- a/libgfortran/generated/sum_c16.c
+++ b/libgfortran/generated/sum_c16.c
@@ -128,7 +128,7 @@ sum_c16 (gfc_array_c16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_c4.c b/libgfortran/generated/sum_c4.c
index 99a6e35207c..76f67afab26 100644
--- a/libgfortran/generated/sum_c4.c
+++ b/libgfortran/generated/sum_c4.c
@@ -128,7 +128,7 @@ sum_c4 (gfc_array_c4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_c8.c b/libgfortran/generated/sum_c8.c
index 505050761da..4673357e61f 100644
--- a/libgfortran/generated/sum_c8.c
+++ b/libgfortran/generated/sum_c8.c
@@ -128,7 +128,7 @@ sum_c8 (gfc_array_c8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_i1.c b/libgfortran/generated/sum_i1.c
index d839b0fee68..e661f5e876a 100644
--- a/libgfortran/generated/sum_i1.c
+++ b/libgfortran/generated/sum_i1.c
@@ -128,7 +128,7 @@ sum_i1 (gfc_array_i1 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_i16.c b/libgfortran/generated/sum_i16.c
index d02a1714695..cff59c01c47 100644
--- a/libgfortran/generated/sum_i16.c
+++ b/libgfortran/generated/sum_i16.c
@@ -128,7 +128,7 @@ sum_i16 (gfc_array_i16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_i2.c b/libgfortran/generated/sum_i2.c
index d5b16dd01a9..1cf463e36f9 100644
--- a/libgfortran/generated/sum_i2.c
+++ b/libgfortran/generated/sum_i2.c
@@ -128,7 +128,7 @@ sum_i2 (gfc_array_i2 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_i4.c b/libgfortran/generated/sum_i4.c
index db0ad0e4a63..4c86b524034 100644
--- a/libgfortran/generated/sum_i4.c
+++ b/libgfortran/generated/sum_i4.c
@@ -128,7 +128,7 @@ sum_i4 (gfc_array_i4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_i8.c b/libgfortran/generated/sum_i8.c
index f872bd4dc3a..4b360242e07 100644
--- a/libgfortran/generated/sum_i8.c
+++ b/libgfortran/generated/sum_i8.c
@@ -128,7 +128,7 @@ sum_i8 (gfc_array_i8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_r10.c b/libgfortran/generated/sum_r10.c
index a1bf9facf54..7df3ef9a523 100644
--- a/libgfortran/generated/sum_r10.c
+++ b/libgfortran/generated/sum_r10.c
@@ -128,7 +128,7 @@ sum_r10 (gfc_array_r10 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_r16.c b/libgfortran/generated/sum_r16.c
index d38170230ef..ce0183b6dbc 100644
--- a/libgfortran/generated/sum_r16.c
+++ b/libgfortran/generated/sum_r16.c
@@ -128,7 +128,7 @@ sum_r16 (gfc_array_r16 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_r4.c b/libgfortran/generated/sum_r4.c
index 53787f959df..ab9335f9bd3 100644
--- a/libgfortran/generated/sum_r4.c
+++ b/libgfortran/generated/sum_r4.c
@@ -128,7 +128,7 @@ sum_r4 (gfc_array_r4 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/generated/sum_r8.c b/libgfortran/generated/sum_r8.c
index c4ab3ca8adf..d10a86ebd0e 100644
--- a/libgfortran/generated/sum_r8.c
+++ b/libgfortran/generated/sum_r8.c
@@ -128,7 +128,7 @@ sum_r8 (gfc_array_r8 * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/io/write_float.def b/libgfortran/io/write_float.def
index 3709b206620..b72cf9f5665 100644
--- a/libgfortran/io/write_float.def
+++ b/libgfortran/io/write_float.def
@@ -1020,7 +1020,7 @@ write_float (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
{
#if defined(HAVE_GFC_REAL_16) || __LDBL_DIG__ > 18
-# define MIN_FIELD_WIDTH 46
+# define MIN_FIELD_WIDTH 48
#else
# define MIN_FIELD_WIDTH 31
#endif
diff --git a/libgfortran/m4/ifunction.m4 b/libgfortran/m4/ifunction.m4
index 3d425e0108e..72b05f45e96 100644
--- a/libgfortran/m4/ifunction.m4
+++ b/libgfortran/m4/ifunction.m4
@@ -116,7 +116,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
diff --git a/libgfortran/m4/ifunction_logical.m4 b/libgfortran/m4/ifunction_logical.m4
index d1d2dd09c44..e72f1d8a8f7 100644
--- a/libgfortran/m4/ifunction_logical.m4
+++ b/libgfortran/m4/ifunction_logical.m4
@@ -130,7 +130,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;