re PR fortran/34861 (ICE in function with entry (and result?))
2008-01-20 Paul Thomas <pault@gcc.gnu.org> PR fortran/34861 * resolve.c (resolve_entries): Do not do an array bounds check if the result symbols are the same. PR fortran/34854 * module.c (read_module) : Hide the symtree of the previous version of the symbol if this symbol is renamed. 2008-01-20 Paul Thomas <pault@gcc.gnu.org> PR fortran/34784 * gfortran.dg/mapping_2.f90: Correct ubound expression for h4. PR fortran/34861 * gfortran.dg/entry_array_specs_3.f90: New test. PR fortran/34854 * gfortran.dg/use_rename_1.f90: New test. From-SVN: r131679
This commit is contained in:
parent
bdf8f544b6
commit
f5d67ede42
@ -1,3 +1,13 @@
|
||||
2008-01-20 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/34861
|
||||
* resolve.c (resolve_entries): Do not do an array bounds check
|
||||
if the result symbols are the same.
|
||||
|
||||
PR fortran/34854
|
||||
* module.c (read_module) : Hide the symtree of the previous
|
||||
version of the symbol if this symbol is renamed.
|
||||
|
||||
2008-01-20 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/34784
|
||||
|
@ -3735,7 +3735,7 @@ read_module (void)
|
||||
|
||||
/* Make symtree inaccessible by renaming if the symbol has
|
||||
been added by a USE statement without an ONLY(11.3.2). */
|
||||
if (st && only_flag
|
||||
if (st && (only_flag || info->u.rsym.renamed)
|
||||
&& !st->n.sym->attr.use_only
|
||||
&& !st->n.sym->attr.use_rename
|
||||
&& st->n.sym->module
|
||||
|
@ -496,7 +496,8 @@ resolve_entries (gfc_namespace *ns)
|
||||
|| (el->sym->result->attr.pointer
|
||||
!= ns->entries->sym->result->attr.pointer))
|
||||
break;
|
||||
else if (as && fas && gfc_compare_array_spec (as, fas) == 0)
|
||||
else if (as && fas && ns->entries->sym->result != el->sym->result
|
||||
&& gfc_compare_array_spec (as, fas) == 0)
|
||||
gfc_error ("Function %s at %L has entries with mismatched "
|
||||
"array specifications", ns->entries->sym->name,
|
||||
&ns->entries->sym->declared_at);
|
||||
|
@ -1,3 +1,14 @@
|
||||
2008-01-20 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/34784
|
||||
* gfortran.dg/mapping_2.f90: Correct ubound expression for h4.
|
||||
|
||||
PR fortran/34861
|
||||
* gfortran.dg/entry_array_specs_3.f90: New test.
|
||||
|
||||
PR fortran/34854
|
||||
* gfortran.dg/use_rename_1.f90: New test.
|
||||
|
||||
2008-01-20 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/34784
|
||||
|
16
gcc/testsuite/gfortran.dg/entry_array_specs_3.f90
Normal file
16
gcc/testsuite/gfortran.dg/entry_array_specs_3.f90
Normal file
@ -0,0 +1,16 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/34861, in which the test of conformity of the result array bounds
|
||||
! would barf because they are not known at compile time in this case.
|
||||
!
|
||||
! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
|
||||
!
|
||||
FUNCTION I_IMFUD0 ( IDA2 , NDS4, NDS3) RESULT(I_IMFUDP)
|
||||
INTEGER :: NDS4, NDS3
|
||||
INTEGER :: IDA2(5,NDS4,NDS3,2)
|
||||
INTEGER :: I_IMFUDP(SIZE(IDA2,1), SIZE(IDA2,2), SIZE(IDA2,3), SIZE(IDA2,4))
|
||||
ENTRY I_IMFUDX (NDS4, NDS3, IDA2) RESULT(I_IMFUDP)
|
||||
ENTRY I_IMFUDY (NDS3, NDS4, IDA2) RESULT(I_IMFUDP)
|
||||
ENTRY I_IMFUDZ (NDS3, IDA2, NDS4) RESULT(I_IMFUDP)
|
||||
I_IMFUDP = 1-IDA2(:,:,:,::NDS4-NDS3)
|
||||
END FUNCTION
|
@ -11,7 +11,7 @@ module test
|
||||
function my_string(x)
|
||||
integer i
|
||||
real, intent(in) :: x(:)
|
||||
character(0) h4(1:minval([(1,i=1,0)],1))
|
||||
character(0) h4(1:minval([(i,i=30,32)],15))
|
||||
character(0) sv1(size(x,1):size(h4))
|
||||
character(0) sv2(2*lbound(sv1,1):size(h4))
|
||||
character(lbound(sv2,1)-3) my_string
|
||||
|
27
gcc/testsuite/gfortran.dg/use_rename_1.f90
Normal file
27
gcc/testsuite/gfortran.dg/use_rename_1.f90
Normal file
@ -0,0 +1,27 @@
|
||||
! { dg-do compile }
|
||||
! Tests the fix for PR34854, in which the second of the two subroutines would fail
|
||||
! because the the type declaration of nmoltype_phase would incorrectly conflict
|
||||
! with the type given to the module variable of the same name.
|
||||
!
|
||||
! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
!
|
||||
module common_init_conf
|
||||
integer, dimension(2) :: Nmoltype_phase
|
||||
end module common_init_conf
|
||||
|
||||
subroutine read_initial_config_nml1()
|
||||
use common_init_conf, nmoltype_phase_com => nmoltype_phase
|
||||
use common_init_conf
|
||||
implicit none
|
||||
integer :: nmoltype_phase
|
||||
namelist /confNmoltypePhase/ nmoltype_phase
|
||||
end subroutine read_initial_config_nml1
|
||||
|
||||
subroutine read_initial_config_nml2()
|
||||
use common_init_conf
|
||||
use common_init_conf, nmoltype_phase_com => nmoltype_phase
|
||||
implicit none
|
||||
integer :: nmoltype_phase
|
||||
namelist /confNmoltypePhase/ nmoltype_phase
|
||||
end subroutine read_initial_config_nml2
|
||||
! { dg-final { cleanup-modules "common_init_conf" } }
|
Loading…
Reference in New Issue
Block a user