aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>2005-03-12 22:44:44 +0100
committerTobias Schlüter <tobi@gcc.gnu.org>2005-03-12 22:44:44 +0100
commitbae88af67e2175f50b8f278b373b911762249734 (patch)
tree28c0b703dc3ba7d95e02c234669e802d5c8227ef /gcc/fortran/trans-decl.c
parent7d3bf067e90674708a69c8b838b4ad7c2caf98c7 (diff)
downloadgcc-bae88af67e2175f50b8f278b373b911762249734.zip
gcc-bae88af67e2175f50b8f278b373b911762249734.tar.gz
gcc-bae88af67e2175f50b8f278b373b911762249734.tar.bz2
re PR fortran/20361 (-fmax-stack-var-size=N not working for equivalence)
fortran/ PR fortran/20361 * trans-array.c (gfc_stack_space_left): Remove unused variable. (gfc_can_put_var_on_stack): Move to trans-decl.c, remove #if 0'ed code. * trans-array.h (gfc_stack_space_left, gfc_can_put_var_on_stack): Remove declaration / prototype. * trans-common.c (build_equiv_decl): Give union a name. Check if it can be put on the stack. * trans-decl.c (gfc_stack_space_left): Move function here. (gfc_build_qualified_array): Fix comment typo. * trans.h (gfc_put_var_on_stack): Add prototype. testsuite/ PR fortran/20361 * gfortran.dg/largeequiv_1.f90: New test. From-SVN: r96352
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index b81b986..08dd72a 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -317,6 +317,32 @@ gfc_sym_mangled_function_id (gfc_symbol * sym)
}
+/* Returns true if a variable of specified size should go on the stack. */
+
+int
+gfc_can_put_var_on_stack (tree size)
+{
+ unsigned HOST_WIDE_INT low;
+
+ if (!INTEGER_CST_P (size))
+ return 0;
+
+ if (gfc_option.flag_max_stack_var_size < 0)
+ return 1;
+
+ if (TREE_INT_CST_HIGH (size) != 0)
+ return 0;
+
+ low = TREE_INT_CST_LOW (size);
+ if (low > (unsigned HOST_WIDE_INT) gfc_option.flag_max_stack_var_size)
+ return 0;
+
+/* TODO: Set a per-function stack size limit. */
+
+ return 1;
+}
+
+
/* Finish processing of a declaration and install its initial value. */
static void
@@ -533,7 +559,7 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
/* For some dummy arguments we don't use the actual argument directly.
- Instead we create a local decl and use that. This allows us to preform
+ Instead we create a local decl and use that. This allows us to perform
initialization, and construct full type information. */
static tree