summaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-stmt.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-11-16 14:47:31 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-11-16 14:47:31 +0000
commit06bcd7510e792c17a6a5354c612cf288b37a08c4 (patch)
tree727b197952b036bc87e12eea803c0341debe75b2 /gcc/fortran/trans-stmt.c
parent99739a3e63eb906c77b8acdb76d4f40485eb56fe (diff)
downloadgcc-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.c10
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);
}