re PR fortran/47023 (C_Sizeof: Rejects valid code)
2011-10-19 Janus Weil <janus@gcc.gnu.org> PR fortran/47023 * check.c (gfc_check_sizeof): Reject procedures as argument of SIZEOF. * intrinsinc.texi (SIZEOF): Document it. (STORAGE_SIZE): Fix special characters. Fix line breaks. 2011-10-19 Janus Weil <janus@gcc.gnu.org> PR fortran/47023 * gfortran.dg/sizeof_proc.f90: New. From-SVN: r180210
This commit is contained in:
parent
e423833d36
commit
2c23ebfec6
@ -1,3 +1,10 @@
|
||||
2011-10-19 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/47023
|
||||
* check.c (gfc_check_sizeof): Reject procedures as argument of SIZEOF.
|
||||
* intrinsinc.texi (SIZEOF): Document it.
|
||||
(STORAGE_SIZE): Fix special characters. Fix line breaks.
|
||||
|
||||
2011-10-18 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
PR fortran/50420
|
||||
|
@ -3444,8 +3444,15 @@ gfc_check_size (gfc_expr *array, gfc_expr *dim, gfc_expr *kind)
|
||||
|
||||
|
||||
gfc_try
|
||||
gfc_check_sizeof (gfc_expr *arg ATTRIBUTE_UNUSED)
|
||||
gfc_check_sizeof (gfc_expr *arg)
|
||||
{
|
||||
if (arg->ts.type == BT_PROCEDURE)
|
||||
{
|
||||
gfc_error ("'%s' argument of '%s' intrinsic at %L may not be a procedure",
|
||||
gfc_current_intrinsic_arg[0]->name, gfc_current_intrinsic,
|
||||
&arg->where);
|
||||
return FAILURE;
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -11459,7 +11459,8 @@ number of bytes occupied by the argument. If the argument has the
|
||||
to is returned. If the argument is of a derived type with @code{POINTER}
|
||||
or @code{ALLOCATABLE} components, the return value doesn't account for
|
||||
the sizes of the data pointed to by these components. If the argument is
|
||||
polymorphic, the size according to the declared type is returned.
|
||||
polymorphic, the size according to the declared type is returned. The argument
|
||||
may not be a procedure or procedure pointer.
|
||||
|
||||
@item @emph{Example}:
|
||||
@smallexample
|
||||
@ -11816,8 +11817,10 @@ Inquiry function
|
||||
@end multitable
|
||||
|
||||
@item @emph{Return Value}:
|
||||
The result is a scalar integer with the kind type parameter specified by KIND (or default integer type if KIND is missing). The result value is the size expressed in bits for an element of an array that
|
||||
has the dynamic type and type parameters of A.
|
||||
The result is a scalar integer with the kind type parameter specified by KIND
|
||||
(or default integer type if KIND is missing). The result value is the size
|
||||
expressed in bits for an element of an array that has the dynamic type and type
|
||||
parameters of A.
|
||||
|
||||
@item @emph{See also}:
|
||||
@ref{C_SIZEOF}, @ref{SIZEOF}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-10-19 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/47023
|
||||
* gfortran.dg/sizeof_proc.f90: New.
|
||||
|
||||
2011-10-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* g++.dg/compat/struct-layout-1_generate.c: Also pass -mno-mmx
|
||||
|
28
gcc/testsuite/gfortran.dg/sizeof_proc.f90
Normal file
28
gcc/testsuite/gfortran.dg/sizeof_proc.f90
Normal file
@ -0,0 +1,28 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR 47023: C_Sizeof: Rejects valid code
|
||||
!
|
||||
! Contributed by Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
use iso_c_binding
|
||||
procedure(real) :: proc
|
||||
procedure(real), pointer :: pp
|
||||
pp => sin
|
||||
|
||||
print *,sizeof(proc) ! { dg-error "may not be a procedure" }
|
||||
print *,sizeof(pp) ! { dg-error "may not be a procedure" }
|
||||
print *,sizeof(pp(0.))
|
||||
print *,sizeof(sub) ! { dg-error "may not be a procedure" }
|
||||
print *,sizeof(func) ! { dg-error "may not be a procedure" }
|
||||
print *,sizeof(func())
|
||||
|
||||
contains
|
||||
|
||||
subroutine sub
|
||||
end subroutine
|
||||
|
||||
real function func()
|
||||
func = 0.
|
||||
end function
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user