aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-07-17 11:26:30 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1997-07-17 11:26:30 -0400
commit5e4ef18a2b522c476698239fe541ddaff1d6d6b4 (patch)
tree0a327e4b46f964b38609955822b93f7d2b34bb5a
parent76e0d2113de257d2505bba2cb82f9117ca74034c (diff)
downloadgcc-5e4ef18a2b522c476698239fe541ddaff1d6d6b4.zip
gcc-5e4ef18a2b522c476698239fe541ddaff1d6d6b4.tar.gz
gcc-5e4ef18a2b522c476698239fe541ddaff1d6d6b4.tar.bz2
(expand_decl): If stack checking, use alloca for large vars.
From-SVN: r14472
-rw-r--r--gcc/stmt.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index fb17900..0dcb4cb 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -3573,7 +3573,11 @@ expand_decl (decl)
/ BITS_PER_UNIT));
}
- else if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
+ else if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST
+ && ! (flag_stack_check && ! STACK_CHECK_BUILTIN
+ && (TREE_INT_CST_HIGH (DECL_SIZE (decl)) != 0
+ || (TREE_INT_CST_LOW (DECL_SIZE (decl))
+ > STACK_CHECK_MAX_VAR_SIZE * BITS_PER_UNIT))))
{
/* Variable of fixed size that goes on the stack. */
rtx oldaddr = 0;