public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Martin Liška" <mliska@suse.cz>
To: Christophe Lyon <christophe.lyon@linaro.org>
Cc: gcc Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH] ICF: compare type attributes for gimple_call_fntypes.
Date: Fri, 3 Apr 2020 09:04:14 +0200	[thread overview]
Message-ID: <5eb56833-de67-6586-1103-03bb970adf71@suse.cz> (raw)
In-Reply-To: <CAKdteObdkA8Q+2QRDzQ2gvUhxj8md07VgCFNH2vZVzprmF=W1g@mail.gmail.com>

On 4/2/20 7:17 PM, Christophe Lyon wrote:
> On Thu, 2 Apr 2020 at 17:16, Martin Liška <mliska@suse.cz> wrote:
>>
>> Hi.
>>
>> The patch compares type attributes for gimple_call_fntypes in IPA ICF.
>> Note that we were unable to find a generic function attribute that
>> can be used on a function type definition.
>>
>> For a one which is allowed assume_aligned(16) I get affects_type_identity == false
>> which seems suspicious to me.
>>
>> Note that we currently use comp_type_attributes in ICF for both variable and
>> function declarations.
>>
>> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>>
>> Ready to be installed?
>> Thanks,
>> Martin
>>
> 
> Hi,
> 
> Thanks for the quick patch!

Hi.

Good!

> 
> I confirm it fixes the problem I noticed on arm with the cmse-15.c for
> -O2 and -O3.
> 
> However, the testcase still fails with -Os. I haven't looked at the
> details, so it may be a different cause.

I analyzed that slightly and there are still IPA ICF merged that happen
(this time valid transformations):

/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/arm/cmse/cmse-15.c:14:5: optimized: Semantic equality hit:nonsecure0/4->nonsecure2/6
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/arm/cmse/cmse-15.c:14:5: optimized: Assembler symbol names:nonsecure0/4->nonsecure2/6

/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/arm/cmse/cmse-15.c:33:5: optimized: Semantic equality hit:secure0/8->secure2/10
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/arm/cmse/cmse-15.c:33:5: optimized: Assembler symbol names:secure0/8->secure2/10

and with -Os nosecure2 -> mosecure0 call is not inlined bad again. That makes the scanning pattern to miss:

-Os version:
nonsecure2:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	@ link register save eliminated.
	b	nonsecure0

-O2 version:
nonsecure2:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, lr}
	lsrs	r0, r0, #1
	lsls	r0, r0, #1
	mov	r1, r0
	mov	r2, r0
	mov	r3, r0
	bl	__gnu_cmse_nonsecure_call

Martin

> 
> Thanks,
> 
> Christophe
> 
>> gcc/ChangeLog:
>>
>> 2020-04-02  Martin Liska  <mliska@suse.cz>
>>
>>          PR ipa/94445
>>          * ipa-icf-gimple.c (func_checker::compare_gimple_call):
>>            Compare type attributes for gimple_call_fntypes.
>> ---
>>    gcc/ipa-icf-gimple.c | 4 ++++
>>    1 file changed, 4 insertions(+)
>>
>>


  reply	other threads:[~2020-04-03  7:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-02 15:16 Martin Liška
2020-04-02 17:17 ` Christophe Lyon
2020-04-03  7:04   ` Martin Liška [this message]
2020-04-03  6:59 ` Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5eb56833-de67-6586-1103-03bb970adf71@suse.cz \
    --to=mliska@suse.cz \
    --cc=christophe.lyon@linaro.org \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).