| Index: gcc/gcc/fortran/trans.h
|
| diff --git a/gcc/gcc/fortran/trans.h b/gcc/gcc/fortran/trans.h
|
| index 2732aebee3cc6dc1545a1aa3c5c30da38efe417c..58a2f39a2765de5b0c7b3fc9e35d293989cbfcc0 100644
|
| --- a/gcc/gcc/fortran/trans.h
|
| +++ b/gcc/gcc/fortran/trans.h
|
| @@ -1,6 +1,6 @@
|
| /* Header for code translation functions
|
| - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
| - Foundation, Inc.
|
| + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
| + Free Software Foundation, Inc.
|
| Contributed by Paul Brook
|
|
|
| This file is part of GCC.
|
| @@ -71,7 +71,7 @@ typedef struct gfc_se
|
| are NULL. Used by intrinsic size. */
|
| unsigned data_not_needed:1;
|
|
|
| - /* If set, gfc_conv_function_call does not put byref calls into se->pre. */
|
| + /* If set, gfc_conv_procedure_call does not put byref calls into se->pre. */
|
| unsigned no_function_call:1;
|
|
|
| /* Scalarization parameters. */
|
| @@ -126,8 +126,9 @@ typedef enum
|
| scalarization loop. */
|
| GFC_SS_SCALAR,
|
|
|
| - /* Like GFC_SS_SCALAR except it evaluates a pointer to the expression.
|
| - Used for elemental function parameters. */
|
| + /* Like GFC_SS_SCALAR it evaluates the expression outside the
|
| + loop. Is always evaluated as a reference to the temporary.
|
| + Used for elemental function arguments. */
|
| GFC_SS_REFERENCE,
|
|
|
| /* An array section. Scalarization indices will be substituted during
|
| @@ -310,11 +311,12 @@ void gfc_conv_intrinsic_function (gfc_se *, gfc_expr *);
|
| /* Does an intrinsic map directly to an external library call. */
|
| int gfc_is_intrinsic_libcall (gfc_expr *);
|
|
|
| -/* Also used to CALL subroutines. */
|
| -int gfc_conv_function_call (gfc_se *, gfc_symbol *, gfc_actual_arglist *,
|
| - tree);
|
| +/* Used to call ordinary functions/subroutines
|
| + and procedure pointer components. */
|
| +int gfc_conv_procedure_call (gfc_se *, gfc_symbol *, gfc_actual_arglist *,
|
| + gfc_expr *, tree);
|
|
|
| -void gfc_conv_subref_array_arg (gfc_se *, gfc_expr *, int, sym_intent);
|
| +void gfc_conv_subref_array_arg (gfc_se *, gfc_expr *, int, sym_intent, bool);
|
|
|
| /* gfc_trans_* shouldn't call push/poplevel, use gfc_push/pop_scope */
|
|
|
| @@ -408,6 +410,10 @@ void gfc_shadow_sym (gfc_symbol *, tree, gfc_saved_var *);
|
| /* Restore the original variable. */
|
| void gfc_restore_sym (gfc_symbol *, gfc_saved_var *);
|
|
|
| +/* Setting a decl assembler name, mangling it according to target rules
|
| + (like Windows @NN decorations). */
|
| +void gfc_set_decl_assembler_name (tree, tree);
|
| +
|
| /* Returns true if a variable of specified size should go on the stack. */
|
| int gfc_can_put_var_on_stack (tree);
|
|
|
| @@ -426,8 +432,7 @@ void gfc_generate_block_data (gfc_namespace *);
|
| /* Output a decl for a module variable. */
|
| void gfc_generate_module_vars (gfc_namespace *);
|
|
|
| -struct module_htab_entry GTY(())
|
| -{
|
| +struct GTY(()) module_htab_entry {
|
| const char *name;
|
| tree namespace_decl;
|
| htab_t GTY ((param_is (union tree_node))) decls;
|
| @@ -494,6 +499,12 @@ void gfc_build_io_library_fndecls (void);
|
| /* Build a function decl for a library function. */
|
| tree gfc_build_library_function_decl (tree, tree, int, ...);
|
|
|
| +/* Process the local variable decls of a block construct. */
|
| +void gfc_process_block_locals (gfc_namespace*);
|
| +
|
| +/* Output initialization/clean-up code that was deferred. */
|
| +tree gfc_trans_deferred_vars (gfc_symbol*, tree);
|
| +
|
| /* somewhere! */
|
| tree pushdecl (tree);
|
| tree pushdecl_top_level (tree);
|
| @@ -508,6 +519,7 @@ bool gfc_get_array_descr_info (const_tree, struct array_descr_info *);
|
| /* In trans-openmp.c */
|
| bool gfc_omp_privatize_by_reference (const_tree);
|
| enum omp_clause_default_kind gfc_omp_predetermined_sharing (tree);
|
| +tree gfc_omp_report_decl (tree);
|
| tree gfc_omp_clause_default_ctor (tree, tree, tree);
|
| tree gfc_omp_clause_copy_ctor (tree, tree, tree);
|
| tree gfc_omp_clause_assign_op (tree, tree, tree);
|
| @@ -540,8 +552,7 @@ extern GTY(()) tree gfor_fndecl_associated;
|
| /* Math functions. Many other math functions are handled in
|
| trans-intrinsic.c. */
|
|
|
| -typedef struct gfc_powdecl_list GTY(())
|
| -{
|
| +typedef struct GTY(()) gfc_powdecl_list {
|
| tree integer;
|
| tree real;
|
| tree cmplx;
|
| @@ -614,8 +625,7 @@ enum gfc_array_kind
|
| };
|
|
|
| /* Array types only. */
|
| -struct lang_type GTY(())
|
| -{
|
| +struct GTY(()) lang_type {
|
| int rank;
|
| enum gfc_array_kind akind;
|
| tree lbound[GFC_MAX_DIMENSIONS];
|
| @@ -626,10 +636,10 @@ struct lang_type GTY(())
|
| tree dtype;
|
| tree dataptr_type;
|
| tree span;
|
| + tree base_decl[2];
|
| };
|
|
|
| -struct lang_decl GTY(())
|
| -{
|
| +struct GTY(()) lang_decl {
|
| /* Dummy variables. */
|
| tree saved_descriptor;
|
| /* Assigned integer nodes. Stringlength is the IO format string's length.
|
| @@ -679,6 +689,8 @@ struct lang_decl GTY(())
|
| #define GFC_TYPE_ARRAY_DATAPTR_TYPE(node) \
|
| (TYPE_LANG_SPECIFIC(node)->dataptr_type)
|
| #define GFC_TYPE_ARRAY_SPAN(node) (TYPE_LANG_SPECIFIC(node)->span)
|
| +#define GFC_TYPE_ARRAY_BASE_DECL(node, internal) \
|
| + (TYPE_LANG_SPECIFIC(node)->base_decl[(internal)])
|
|
|
| /* Build an expression with void type. */
|
| #define build1_v(code, arg) fold_build1(code, void_type_node, arg)
|
| @@ -761,9 +773,15 @@ void gfc_apply_interface_mapping (gfc_interface_mapping *,
|
|
|
|
|
| /* Standard error messages used in all the trans-*.c files. */
|
| -extern const char gfc_msg_bounds[];
|
| extern const char gfc_msg_fault[];
|
| extern const char gfc_msg_wrong_return[];
|
|
|
| +#define OMPWS_WORKSHARE_FLAG 1 /* Set if in a workshare construct. */
|
| +#define OMPWS_CURR_SINGLEUNIT 2 /* Set if current gfc_code in workshare
|
| + construct is not workshared. */
|
| +#define OMPWS_SCALARIZER_WS 4 /* Set if scalarizer should attempt
|
| + to create parallel loops. */
|
| +#define OMPWS_NOWAIT 8 /* Use NOWAIT on OMP_FOR. */
|
| +extern int ompws_flags;
|
|
|
| #endif /* GFC_TRANS_H */
|
|
|