From eb74e79b1b2bc2d2d244c8c84a7c7ef293686546 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Sun, 10 May 2009 07:23:30 +0000 Subject: re PR fortran/38863 (WHERE with multiple elemental defined assignments gives wrong answer) 2009-05-10 Paul Thomas PR fortran/38863 * trans-expr.c (gfc_conv_operator_assign): Remove function. * trans.h : Remove prototype for gfc_conv_operator_assign. * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize derivde types with intent(out). (gfc_trans_call): Add mask, count1 and invert arguments. Add code to use mask for WHERE assignments. (gfc_trans_forall_1): Use new arguments for gfc_trans_call. (gfc_trans_where_assign): The gfc_symbol argument is replaced by the corresponding code. If this has a resolved_sym, then gfc_trans_call is called. The call to gfc_conv_operator_assign is removed. (gfc_trans_where_2): Change the last argument in the call to gfc_trans_where_assign. * trans-stmt.h : Modify prototype for gfc_trans_call. * trans.c (gfc_trans_code): Use new args for gfc_trans_call. 2009-05-10 Paul Thomas PR fortran/38863 * gfortran.dg/dependency_24.f90: New test. * gfortran.dg/dependency_23.f90: Clean up module files. From-SVN: r147329 --- gcc/fortran/trans.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gcc/fortran/trans.c') diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 54d40d7..28cb60a 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1111,16 +1111,19 @@ gfc_trans_code (gfc_code * code) if (code->resolved_isym && code->resolved_isym->id == GFC_ISYM_MVBITS) is_mvbits = true; - res = gfc_trans_call (code, is_mvbits); + res = gfc_trans_call (code, is_mvbits, NULL_TREE, + NULL_TREE, false); } break; case EXEC_CALL_PPC: - res = gfc_trans_call (code, false); + res = gfc_trans_call (code, false, NULL_TREE, + NULL_TREE, false); break; case EXEC_ASSIGN_CALL: - res = gfc_trans_call (code, true); + res = gfc_trans_call (code, true, NULL_TREE, + NULL_TREE, false); break; case EXEC_RETURN: -- cgit v1.1