aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2018-09-21 17:26:23 +0000
committerPaul Thomas <pault@gcc.gnu.org>2018-09-21 17:26:23 +0000
commitfd876246ee8a5aabb710673f7a8bc49b7c15fe84 (patch)
treed39b0852443d85292d6513518286b03d2d484a1a /gcc/fortran
parentd4accef391a4aa4c10daeef79c7103fae96a97ba (diff)
downloadgcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.zip
gcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.tar.gz
gcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.tar.bz2
re PR fortran/87359 (pointer being freed was not allocated)
2018-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/87359 * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc components if must_finalize is set for expr3. 2018-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/87359 * gfortran.dg/finalize_33.f90 : New test. From-SVN: r264485
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-stmt.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1f62249..0d8797e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-21 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/87359
+ * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc
+ components if must_finalize is set for expr3.
+
2018-09-21 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 92d9c376..833c6c5 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -5998,7 +5998,8 @@ gfc_trans_allocate (gfc_code * code)
if ((code->expr3->ts.type == BT_DERIVED
|| code->expr3->ts.type == BT_CLASS)
&& (code->expr3->expr_type != EXPR_VARIABLE || temp_obj_created)
- && code->expr3->ts.u.derived->attr.alloc_comp)
+ && code->expr3->ts.u.derived->attr.alloc_comp
+ && !code->expr3->must_finalize)
{
tmp = gfc_deallocate_alloc_comp (code->expr3->ts.u.derived,
expr3, code->expr3->rank);