diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-03-24 14:17:34 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-03-24 14:17:34 +0000 |
commit | cca643862ddb1f61f200b567c667576d39961fb2 (patch) | |
tree | 5d90c02adec7cdecf23098f0c6826986bf7eb6bb | |
parent | 6a661315c2e9581727c969320d335da82dbd4829 (diff) | |
download | gcc-cca643862ddb1f61f200b567c667576d39961fb2.zip gcc-cca643862ddb1f61f200b567c667576d39961fb2.tar.gz gcc-cca643862ddb1f61f200b567c667576d39961fb2.tar.bz2 |
re PR fortran/31215 (ICE on valid code with gfortran)
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result. Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.
PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly. Do not indirect formal pointer
functions since it is the function reference that is needed.
2007-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.
PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.
PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.
From-SVN: r123184
-rw-r--r-- | gcc/fortran/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ee5faa7..99c67fc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -7,7 +7,7 @@ can be used in a procedure interface, so simplify LEN in situ using its character length. - PR fortran/31219 + PR fortran/31209 PR fortran/31200 * trans-expr.c (gfc_conv_function_call): Do not use gfc_conv_expr_reference for actual pointer function with formal diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4b1505e..b5049ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,6 @@ 2007-03-24 Paul Thomas <pault@gcc.gnu.org> - PR fortran/31219 + PR fortran/31209 * gfortran.dg/pointer_function_actual_1.f90: New test. PR fortran/31200 diff --git a/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 b/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 index 91c340c..b3cb272 100644 --- a/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 +++ b/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90 @@ -1,5 +1,5 @@ ! { dg-do run } -! Tests the fix for PR31219, in which an ICE would result because +! Tests the fix for PR31209, in which an ICE would result because ! the reference to the pointer function f would be indirected, as ! if it were the result that is being passed. ! |