Compare more sensitive FIX_TRUNC_EXPR in IPA ICF.

Message ID 3cbfc86f-d274-8edd-573c-b501a163de8c@suse.cz
State New
Headers show
Series
  • Compare more sensitive FIX_TRUNC_EXPR in IPA ICF.
Related show

Commit Message

Martin Liška Feb. 17, 2020, 3:21 p.m.
Hi.

The patch is extension of 446096148ca9775cb56f9ee924fa283babcd0b76 commit
where we need to handle FIX_TRUNC_EXPR in compare_gimple_assign.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

gcc/ChangeLog:

2020-02-17  Martin Liska  <mliska@suse.cz>

	PR ipa/92518
	* ipa-icf-gimple.c (func_checker::compare_gimple_assign):
	Consider also FIX_TRUNC_EXPR.
---
  gcc/ipa-icf-gimple.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Richard Biener Feb. 18, 2020, 10:19 a.m. | #1
On Mon, Feb 17, 2020 at 4:21 PM Martin Liška <mliska@suse.cz> wrote:
>

> Hi.

>

> The patch is extension of 446096148ca9775cb56f9ee924fa283babcd0b76 commit

> where we need to handle FIX_TRUNC_EXPR in compare_gimple_assign.

>

> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

>

> Ready to be installed?


There's also FLOAT_EXPR.

I wonder why you can ever disregard comparing the types of the LHS?  Yes,
comparing is most of the time redundant but OTOH comparing the LHS
types would be enough for all SSA defs and then you can elide comparing
of SSA use types in way more cases?!

> Thanks,

> Martin

>

> gcc/ChangeLog:

>

> 2020-02-17  Martin Liska  <mliska@suse.cz>

>

>         PR ipa/92518

>         * ipa-icf-gimple.c (func_checker::compare_gimple_assign):

>         Consider also FIX_TRUNC_EXPR.

> ---

>   gcc/ipa-icf-gimple.c | 4 +++-

>   1 file changed, 3 insertions(+), 1 deletion(-)

>

>
Martin Liška Feb. 18, 2020, 2 p.m. | #2
On 2/18/20 11:19 AM, Richard Biener wrote:
> On Mon, Feb 17, 2020 at 4:21 PM Martin Liška <mliska@suse.cz> wrote:

>>

>> Hi.

>>

>> The patch is extension of 446096148ca9775cb56f9ee924fa283babcd0b76 commit

>> where we need to handle FIX_TRUNC_EXPR in compare_gimple_assign.

>>

>> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

>>

>> Ready to be installed?

> 

> There's also FLOAT_EXPR.

> 

> I wonder why you can ever disregard comparing the types of the LHS?  Yes,

> comparing is most of the time redundant but OTOH comparing the LHS

> types would be enough for all SSA defs and then you can elide comparing

> of SSA use types in way more cases?!


All right, let's compare LHS types for all gimple_assigns.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

> 

>> Thanks,

>> Martin

>>

>> gcc/ChangeLog:

>>

>> 2020-02-17  Martin Liska  <mliska@suse.cz>

>>

>>          PR ipa/92518

>>          * ipa-icf-gimple.c (func_checker::compare_gimple_assign):

>>          Consider also FIX_TRUNC_EXPR.

>> ---

>>    gcc/ipa-icf-gimple.c | 4 +++-

>>    1 file changed, 3 insertions(+), 1 deletion(-)

>>

>>
From 8d656664a0d6e3c5acf6a42ab46d66edfb05d281 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>

Date: Mon, 17 Feb 2020 14:56:09 +0100
Subject: [PATCH] Always compare types of LHS for gimple_assign in ICF.

gcc/ChangeLog:

2020-02-17  Martin Liska  <mliska@suse.cz>

	PR ipa/92518
	* ipa-icf-gimple.c (func_checker::compare_gimple_assign):
	Always compare LHS of gimple_assign.
---
 gcc/ipa-icf-gimple.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c
index fa71a028c66..3e5b2d4bd6d 100644
--- a/gcc/ipa-icf-gimple.c
+++ b/gcc/ipa-icf-gimple.c
@@ -620,8 +620,8 @@ func_checker::compare_gimple_assign (gimple *s1, gimple *s2)
       arg1 = gimple_op (s1, i);
       arg2 = gimple_op (s2, i);
 
-      /* LHS types of NOP_EXPR must be compatible.  */
-      if (CONVERT_EXPR_CODE_P (code1) && i == 0)
+      /* Compare types for LHS.  */
+      if (i == 0)
 	{
 	  if (!compatible_types_p (TREE_TYPE (arg1), TREE_TYPE (arg2)))
 	    return return_false_with_msg ("GIMPLE NOP LHS type mismatch");
-- 
2.25.0
Richard Biener Feb. 18, 2020, 2:02 p.m. | #3
On Tue, Feb 18, 2020 at 3:00 PM Martin Liška <mliska@suse.cz> wrote:
>

> On 2/18/20 11:19 AM, Richard Biener wrote:

> > On Mon, Feb 17, 2020 at 4:21 PM Martin Liška <mliska@suse.cz> wrote:

> >>

> >> Hi.

> >>

> >> The patch is extension of 446096148ca9775cb56f9ee924fa283babcd0b76 commit

> >> where we need to handle FIX_TRUNC_EXPR in compare_gimple_assign.

> >>

> >> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

> >>

> >> Ready to be installed?

> >

> > There's also FLOAT_EXPR.

> >

> > I wonder why you can ever disregard comparing the types of the LHS?  Yes,

> > comparing is most of the time redundant but OTOH comparing the LHS

> > types would be enough for all SSA defs and then you can elide comparing

> > of SSA use types in way more cases?!

>

> All right, let's compare LHS types for all gimple_assigns.

>

> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

>

> Ready to be installed?


OK.

> Thanks,

> Martin

>

> >

> >> Thanks,

> >> Martin

> >>

> >> gcc/ChangeLog:

> >>

> >> 2020-02-17  Martin Liska  <mliska@suse.cz>

> >>

> >>          PR ipa/92518

> >>          * ipa-icf-gimple.c (func_checker::compare_gimple_assign):

> >>          Consider also FIX_TRUNC_EXPR.

> >> ---

> >>    gcc/ipa-icf-gimple.c | 4 +++-

> >>    1 file changed, 3 insertions(+), 1 deletion(-)

> >>

> >>

>

Patch

diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c
index fa71a028c66..4a4f06b79b4 100644
--- a/gcc/ipa-icf-gimple.c
+++ b/gcc/ipa-icf-gimple.c
@@ -621,7 +621,9 @@  func_checker::compare_gimple_assign (gimple *s1, gimple *s2)
       arg2 = gimple_op (s2, i);
 
       /* LHS types of NOP_EXPR must be compatible.  */
-      if (CONVERT_EXPR_CODE_P (code1) && i == 0)
+      if ((CONVERT_EXPR_CODE_P (code1)
+	   || code1 == FIX_TRUNC_EXPR)
+	  && i == 0)
 	{
 	  if (!compatible_types_p (TREE_TYPE (arg1), TREE_TYPE (arg2)))
 	    return return_false_with_msg ("GIMPLE NOP LHS type mismatch");