diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-11-16 14:47:31 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-11-16 14:47:31 +0000 |
commit | 06bcd7510e792c17a6a5354c612cf288b37a08c4 (patch) | |
tree | 727b197952b036bc87e12eea803c0341debe75b2 /gcc/fortran/trans-stmt.c | |
parent | 99739a3e63eb906c77b8acdb76d4f40485eb56fe (diff) | |
download | gcc-06bcd7510e792c17a6a5354c612cf288b37a08c4.tar.gz |
re PR fortran/34008 (ICE in gfc_trans_call, at fortran/trans-stmt.c:389 on elemental assignment)
2007-11-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34008
* trans-stmt.c (gfc_conv_elemental_dependencies): Add check for
INTENT_INOUT as well as INTENT_OUT.
(gfc_trans_call): Remove redundant gcc_asserts in dependency
check.
2007-11-16 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34008
* gfortran.dg/interface_assignment_3.f90.
From-SVN: r130232
Diffstat (limited to 'gcc/fortran/trans-stmt.c')
-rw-r--r-- | gcc/fortran/trans-stmt.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index cbb15a5ce45..ee176dcb75d 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -246,8 +246,9 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, fsym = formal ? formal->sym : NULL; if (e->expr_type == EXPR_VARIABLE && e->rank && fsym - && fsym->attr.intent == INTENT_OUT - && gfc_check_fncall_dependency (e, INTENT_OUT, sym, arg0)) + && fsym->attr.intent != INTENT_IN + && gfc_check_fncall_dependency (e, fsym->attr.intent, + sym, arg0)) { /* Make a local loopinfo for the temporary creation, so that none of the other ss->info's have to be renormalized. */ @@ -380,14 +381,11 @@ gfc_trans_call (gfc_code * code, bool dependency_check) gfc_copy_loopinfo_to_se (&loopse, &loop); loopse.ss = ss; - /* For operator assignment, we need to do dependency checking. - We also check the intent of the parameters. */ + /* For operator assignment, do dependency checking. */ if (dependency_check) { gfc_symbol *sym; sym = code->resolved_sym; - gcc_assert (sym->formal->sym->attr.intent == INTENT_OUT); - gcc_assert (sym->formal->next->sym->attr.intent == INTENT_IN); gfc_conv_elemental_dependencies (&se, &loopse, sym, code->ext.actual); } |