This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Bug middle-end/34400] [4.3 regression] bad interaction between DF and SJLJ exceptions
- From: "Seongbae Park (박성배, 朴成培)" <seongbae dot park at gmail dot com>
- To: "Kenneth Zadeck" <zadeck at naturalbridge dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, "zadeck at naturalbridge dot com" <gcc-bugzilla at gcc dot gnu dot org>, "Bonzini, Paolo" <bonzini at gnu dot org>, "Steven Bosscher" <stevenb dot gcc at gmail dot com>
- Date: Thu, 17 Jan 2008 13:31:17 -0800
- Subject: Re: [Bug middle-end/34400] [4.3 regression] bad interaction between DF and SJLJ exceptions
- References: <478FC324.7000905@naturalbridge.com>
In df_live_transfer_function:
Doesn't look like we need df_live_scratch - can't we do:
bitmap_and (out, gen, bb_lr_info->out);
bitmap_and_into (in, bb_lr_info->in);
return bitmap_ior_and_compl_into (out, in, kill);
?
Seongbae
On Jan 17, 2008 1:05 PM, Kenneth Zadeck <zadeck@naturalbridge.com> wrote:
> This is the second of three patches to fix 34400. This patch also makes
> some progress on 26854 but more work is required that is not going to be
> done in 4.3 to fix the problems here.
>
> This patch uses the output of the df_lr problem to make the df_live
> problem converge faster.
> This not only saves time but also space since the size of the df_live
> bitmaps never grows and the space of our bitmaps is proportional to the
> number of 1 bits.
>
> This has been tested on several platforms and along with the patch just
> committed cuts the time on the 34400 problems significantly. I believe
> that this patch also has some modest improvement on bootstrap time, i.e
> regular programs.
>
> The change to df_live_reset is a slightly related latent bug fix.
>
> Ok to commit?
>
> Kenny
>
>
> 2008-01-17 Kenneth Zadeck <zadeck@naturalbridge.com>
> Steven Bosscher <stevenb.gcc@gmail.com>
>
> PR rtl-optimization/26854
> PR rtl-optimization/34400
> * df-problems.c (df_live_scratch): New scratch bitmap.
> (df_live_alloc): Allocate df_live_scratch when doing df_live.
> (df_live_reset): Clear the proper bitmaps.
> (df_live_bb_local_compute): Only process the artificial defs once
> since the order is not important.
> (df_live_init): Init the df_live sets only with the variables
> found live by df_lr.
> (df_live_transfer_function): Use the df_lr sets to prune the
> df_live sets as they are being computed.
> (df_live_free): Free df_live_scratch.
>
>
--
#pragma ident "Seongbae Park, compiler, http://seongbae.blogspot.com"