* [PATCH, PR71084] Further improve of CFG change tracking in CSE
@ 2016-05-13 9:05 Ilya Enkovich
2016-05-13 9:50 ` Richard Biener
0 siblings, 1 reply; 3+ messages in thread
From: Ilya Enkovich @ 2016-05-13 9:05 UTC (permalink / raw)
To: gcc-patches
Hi,
This patch improves cse_cfg_altered computation by taking into account
cleanup_cfg returned values. This resolves another case of invalidated
dominance info.
Bootstrapped and regtested on x86_64-unknown-linux-gnu. OK for turnk?
Thanks,
Ilya
--
gcc/
2016-05-13 Ilya Enkovich <ilya.enkovich@intel.com>
* cse.c (rest_of_handle_cse): Use cleanup_cfg
returned value cse_cfg_altered computation.
(rest_of_handle_cse2): Likewise.
(rest_of_handle_cse_after_global_opts): Likewise.
gcc/testsuite/
2016-05-13 Ilya Enkovich <ilya.enkovich@intel.com>
* gcc.dg/pr71084.c: New test.
diff --git a/gcc/cse.c b/gcc/cse.c
index 04e1a85..322e352 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -7562,11 +7562,11 @@ rest_of_handle_cse (void)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (get_insns ());
- cleanup_cfg (CLEANUP_CFG_CHANGED);
+ cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
timevar_pop (TV_JUMP);
}
else if (tem == 1 || optimize > 1)
- cleanup_cfg (0);
+ cse_cfg_altered |= cleanup_cfg (0);
if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
free_dominance_info (CDI_DOMINATORS);
@@ -7634,11 +7634,11 @@ rest_of_handle_cse2 (void)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (get_insns ());
- cleanup_cfg (CLEANUP_CFG_CHANGED);
+ cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
timevar_pop (TV_JUMP);
}
else if (tem == 1)
- cleanup_cfg (0);
+ cse_cfg_altered |= cleanup_cfg (0);
if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
free_dominance_info (CDI_DOMINATORS);
@@ -7711,11 +7711,11 @@ rest_of_handle_cse_after_global_opts (void)
{
timevar_push (TV_JUMP);
rebuild_jump_labels (get_insns ());
- cleanup_cfg (CLEANUP_CFG_CHANGED);
+ cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
timevar_pop (TV_JUMP);
}
else if (tem == 1)
- cleanup_cfg (0);
+ cse_cfg_altered |= cleanup_cfg (0);
if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
free_dominance_info (CDI_DOMINATORS);
diff --git a/gcc/testsuite/gcc.dg/pr71084.c b/gcc/testsuite/gcc.dg/pr71084.c
new file mode 100644
index 0000000..46fdf9f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr71084.c
@@ -0,0 +1,38 @@
+/* PR tree-optimization/71084 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+void babl_format (void);
+void gimp_drawable_get_format (void);
+int _setjmp (void);
+
+enum {
+ GIMP_RGB_IMAGE,
+ GIMP_RGBA_IMAGE,
+ GIMP_GRAY_IMAGE,
+ GIMP_GRAYA_IMAGE,
+ GIMP_INDEXED_IMAGE
+} run_i;
+
+int run_height;
+
+void fn1 ()
+{
+ int type, width;
+ if (_setjmp ())
+ switch (type)
+ {
+ case GIMP_RGB_IMAGE:
+ babl_format ();
+ case GIMP_RGBA_IMAGE:
+ case GIMP_GRAY_IMAGE:
+ babl_format ();
+ case GIMP_GRAYA_IMAGE:
+ case GIMP_INDEXED_IMAGE:
+ gimp_drawable_get_format();
+ }
+ for (; run_height;)
+ for (; run_i < (long)fn1; ++run_i)
+ for (; width;)
+ ;
+}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH, PR71084] Further improve of CFG change tracking in CSE
2016-05-13 9:05 [PATCH, PR71084] Further improve of CFG change tracking in CSE Ilya Enkovich
@ 2016-05-13 9:50 ` Richard Biener
2016-05-13 18:00 ` Bernhard Reutner-Fischer
0 siblings, 1 reply; 3+ messages in thread
From: Richard Biener @ 2016-05-13 9:50 UTC (permalink / raw)
To: Ilya Enkovich; +Cc: GCC Patches
On Fri, May 13, 2016 at 11:03 AM, Ilya Enkovich <enkovich.gnu@gmail.com> wrote:
> Hi,
>
> This patch improves cse_cfg_altered computation by taking into account
> cleanup_cfg returned values. This resolves another case of invalidated
> dominance info.
>
> Bootstrapped and regtested on x86_64-unknown-linux-gnu. OK for turnk?
Ok.
Thanks,
Richard.
> Thanks,
> Ilya
> --
> gcc/
>
> 2016-05-13 Ilya Enkovich <ilya.enkovich@intel.com>
>
> * cse.c (rest_of_handle_cse): Use cleanup_cfg
> returned value cse_cfg_altered computation.
> (rest_of_handle_cse2): Likewise.
> (rest_of_handle_cse_after_global_opts): Likewise.
>
> gcc/testsuite/
>
> 2016-05-13 Ilya Enkovich <ilya.enkovich@intel.com>
>
> * gcc.dg/pr71084.c: New test.
>
>
> diff --git a/gcc/cse.c b/gcc/cse.c
> index 04e1a85..322e352 100644
> --- a/gcc/cse.c
> +++ b/gcc/cse.c
> @@ -7562,11 +7562,11 @@ rest_of_handle_cse (void)
> {
> timevar_push (TV_JUMP);
> rebuild_jump_labels (get_insns ());
> - cleanup_cfg (CLEANUP_CFG_CHANGED);
> + cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
> timevar_pop (TV_JUMP);
> }
> else if (tem == 1 || optimize > 1)
> - cleanup_cfg (0);
> + cse_cfg_altered |= cleanup_cfg (0);
>
> if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
> free_dominance_info (CDI_DOMINATORS);
> @@ -7634,11 +7634,11 @@ rest_of_handle_cse2 (void)
> {
> timevar_push (TV_JUMP);
> rebuild_jump_labels (get_insns ());
> - cleanup_cfg (CLEANUP_CFG_CHANGED);
> + cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
> timevar_pop (TV_JUMP);
> }
> else if (tem == 1)
> - cleanup_cfg (0);
> + cse_cfg_altered |= cleanup_cfg (0);
>
> if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
> free_dominance_info (CDI_DOMINATORS);
> @@ -7711,11 +7711,11 @@ rest_of_handle_cse_after_global_opts (void)
> {
> timevar_push (TV_JUMP);
> rebuild_jump_labels (get_insns ());
> - cleanup_cfg (CLEANUP_CFG_CHANGED);
> + cse_cfg_altered |= cleanup_cfg (CLEANUP_CFG_CHANGED);
> timevar_pop (TV_JUMP);
> }
> else if (tem == 1)
> - cleanup_cfg (0);
> + cse_cfg_altered |= cleanup_cfg (0);
>
> if (cse_cfg_altered && dom_info_available_p (CDI_DOMINATORS))
> free_dominance_info (CDI_DOMINATORS);
> diff --git a/gcc/testsuite/gcc.dg/pr71084.c b/gcc/testsuite/gcc.dg/pr71084.c
> new file mode 100644
> index 0000000..46fdf9f
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/pr71084.c
> @@ -0,0 +1,38 @@
> +/* PR tree-optimization/71084 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2" } */
> +
> +void babl_format (void);
> +void gimp_drawable_get_format (void);
> +int _setjmp (void);
> +
> +enum {
> + GIMP_RGB_IMAGE,
> + GIMP_RGBA_IMAGE,
> + GIMP_GRAY_IMAGE,
> + GIMP_GRAYA_IMAGE,
> + GIMP_INDEXED_IMAGE
> +} run_i;
> +
> +int run_height;
> +
> +void fn1 ()
> +{
> + int type, width;
> + if (_setjmp ())
> + switch (type)
> + {
> + case GIMP_RGB_IMAGE:
> + babl_format ();
> + case GIMP_RGBA_IMAGE:
> + case GIMP_GRAY_IMAGE:
> + babl_format ();
> + case GIMP_GRAYA_IMAGE:
> + case GIMP_INDEXED_IMAGE:
> + gimp_drawable_get_format();
> + }
> + for (; run_height;)
> + for (; run_i < (long)fn1; ++run_i)
> + for (; width;)
> + ;
> +}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH, PR71084] Further improve of CFG change tracking in CSE
2016-05-13 9:50 ` Richard Biener
@ 2016-05-13 18:00 ` Bernhard Reutner-Fischer
0 siblings, 0 replies; 3+ messages in thread
From: Bernhard Reutner-Fischer @ 2016-05-13 18:00 UTC (permalink / raw)
To: Richard Biener, Ilya Enkovich; +Cc: GCC Patches
On May 13, 2016 11:50:33 AM GMT+02:00, Richard Biener <richard.guenther@gmail.com> wrote:
>On Fri, May 13, 2016 at 11:03 AM, Ilya Enkovich
><enkovich.gnu@gmail.com> wrote:
>> Hi,
>>
>> This patch improves cse_cfg_altered computation by taking into
>account
>> cleanup_cfg returned values. This resolves another case of
>invalidated
>> dominance info.
>>
>> Bootstrapped and regtested on x86_64-unknown-linux-gnu. OK for
>turnk?
>
>Ok.
What about making cleanup_cfg __wur (i.e. warn_unused_result) at least when checking?
thanks,
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-05-13 18:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-13 9:05 [PATCH, PR71084] Further improve of CFG change tracking in CSE Ilya Enkovich
2016-05-13 9:50 ` Richard Biener
2016-05-13 18:00 ` Bernhard Reutner-Fischer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).