OSDN Git Service

* config/alpha/alpha.c (alpha_expand_prologue): Fix off-by-one bug
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2005 07:23:40 +0000 (07:23 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2005 07:23:40 +0000 (07:23 +0000)
in the stack probing loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107069 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 9e5cf17..21765a2 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 ec53778..a14b5d3 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)));
        }