diff mbox series

Revert a hunk from r261322 (PR lto/88876).

Message ID f536d217-030e-c621-b6fa-873756e885c9@suse.cz
State New
Headers show
Series Revert a hunk from r261322 (PR lto/88876). | expand

Commit Message

Martin Liška Jan. 21, 2019, 8:40 a.m. UTC
Hi.

The patch puts back ::get_create for a node that can be seen first time.
It's due to -O0 optimize attribute. It was unable to write properly
LTO test-case for it.

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

Ready to be installed?
Thanks,
Martin

gcc/ChangeLog:

2019-01-18  Martin Liska  <mliska@suse.cz>

	PR lto/88876
	* ipa-pure-const.c (propagate_pure_const): Revert hunk as
	we need default values of funct_state for a function that
	is not optimized.
---
 gcc/ipa-pure-const.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jan Hubicka Jan. 25, 2019, 6:59 p.m. UTC | #1
> Hi.
> 
> The patch puts back ::get_create for a node that can be seen first time.
> It's due to -O0 optimize attribute. It was unable to write properly
> LTO test-case for it.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> 
> Ready to be installed?
> Thanks,
> Martin
> 
> gcc/ChangeLog:
> 
> 2019-01-18  Martin Liska  <mliska@suse.cz>
> 
> 	PR lto/88876
> 	* ipa-pure-const.c (propagate_pure_const): Revert hunk as
> 	we need default values of funct_state for a function that
> 	is not optimized.

I think you want to test if y enables pure_const prior calling get
becuase get_create will just create empty info that will likely have
IPA_CONST (which is 0) and not IPA_NEITHER.  There are multiple copies
of this code in other propagators and I think they all needs to check if
the pass is enabled for particular symbol and if not resort to
propagating nothing.

Honza
> ---
>  gcc/ipa-pure-const.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> 

> diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
> index 8227eed29bc..b8fd08c0a7e 100644
> --- a/gcc/ipa-pure-const.c
> +++ b/gcc/ipa-pure-const.c
> @@ -1498,7 +1498,8 @@ propagate_pure_const (void)
>  		}
>  	      if (avail > AVAIL_INTERPOSABLE)
>  		{
> -		  funct_state y_l = funct_state_summaries->get (y);
> +		  funct_state y_l = funct_state_summaries->get_create (y);
> +
>  		  if (dump_file && (dump_flags & TDF_DETAILS))
>  		    {
>  		      fprintf (dump_file,
>
Martin Liška Feb. 4, 2019, 12:42 p.m. UTC | #2
On 1/25/19 7:59 PM, Jan Hubicka wrote:
>> Hi.
>>
>> The patch puts back ::get_create for a node that can be seen first time.
>> It's due to -O0 optimize attribute. It was unable to write properly
>> LTO test-case for it.
>>
>> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>>
>> Ready to be installed?
>> Thanks,
>> Martin
>>
>> gcc/ChangeLog:
>>
>> 2019-01-18  Martin Liska  <mliska@suse.cz>
>>
>> 	PR lto/88876
>> 	* ipa-pure-const.c (propagate_pure_const): Revert hunk as
>> 	we need default values of funct_state for a function that
>> 	is not optimized.
> 
> I think you want to test if y enables pure_const prior calling get
> becuase get_create will just create empty info that will likely have
> IPA_CONST (which is 0) and not IPA_NEITHER.

No, it creates proper state:

  funct_state_d (): pure_const_state (IPA_NEITHER),
    state_previously_known (IPA_NEITHER), looping_previously_known (true),
    looping (true), can_throw (true), can_free (true),
    malloc_state (STATE_MALLOC_BOTTOM) {}

Note that working with funct_state_d fields is quite complex and if you
want to not call get_create, then I would leave the patch to you :)

Martin

There are multiple copies
> of this code in other propagators and I think they all needs to check if
> the pass is enabled for particular symbol and if not resort to
> propagating nothing.
> 
> Honza
>> ---
>>  gcc/ipa-pure-const.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>>
> 
>> diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
>> index 8227eed29bc..b8fd08c0a7e 100644
>> --- a/gcc/ipa-pure-const.c
>> +++ b/gcc/ipa-pure-const.c
>> @@ -1498,7 +1498,8 @@ propagate_pure_const (void)
>>  		}
>>  	      if (avail > AVAIL_INTERPOSABLE)
>>  		{
>> -		  funct_state y_l = funct_state_summaries->get (y);
>> +		  funct_state y_l = funct_state_summaries->get_create (y);
>> +
>>  		  if (dump_file && (dump_flags & TDF_DETAILS))
>>  		    {
>>  		      fprintf (dump_file,
>>
>
diff mbox series

Patch

diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 8227eed29bc..b8fd08c0a7e 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -1498,7 +1498,8 @@  propagate_pure_const (void)
 		}
 	      if (avail > AVAIL_INTERPOSABLE)
 		{
-		  funct_state y_l = funct_state_summaries->get (y);
+		  funct_state y_l = funct_state_summaries->get_create (y);
+
 		  if (dump_file && (dump_flags & TDF_DETAILS))
 		    {
 		      fprintf (dump_file,