]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
alpha.c (alpha_expand_prologue): Fix off-by-one bug in the stack probing loop.
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 16 Nov 2005 07:23:40 +0000 (07:23 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 16 Nov 2005 07:23:40 +0000 (07:23 +0000)
* config/alpha/alpha.c (alpha_expand_prologue): Fix off-by-one bug
in the stack probing loop.

From-SVN: r107069

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 9e5cf17c6837d531f262a194fc910d605863a1a7..21765a2e8a8089ac6a54c96969865c7ab47c6151 100644 (file)
@@ -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.
index ec53778ce1837488caf45cde777a3eb9b34d816f..a14b5d31e6426ccb1e221ea327c0cc2577f34c78 100644 (file)
@@ -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)));
        }