aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2005-11-16 07:23:40 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2005-11-16 07:23:40 +0000
commit11eef57867ad3aa712e7615568f1c9e0a98f375a (patch)
tree5ec86dad6963ce14881bb154a81c0c7ca9af20a9 /gcc
parent1e04bfdc8a05b9d5d7428a5ea4973d0722e6cd46 (diff)
downloadgcc-11eef57867ad3aa712e7615568f1c9e0a98f375a.zip
gcc-11eef57867ad3aa712e7615568f1c9e0a98f375a.tar.gz
gcc-11eef57867ad3aa712e7615568f1c9e0a98f375a.tar.bz2
alpha.c (alpha_expand_prologue): Fix off-by-one bug in the stack probing loop.
* config/alpha/alpha.c (alpha_expand_prologue): Fix off-by-one bug in the stack probing loop. From-SVN: r107069
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c7
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9e5cf17..21765a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/alpha/alpha.c (alpha_expand_prologue): Fix off-by-one bug
+ in the stack probing loop.
+
2005-11-15 David Edelsohn <edelsohn@gnu.org>
* configure.ac: Use .machine power5 not power5x.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index ec53778..a14b5d3 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -7546,16 +7546,15 @@ alpha_expand_prologue (void)
{
if (frame_size > 4096)
{
- int probed = 4096;
+ int probed;
- do
+ for (probed = 4096; probed < frame_size; probed += 8192)
emit_insn (gen_probe_stack (GEN_INT (TARGET_ABI_UNICOSMK
? -probed + 64
: -probed)));
- while ((probed += 8192) < frame_size);
/* We only have to do this probe if we aren't saving registers. */
- if (sa_size == 0 && probed + 4096 < frame_size)
+ if (sa_size == 0 && frame_size > probed - 4096)
emit_insn (gen_probe_stack (GEN_INT (-frame_size)));
}