aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Hannum <mycroft@gnu.org>1992-07-08 22:35:25 +0000
committerCharles Hannum <mycroft@gnu.org>1992-07-08 22:35:25 +0000
commitef03bc85d59cbba3ff75de814490f4d60be1ffd1 (patch)
tree9d6bf17af7170f903f04c318d24887ef4e4a583b
parentc5caa35076b08db79b363624678265ec9a1d1ec9 (diff)
downloadgcc-ef03bc85d59cbba3ff75de814490f4d60be1ffd1.zip
gcc-ef03bc85d59cbba3ff75de814490f4d60be1ffd1.tar.gz
gcc-ef03bc85d59cbba3ff75de814490f4d60be1ffd1.tar.bz2
*** empty log message ***
From-SVN: r1530
-rw-r--r--gcc/calls.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 3c018e5..0836855 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -138,10 +138,23 @@ calls_alloca (exp)
break;
case BLOCK:
- /* Must not look at BLOCK_SUPERCONTEXT since it will point back to
- us. */
- length = 3;
- break;
+ {
+ register tree local;
+
+ for (local = BLOCK_VARS (exp); local; local = TREE_CHAIN (local))
+ if (calls_alloca (DECL_INITIAL (local)))
+ return 1;
+ }
+ {
+ register tree subblock;
+
+ for (subblock = BLOCK_SUBBLOCKS (exp);
+ subblock;
+ subblock = TREE_CHAIN (subblock))
+ if (calls_alloca (subblock))
+ return 1;
+ }
+ return 0;
case METHOD_CALL_EXPR:
length = 3;