On 11/11/2015 01:20 PM, Richard Biener wrote: > On Wed, Nov 11, 2015 at 12:18 PM, Martin Liška <mli...@suse.cz> wrote: >> Hi. >> >> There's a fix for fallout of r230027. >> >> Patch can bootstrap and survives regression tests on x86_64-linux-gnu. > > Hmm, but only the new elements are zeroed so this still is different > from previous behavior. > Note that the previous .create (...) doesn't initialize the elements > either (well, it's not supposed to ...). > > I _think_ the bug is that you do safe_grow and use length while the > previous code just added > enough reserve (but not actual elements!). > > Thus the fix would be to do > > point_freq_vec.truncate (0); > point_freq_vec.reserve_exact (new_length); > > Richard.
Ahh, I see! Thanks for suggestion. I'm going to re-run regression tests and bootstrap. I consider previous email as confirmation for the patch to be installed. Thanks, Martin > >> Ready for trunk? >> Thanks, >> Martin
>From f719039abd856962d4ab9c0e61994aba413aeffa Mon Sep 17 00:00:00 2001 From: marxin <mli...@suse.cz> Date: Wed, 11 Nov 2015 10:11:20 +0100 Subject: [PATCH 1/3] Fix PR rtl-optimization/68287 gcc/ChangeLog: 2015-11-11 Martin Liska <mli...@suse.cz> Richard Biener <rguent...@suse.de> PR rtl-optimization/68287 * lra-lives.c (lra_create_live_ranges_1): Reserve the right number of elements. --- gcc/lra-lives.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 9453759..5f76a87 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -1241,8 +1241,8 @@ lra_create_live_ranges_1 (bool all_p, bool dead_insn_p) unused_set = sparseset_alloc (max_regno); curr_point = 0; unsigned new_length = get_max_uid () * 2; - if (point_freq_vec.length () < new_length) - point_freq_vec.safe_grow (new_length); + point_freq_vec.truncate (0); + point_freq_vec.reserve_exact (new_length); lra_point_freq = point_freq_vec.address (); int *post_order_rev_cfg = XNEWVEC (int, last_basic_block_for_fn (cfun)); int n_blocks_inverted = inverted_post_order_compute (post_order_rev_cfg); -- 2.6.2