aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/symbol.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-09-15 17:42:01 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2012-09-15 17:42:01 +0200
commitfd2805e11b7018a148a4f87201b4d85344b5aad4 (patch)
tree05e97776b1fe54ef1d015ca3c6f07b279078ff83 /gcc/fortran/symbol.c
parent8385420c4f45090a3393557783d8c7c73ef9a9b7 (diff)
downloadgcc-fd2805e11b7018a148a4f87201b4d85344b5aad4.zip
gcc-fd2805e11b7018a148a4f87201b4d85344b5aad4.tar.gz
gcc-fd2805e11b7018a148a4f87201b4d85344b5aad4.tar.bz2
match.c (lock_unlock_statement, [...]): Fix potential double freeing.
2012-09-15 Tobias Burnus <burnus@net-b.de> * match.c (lock_unlock_statement, sync_statement): Fix potential double freeing. (sync_statement): Remove unreachable code. * simplify.c (gfc_simplify_bessel_n2): Avoid double freeing. (gfc_simplify_repeat): Remove bogus code. * target-memory.h (gfc_target_encode_expr): Update prototype. * target-memory.c (gfc_target_encode_expr, encode_array, encode_derived): Return unsigned HOST_WIDE_INT. (gfc_target_interpret_expr): Add assert. (gfc_merge_initializers): Fix "== 0" check for mpz_t. * symbol.c (gfc_get_typebound_proc): Add assert. (gfc_merge_initializers): Remove unreachable check. From-SVN: r191343
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r--gcc/fortran/symbol.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 1f4a735..d68208d 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -4846,7 +4846,9 @@ gfc_get_typebound_proc (gfc_typebound_proc *tb0)
gfc_symbol*
gfc_get_derived_super_type (gfc_symbol* derived)
{
- if (derived && derived->attr.generic)
+ gcc_assert (derived);
+
+ if (derived->attr.generic)
derived = gfc_find_dt_in_generic (derived);
if (!derived->attr.extension)
@@ -4968,7 +4970,7 @@ gfc_find_dt_in_generic (gfc_symbol *sym)
return sym;
if (sym->attr.generic)
- for (intr = (sym ? sym->generic : NULL); intr; intr = intr->next)
+ for (intr = sym->generic; intr; intr = intr->next)
if (intr->sym->attr.flavor == FL_DERIVED)
break;
return intr ? intr->sym : NULL;