diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-06-12 16:06:19 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-06-12 16:06:19 +0200 |
commit | 662ef0f5c62f781c4d20406ee11333c63bac8eef (patch) | |
tree | 3f6f1f97c22b8ddc8b4db0231e42b95da118a586 /gcc/fortran | |
parent | 4aef80f8e0b9f3a18e2afb6d10dcdcc26683d34d (diff) | |
download | gcc-662ef0f5c62f781c4d20406ee11333c63bac8eef.zip gcc-662ef0f5c62f781c4d20406ee11333c63bac8eef.tar.gz gcc-662ef0f5c62f781c4d20406ee11333c63bac8eef.tar.bz2 |
re PR fortran/12841 (passing null to a subroutine)
fortran/
PR fortran/12841
* interface.c (compare_parameter, compare_actual_formal): Don't
check types and array shapes for NULL()
* trans-expr.c (conv_function_call): No double indirection for
NULL()
( I had accidentally committed the interface.c part before)
testuite/
PR fortran/12841
* gfortran.fortran-torture/execute/null_arg.f90: New test.
From-SVN: r83028
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 2 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 6 |
3 files changed, 13 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a9f08c2..e7b63f7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2004-06-12 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/12841 + * interface.c (compare_parameter, compare_actual_formal): Don't + check types and array shapes for NULL() + * trans-expr.c (conv_function_call): No double indirection for + NULL() + 2004-06-09 Toon Moene <toon@moene.indiv.nluug.nl> * trans-expr.c (gfc_conv_cst_int_power): Compute diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 1420737..9b11dd8 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1923,7 +1923,7 @@ generate_local_decl (gfc_symbol * sym) /* warn for unused variables, but not if they're inside a common block. */ else if (warn_unused_variable && !sym->attr.in_common) - warning ("unused variable `%s'", sym->name); + warning ("unused variable `%s'", sym->name); } } diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 2258ce6..e4953f6 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1100,10 +1100,12 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, if (argss == gfc_ss_terminator) { gfc_conv_expr_reference (&parmse, arg->expr); - if (formal && formal->sym->attr.pointer) + if (formal && formal->sym->attr.pointer + && arg->expr->expr_type != EXPR_NULL) { /* Scalar pointer dummy args require an extra level of - indirection. */ + indirection. The null pointer already contains + this level of indirection. */ parmse.expr = gfc_build_addr_expr (NULL, parmse.expr); } } |