Patchwork rs6000: plug a leak

login
register
mail settings
Submitter Steven Bosscher
Date Aug. 22, 2012, 10:53 p.m.
Message ID <CABu31nNx0pn2CB6UHkRMpB_vVGDv09emgKLs1uc1NLjgem-nCg@mail.gmail.com>
Download mbox | patch
Permalink /patch/179426/
State New
Headers show

Comments

Steven Bosscher - Aug. 22, 2012, 10:53 p.m.
Hello Bill,

This patch plugs a leak in rs6000.c:rs6000_density_test(). You have to
free the array that get_loop_body returns. Noticed while going over
all uses of get_loop_body (it's a common mistake to leak the return
array).

Patch is completely untested because I don't know when/how this
function is used. You've added this function:

2012-07-31  Bill Schmidt  <...>

        * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
        costs for vec_perm and vec_promote_demote down to more natural values.
        (struct _rs6000_cost_data): New data structure.
-->        (rs6000_density_test): New function

so I suppose you know what it's for and how to test this patch :-)

Could you test this for me and commit it if nothing strange happens?

Thanks,

Ciao!
Steven
William J. Schmidt - Aug. 22, 2012, 11:40 p.m.
On Thu, 2012-08-23 at 00:53 +0200, Steven Bosscher wrote:
> Hello Bill,
> 
> This patch plugs a leak in rs6000.c:rs6000_density_test(). You have to
> free the array that get_loop_body returns. Noticed while going over
> all uses of get_loop_body (it's a common mistake to leak the return
> array).
> 
> Patch is completely untested because I don't know when/how this
> function is used. You've added this function:
> 
> 2012-07-31  Bill Schmidt  <...>
> 
>         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
>         costs for vec_perm and vec_promote_demote down to more natural values.
>         (struct _rs6000_cost_data): New data structure.
> -->        (rs6000_density_test): New function
> 
> so I suppose you know what it's for and how to test this patch :-)
> 
> Could you test this for me and commit it if nothing strange happens?

Sure thing!  Thanks for catching this.

Bill

> 
> Thanks,
> 
> Ciao!
> Steven
> 
> 
> 
> Index: config/rs6000/rs6000.c
> ===================================================================
> --- config/rs6000/rs6000.c      (revision 190601)
> +++ config/rs6000/rs6000.c      (working copy)
> @@ -3509,6 +3509,7 @@ rs6000_density_test (rs6000_cost_data *d
>             not_vec_cost++;
>         }
>      }
> +  free (bbs);
> 
>    density_pct = (vec_cost * 100) / (vec_cost + not_vec_cost);
>
William J. Schmidt - Aug. 23, 2012, 2:44 p.m.
On Thu, 2012-08-23 at 00:53 +0200, Steven Bosscher wrote:
> Hello Bill,
> 
> This patch plugs a leak in rs6000.c:rs6000_density_test(). You have to
> free the array that get_loop_body returns. Noticed while going over
> all uses of get_loop_body (it's a common mistake to leak the return
> array).
> 
> Patch is completely untested because I don't know when/how this
> function is used. You've added this function:
> 
> 2012-07-31  Bill Schmidt  <...>
> 
>         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
>         costs for vec_perm and vec_promote_demote down to more natural values.
>         (struct _rs6000_cost_data): New data structure.
> -->        (rs6000_density_test): New function
> 
> so I suppose you know what it's for and how to test this patch :-)
> 
> Could you test this for me and commit it if nothing strange happens?

Hi Steven,

Regstrapped with no additional failures on powerpc64-unknown-linux-gnu.
Built CPU2006 without error.  Committed as obvious.

Thanks again,
Bill

> 
> Thanks,
> 
> Ciao!
> Steven
> 
> 
> 
> Index: config/rs6000/rs6000.c
> ===================================================================
> --- config/rs6000/rs6000.c      (revision 190601)
> +++ config/rs6000/rs6000.c      (working copy)
> @@ -3509,6 +3509,7 @@ rs6000_density_test (rs6000_cost_data *d
>             not_vec_cost++;
>         }
>      }
> +  free (bbs);
> 
>    density_pct = (vec_cost * 100) / (vec_cost + not_vec_cost);
>

Patch

Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c      (revision 190601)
+++ config/rs6000/rs6000.c      (working copy)
@@ -3509,6 +3509,7 @@  rs6000_density_test (rs6000_cost_data *d
            not_vec_cost++;
        }
     }
+  free (bbs);

   density_pct = (vec_cost * 100) / (vec_cost + not_vec_cost);