diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-14 07:03:09 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-14 07:03:09 +0000 |
commit | d329a134cd2455f54f873318532f14938116b8b6 (patch) | |
tree | 2e790b36b33b55ae6f7b6bdff6fbf559fce5df4f | |
parent | 9f9551c1ebf9d9421d8496c92d0f4a8c7b7571b5 (diff) | |
download | gcc-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
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; |