mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 18:31:48 +08:00
re PR fortran/31559 ([4.1 only] Assigning to an EXTERNAL leads to ICE)
2007-04-13 Tobias Burnus <burnus@net-b.de> PR fortran/31559 * primary.c (match_variable): External functions are no variables. 2007-04-13 Tobias Burnus <burnus@net-b.de> PR fortran/31559 * gfortran.dg/func_assign.f90: New test. From-SVN: r123793
This commit is contained in:
parent
c40ce8f320
commit
1f8e994ce9
@ -1,9 +1,15 @@
|
||||
2007-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31550
|
||||
* trans-types.c (copy_dt_decls_ifequal): Do not get pointer
|
||||
derived type components.
|
||||
|
||||
2007-04-13 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/31559
|
||||
* primary.c (match_variable): External functions
|
||||
are no variables.
|
||||
|
||||
2007-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31550
|
||||
* trans-types.c (copy_dt_decls_ifequal): Do not get pointer
|
||||
derived type components.
|
||||
|
||||
2007-04-13 Tobias Schlüter <tobi@gcc.gnu.org>
|
||||
|
||||
PR fortran/18937
|
||||
@ -106,18 +112,18 @@
|
||||
* parse.c (parse_progunit): Call it after parsing specification
|
||||
statements.
|
||||
|
||||
2007-04-05 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31483
|
||||
* trans-expr.c (gfc_conv_function_call): Give a dummy
|
||||
procedure the correct type if it has alternate returns.
|
||||
|
||||
2007-04-05 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31292
|
||||
* decl.c (gfc_match_modproc): Go up to the top of the namespace
|
||||
tree to find the module namespace for gfc_get_symbol.
|
||||
|
||||
2007-04-05 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31483
|
||||
* trans-expr.c (gfc_conv_function_call): Give a dummy
|
||||
procedure the correct type if it has alternate returns.
|
||||
|
||||
2007-04-05 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31292
|
||||
* decl.c (gfc_match_modproc): Go up to the top of the namespace
|
||||
tree to find the module namespace for gfc_get_symbol.
|
||||
|
||||
2007-04-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR fortran/31304
|
||||
|
@ -2420,7 +2420,8 @@ match_variable (gfc_expr **result, int equiv_flag, int host_flag)
|
||||
|
||||
case FL_PROCEDURE:
|
||||
/* Check for a nonrecursive function result */
|
||||
if (sym->attr.function && (sym->result == sym || sym->attr.entry))
|
||||
if (sym->attr.function && (sym->result == sym || sym->attr.entry)
|
||||
&& !sym->attr.external)
|
||||
{
|
||||
/* If a function result is a derived type, then the derived
|
||||
type may still have to be resolved. */
|
||||
|
@ -1,8 +1,13 @@
|
||||
2007-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31550
|
||||
* gfortran.dg/used_types_16.f90: New test.
|
||||
|
||||
2007-04-13 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/31559
|
||||
* gfortran.dg/func_assign.f90: New test.
|
||||
|
||||
2007-04-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31550
|
||||
* gfortran.dg/used_types_16.f90: New test.
|
||||
|
||||
2007-04-13 Tobias Schlüter <tobi@gcc.gnu.org>
|
||||
|
||||
PR fortran/18937
|
||||
|
33
gcc/testsuite/gfortran.dg/func_assign.f90
Normal file
33
gcc/testsuite/gfortran.dg/func_assign.f90
Normal file
@ -0,0 +1,33 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/31559
|
||||
! Do not allow assigning to external functions
|
||||
!
|
||||
! Contributed by Steve Kargl <sgk@troutmask.apl.washington.edu>
|
||||
!
|
||||
module mod
|
||||
implicit none
|
||||
contains
|
||||
integer function bar()
|
||||
bar = 4
|
||||
end function bar
|
||||
|
||||
subroutine a()
|
||||
implicit none
|
||||
real :: fun
|
||||
external fun
|
||||
interface
|
||||
function funget(a)
|
||||
integer :: a
|
||||
end function
|
||||
subroutine sub()
|
||||
end subroutine sub
|
||||
end interface
|
||||
sub = 'a' ! { dg-error "Expected VARIABLE" }
|
||||
fun = 4.4 ! { dg-error "Expected VARIABLE" }
|
||||
funget = 4 ! { dg-error "is not a VALUE" }
|
||||
bar = 5 ! { dg-error "is not a VALUE" }
|
||||
end subroutine a
|
||||
end module mod
|
||||
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user