Add one entry to ChangeLog: 

Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog       (revision 206236)
+++ gcc/ChangeLog       (working copy)
@@ -1,3 +1,8 @@
+2013-12-30  Felix Yang  <felix.y...@huawei.com>
+
+       * gcc/ira-costs.c (cost_classes_hasher::equal): memcmp return 0 if no
+       difference exists for HV1 and HV2.
+
Index: gcc/ira-costs.c
===================================================================
--- gcc/ira-costs.c     (revision 206236)
+++ gcc/ira-costs.c     (working copy)
@@ -155,7 +155,7 @@ inline bool
 cost_classes_hasher::equal (const value_type *hv1, const compare_type *hv2)
 {
   return hv1->num == hv2->num && memcmp (hv1->classes, hv2->classes,
-                                        sizeof (enum reg_class) * hv1->num);
+                                        sizeof (enum reg_class) * hv1->num) == 
0;
 }
 
 /* Delete cost classes info V from the hash table.  */

Cheers,
Fei.


> 
> Ping.
> 
> Attached please find patch is for trunk (gcc-4.9):
> 
> Index: gcc/ira-costs.c
> ================================================================
> ===
> --- gcc/ira-costs.c   (revision 206236)
> +++ gcc/ira-costs.c   (working copy)
> @@ -155,7 +155,7 @@ inline bool
>  cost_classes_hasher::equal (const value_type *hv1, const compare_type
> *hv2)  {
>    return hv1->num == hv2->num && memcmp (hv1->classes, hv2->classes,
> -                                      sizeof (enum reg_class) * hv1->num);
> +                                      sizeof (enum reg_class) * hv1->num) == 
> 0;
>  }
> 
>  /* Delete cost classes info V from the hash table.  */
> 
> Cheers,
> Fei.
> 
> 
> > Hi Vladimir,
> >
> >   I am trying to fix a potential bug of cost_classes_eq in
> > ira-costs.c. This patch is for gcc-4.8 branch and should work for gcc-4.9.
> >   Library function memcmp return 0 if no difference for the two compared
> data.
> > Please take a look.
> >
> >
> > /* Compares cost classes info V1 and V2.  */ static int
> > cost_classes_eq (const void *v1, const void *v2) {
> >   const_cost_classes_t hv1 = (const_cost_classes_t) v1;
> >   const_cost_classes_t hv2 = (const_cost_classes_t) v2;
> >
> >   return hv1->num == hv2->num && memcmp (hv1->classes, hv2->classes,
> > -                                    sizeof (enum reg_class) * hv1->num);
> > +                                    sizeof (enum reg_class) * hv1->num) == 
> > 0;
> > }
> >
> > Cheers,
> > Fei

Reply via email to