Message ID | 20240628064219.2445887-1-j@lambda.is |
---|---|
State | New |
Headers | show |
Series | Use move-aware auto_vec in map | expand |
On Fri, Jun 28, 2024 at 8:43 AM Jørgen Kvalsvik <j@lambda.is> wrote: > > Using auto_vec rather than vec for means the vectors are release > automatically upon return, to stop the leak. The problem seems is that > auto_vec<T, N> is not really move-aware, only the <T, 0> specialization > is. Indeed. > This is actually Jan's original suggestion > https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655600.html which I > improvised on by also using embedded storage. I think it should fix this > regression: > https://gcc.gnu.org/pipermail/gcc-regression/2024-June/080152.html > > I could not reproduce it on x86-64 linux, so if someone could help me > test it on aarch64 that would be much appreciated. OK. > -- > > gcc/ChangeLog: > > * tree-profile.cc (find_conditions): Use auto_vec without > embedded storage. > --- > gcc/tree-profile.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc > index 8c9945847ca..153c9323040 100644 > --- a/gcc/tree-profile.cc > +++ b/gcc/tree-profile.cc > @@ -876,7 +876,7 @@ find_conditions (struct function *fn) > make_top_index (fnblocks, ctx.B1, ctx.top_index); > > /* Bin the Boolean expressions so that exprs[id] -> [x1, x2, ...]. */ > - hash_map<int_hash<unsigned, 0>, auto_vec<basic_block, 8>> exprs; > + hash_map<int_hash<unsigned, 0>, auto_vec<basic_block>> exprs; > for (basic_block b : fnblocks) > { > const unsigned uid = condition_uid (fn, b); > -- > 2.39.2 >
On 6/28/24 13:55, Richard Biener wrote: > On Fri, Jun 28, 2024 at 8:43 AM Jørgen Kvalsvik <j@lambda.is> wrote: >> >> Using auto_vec rather than vec for means the vectors are release >> automatically upon return, to stop the leak. The problem seems is that >> auto_vec<T, N> is not really move-aware, only the <T, 0> specialization >> is. > > Indeed. > >> This is actually Jan's original suggestion >> https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655600.html which I >> improvised on by also using embedded storage. I think it should fix this >> regression: >> https://gcc.gnu.org/pipermail/gcc-regression/2024-June/080152.html >> >> I could not reproduce it on x86-64 linux, so if someone could help me >> test it on aarch64 that would be much appreciated. > > OK. Pushed. Sorry for the noise. Thanks, Jørgen > >> -- >> >> gcc/ChangeLog: >> >> * tree-profile.cc (find_conditions): Use auto_vec without >> embedded storage. >> --- >> gcc/tree-profile.cc | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc >> index 8c9945847ca..153c9323040 100644 >> --- a/gcc/tree-profile.cc >> +++ b/gcc/tree-profile.cc >> @@ -876,7 +876,7 @@ find_conditions (struct function *fn) >> make_top_index (fnblocks, ctx.B1, ctx.top_index); >> >> /* Bin the Boolean expressions so that exprs[id] -> [x1, x2, ...]. */ >> - hash_map<int_hash<unsigned, 0>, auto_vec<basic_block, 8>> exprs; >> + hash_map<int_hash<unsigned, 0>, auto_vec<basic_block>> exprs; >> for (basic_block b : fnblocks) >> { >> const unsigned uid = condition_uid (fn, b); >> -- >> 2.39.2 >>
diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc index 8c9945847ca..153c9323040 100644 --- a/gcc/tree-profile.cc +++ b/gcc/tree-profile.cc @@ -876,7 +876,7 @@ find_conditions (struct function *fn) make_top_index (fnblocks, ctx.B1, ctx.top_index); /* Bin the Boolean expressions so that exprs[id] -> [x1, x2, ...]. */ - hash_map<int_hash<unsigned, 0>, auto_vec<basic_block, 8>> exprs; + hash_map<int_hash<unsigned, 0>, auto_vec<basic_block>> exprs; for (basic_block b : fnblocks) { const unsigned uid = condition_uid (fn, b);