OSDN Git Service

* ira.c (clarify_prohibited_class_mode_regs): Prevent the function from
authorhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 May 2011 11:12:12 +0000 (11:12 +0000)
committerhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 May 2011 11:12:12 +0000 (11:12 +0000)
          accessing beyond the end of REGNO_REG_CLASS array by stopping the
          loop early.

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

gcc/ChangeLog
gcc/ira.c

index 8dcd8b9..4bb6749 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-12  Hariharan Sandanagobalane <hariharan@picochip.com>
+
+       * ira.c (clarify_prohibited_class_mode_regs): Prevent the function from
+       accessing beyond the end of REGNO_REG_CLASS array by stopping the loop
+       early.
+
 2011-05-12  DJ Delorie  <dj@redhat.com>
 
        (rx_builtins): New arrays - holds builtin functions.
index 32dfa18..9235cb3 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1422,6 +1422,12 @@ clarify_prohibited_class_mode_regs (void)
          if (TEST_HARD_REG_BIT (ira_prohibited_class_mode_regs[cl][j], hard_regno))
            continue;
          nregs = hard_regno_nregs[hard_regno][j];
+          if (hard_regno + nregs > FIRST_PSEUDO_REGISTER)
+            {
+              SET_HARD_REG_BIT (ira_prohibited_class_mode_regs[cl][j],
+                                hard_regno);
+               continue;
+            }
          pclass = ira_pressure_class_translate[REGNO_REG_CLASS (hard_regno)];
          for (nregs-- ;nregs >= 0; nregs--)
            if (((enum reg_class) pclass