[Bug fortran/57992] Pointless packing of contiguous arrays for simply contiguous functions results as actual arguments
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Jul 28 16:36:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57992
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Draft patch:
* Handles POINTER (-> temporary), POINTER, CONTIGUOUS (-> no temporary) and
ALLOCATABLE (->no temporary)
TODO
* Nonpointers, nonallocatables (like f3) are *not* handled (why?)
* Check whether TBP or PPC are handled correctly
* Check whether sym == sym->result and sym != sym->result are handled
* Check whether CLASS is handled correctly
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -7012,6 +7012,11 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr,
bool g77,
if (expr->expr_type == EXPR_VARIABLE && ref && !ultimate_ptr_comp)
full_array_var = gfc_full_array_ref_p (ref, &contiguous);
+ else if (expr->expr_type == EXPR_FUNCTION)
+ {
+ symbol_attribute attr = gfc_expr_attr (expr);
+ contiguous = !attr.pointer || attr.contiguous;
+ }
sym = full_array_var ? expr->symtree->n.sym : NULL;
More information about the Gcc-bugs
mailing list