diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-05-16 11:37:43 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-05-16 11:37:43 +0200 |
commit | 4b8e35f1b1df60633aeb0bf37ea9f6311f2132b9 (patch) | |
tree | 3f485b6b1cf328ccbe3d102f53c45fc88878f488 /gcc/fortran/trans-decl.c | |
parent | 86c23d9314c4081c13ebf629fd3393de4e316bf6 (diff) | |
download | gcc-4b8e35f1b1df60633aeb0bf37ea9f6311f2132b9.zip gcc-4b8e35f1b1df60633aeb0bf37ea9f6311f2132b9.tar.gz gcc-4b8e35f1b1df60633aeb0bf37ea9f6311f2132b9.tar.bz2 |
re PR fortran/90329 (Incompatibility between gfortran and C lapack calls)
PR fortran/90329
* tree-core.h (struct tree_decl_common): Document
decl_nonshareable_flag for PARM_DECLs.
* tree.h (DECL_HIDDEN_STRING_LENGTH): Define.
* calls.c (expand_call): Don't try tail call if caller
has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be
passed on the stack and callee needs to pass any arguments on the
stack.
* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
else if instead of series of mutually exclusive ifs. Handle
DECL_HIDDEN_STRING_LENGTH for PARM_DECLs.
* tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
* trans-decl.c (create_function_arglist): Set
DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if
len is constant.
From-SVN: r271285
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index c010956..07d1c33 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2512,6 +2512,10 @@ create_function_arglist (gfc_symbol * sym) DECL_ARG_TYPE (length) = len_type; TREE_READONLY (length) = 1; gfc_finish_decl (length); + if (f->sym->ts.u.cl + && f->sym->ts.u.cl->length + && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT) + DECL_HIDDEN_STRING_LENGTH (length) = 1; /* Remember the passed value. */ if (!f->sym->ts.u.cl || f->sym->ts.u.cl->passed_length) |