diff options
| author | Paul Thomas <pault@gcc.gnu.org> | 2006-06-05 07:45:03 +0000 |
|---|---|---|
| committer | Paul Thomas <pault@gcc.gnu.org> | 2006-06-05 07:45:03 +0000 |
| commit | 6690a9e079bf15d086d2805d00fea0e228cd7db9 (patch) | |
| tree | 390b7c6a31468417e763f88ebe31b126efc05a4b /gcc/fortran/check.c | |
| parent | 86ad0dd600b5da40ac5c0ebd8dc230a603d3fce2 (diff) | |
| download | gcc-6690a9e079bf15d086d2805d00fea0e228cd7db9.zip gcc-6690a9e079bf15d086d2805d00fea0e228cd7db9.tar.gz gcc-6690a9e079bf15d086d2805d00fea0e228cd7db9.tar.bz2 | |
re PR fortran/14067 (no warning when character data statement overflows declared size)
2006-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/14067
* data.c (create_character_intializer): Add warning message
for truncated string.
PR fortran/16943
* symbol.c : Include flags.h.
(gfc_add_type): If a procedure and types are the same do not
throw an error unless standard is less than gnu or pedantic.
PR fortran/20838
* parse.c (parse_do_block): Error if named block do construct
does not have a named enddo.
PR fortran/27655
* check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
as well as target and put error return at end of function.
2006-06-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/14067
* gfortran.dg/data_char_1.f90: Add messages for truncated
strings.
PR fortran/16943
* gfortran.dg/func_decl_2.f90: New test.
PR fortran/20838
* gfortran.dg/do_2.f90: New test.
PR fortran/27655
* gfortran.dg/associated_3.f90: New test.
From-SVN: r114385
Diffstat (limited to 'gcc/fortran/check.c')
| -rw-r--r-- | gcc/fortran/check.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index c68e59c..15278f4 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -499,11 +499,16 @@ gfc_check_associated (gfc_expr * pointer, gfc_expr * target) symbol_attribute attr; int i; try t; + locus *where; + + where = &pointer->where; if (pointer->expr_type == EXPR_VARIABLE) attr = gfc_variable_attr (pointer, NULL); else if (pointer->expr_type == EXPR_FUNCTION) attr = pointer->symtree->n.sym->attr; + else if (pointer->expr_type == EXPR_NULL) + goto null_arg; else gcc_assert (0); /* Pointer must be a variable or a function. */ @@ -519,13 +524,9 @@ gfc_check_associated (gfc_expr * pointer, gfc_expr * target) if (target == NULL) return SUCCESS; + where = &target->where; if (target->expr_type == EXPR_NULL) - { - gfc_error ("NULL pointer at %L is not permitted as actual argument " - "of '%s' intrinsic function", - &target->where, gfc_current_intrinsic); - return FAILURE; - } + goto null_arg; if (target->expr_type == EXPR_VARIABLE) attr = gfc_variable_attr (target, NULL); @@ -565,6 +566,13 @@ gfc_check_associated (gfc_expr * pointer, gfc_expr * target) } } return t; + +null_arg: + + gfc_error ("NULL pointer at %L is not permitted as actual argument " + "of '%s' intrinsic function", where, gfc_current_intrinsic); + return FAILURE; + } |
