diff mbox

[IRA] Fix a function accessing beyond end-of-array

Message ID 4DCA8926.9030106@picochip.com
State New
Headers show

Commit Message

Hariharan Sandanagobalane May 11, 2011, 1:03 p.m. UTC
Hello,
I discussed this problem with Vlad in 
http://gcc.gnu.org/ml/gcc/2011-05/msg00131.html. I propose the following 
patch to fix it. Okay to commit?

Thanks
Hari

ChangeLog:
        * ira.c (clarify_prohibited_class_mode_regs): It was running 
beyond the end of REGNO_REG_CLASS array. Fixed.

Patch:
           for (nregs-- ;nregs >= 0; nregs--)
             if (((enum reg_class) pclass

Comments

Eric Botcazou May 11, 2011, 1:52 p.m. UTC | #1
>         * ira.c (clarify_prohibited_class_mode_regs): It was running
> beyond the end of REGNO_REG_CLASS array. Fixed.

This isn't a valid ChangeLog entry.  It must not state the "why" (it was 
running beyond the end of REGNO_REG_CLASS array), only the "what".  So you 
need to describe how you're fixing the problem, e.g. "Do not access the array 
if ..." or "Stop the loop if ...".  See the numerous examples in ChangeLog.
diff mbox

Patch

Index: gcc/ira.c
===================================================================
--- gcc/ira.c   (revision 173654)
+++ gcc/ira.c   (working copy)
@@ -1422,6 +1422,12 @@ 
           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)];