aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2013-02-15 09:50:37 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2013-02-15 09:50:37 +0100
commitfab99ea2d290e785b8554a384bb4334fcc7b7591 (patch)
tree44c52186888dc70bbeadc20f1ac352ed992b3ffc /gcc
parent576fe41adc751a29ba41b01cce29baec4bb481b3 (diff)
downloadgcc-fab99ea2d290e785b8554a384bb4334fcc7b7591.zip
gcc-fab99ea2d290e785b8554a384bb4334fcc7b7591.tar.gz
gcc-fab99ea2d290e785b8554a384bb4334fcc7b7591.tar.bz2
re PR fortran/53818 (-finit-local-zero -fno-automatic: Function result cannot have initializer)
2013-02-15 Tobias Burnus <burnus@net-b.de> PR fortran/53818 * resolve.c (apply_default_init_local): Don't create an initializer for a result variable. 2013-02-15 Tobias Burnus <burnus@net-b.de> PR fortran/53818 * gfortran.dg/init_flag_11.f90: New. From-SVN: r196073
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/init_flag_11.f9011
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1375d0e..fff83c4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53818
+ * resolve.c (apply_default_init_local): Don't create an
+ initializer for a result variable.
+
2013-02-14 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/56224
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index b5faaca..a29fef9 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -11031,9 +11031,10 @@ apply_default_init_local (gfc_symbol *sym)
/* For saved variables, we don't want to add an initializer at function
entry, so we just add a static initializer. Note that automatic variables
- are stack allocated even with -fno-automatic. */
+ are stack allocated even with -fno-automatic; we have also to exclude
+ result variable, which are also nonstatic. */
if (sym->attr.save || sym->ns->save_all
- || (gfc_option.flag_max_stack_var_size == 0
+ || (gfc_option.flag_max_stack_var_size == 0 && !sym->attr.result
&& (!sym->attr.dimension || !is_non_constant_shape_array (sym))))
{
/* Don't clobber an existing initializer! */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fafc6f8..077f536 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53818
+ * gfortran.dg/init_flag_11.f90: New.
+
2013-02-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gcc.dg/debug/dwarf2/pr53948.c: Allow for more whitespace.
diff --git a/gcc/testsuite/gfortran.dg/init_flag_11.f90 b/gcc/testsuite/gfortran.dg/init_flag_11.f90
new file mode 100644
index 0000000..7a5239f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/init_flag_11.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-flags "-finit-local-zero -fno-automatic"
+!
+! PR fortran/53818
+!
+! Contributed by John Moyard
+!
+logical function testing(date1, date2) result(test)
+ integer date1, date2
+ test = ( (date1 < date2) .or. ( date1==date2 ))
+end function testing