This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR rtl-optimization/68287
- From: Martin LiÅka <mliska at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Richard Biener <richard dot guenther at gmail dot com>
- Date: Wed, 11 Nov 2015 13:40:59 +0100
- Subject: Re: [PATCH] Fix PR rtl-optimization/68287
- Authentication-results: sourceware.org; auth=none
- References: <564081EF dot 7030003 at suse dot cz> <CAFiYyc2HnSMgWcPyrw6wKMKLqwZdSY0ZVDUR+WBLSz3gvN3aaQ at mail dot gmail dot com> <56409EEC dot 50803 at suse dot cz> <CAFiYyc0F2gUP3AEaPK9szUevia4pHEW9u1sVu=k4AbcDJ_wTUQ at mail dot gmail dot com> <56432401 dot 3060501 at suse dot cz> <CAFiYyc1q46JTJr8upJ6UJ25MRw5RzoX5uDfsMRcnhbyQszr1Ng at mail dot gmail dot com>
On 11/11/2015 01:20 PM, Richard Biener wrote:
> On Wed, Nov 11, 2015 at 12:18 PM, Martin LiÅka <mliska@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 <mliska@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 <mliska@suse.cz>
Richard Biener <rguenther@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