public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeff Law <law@redhat.com>
To: Andrew Burgess <andrew.burgess@embecosm.com>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 1/2] gcc: Remove unneeded global flag.
Date: Wed, 22 Jun 2016 02:55:00 -0000	[thread overview]
Message-ID: <512a967c-39c4-44f5-6f24-d75ef543979d@redhat.com> (raw)
In-Reply-To: <a3ed605cdecc22d1c5ff91d90b4856574fea2139.1465577682.git.andrew.burgess@embecosm.com>

On 06/10/2016 10:56 AM, Andrew Burgess wrote:
> The global flag `user_defined_section_attribute' is set while parsing C
> code when the section attribute is encountered.  The flag is set when
> anything has the section attribute applied to it, functions or data.
>
> The only place this global was used was within the gate function for
> partitioning blocks (pass_partition_blocks::gate), however, the
> partitioning is done during compilation, while the flag is set earlier,
> during the parsing.  The flag is then cleared again during the final
> compilation pass.
>
> The result is that if any function or data has a section attribute then
> the flag will be set to true during the file parse pass.  The first
> compiled function will then skip the partition-blocks pass, and the flag
> will be set back to false during the final-pass on the first function.
> After then, the flag is never set to true again.
>
> The guarding of the partition-blocks pass does not appear to be
> necessary, given that applying a section attribute correctly
> overrides the hot/cold section partitioning (this is taken care if in
> varasm.c).
>
> gcc/ChangeLog:
>
> 	* gcc/bb-reorder.c: Remove 'toplev.h' include.
> 	(pass_partition_blocks::gate): No longer check
> 	user_defined_section_attribute.
> 	* gcc/c-family/c-common.c (handle_section_attribute): No longer
> 	set user_defined_section_attribute.
> 	* gcc/final.c (rest_of_handle_final): Likewise.
> 	* gcc/toplev.c: Remove definition of user_defined_section_attribute.
> 	* gcc/toplev.h: Remove declaration of
> 	user_defined_section_attribute.
user_defined_section_attribute was introduced as part of the hot/cold 
partitioning changes.

https://gcc.gnu.org/ml/gcc-patches/2004-07/msg01545.html


What's supposed to happen is hot/cold partitioning is supposed to be 
turned off for the function which has the a user defined section 
attribute.

So proper behaviour is to set the flag to true when the attribute is 
parsed and turn it off when we're finished with the current function. 
The gate for hot/cold partitioning should check the value of the flag 
and avoid hot/cold partitioning when the flag is true.

So AFAICT everything is working as it should.  Keep in mind that 
multiple functions might have user defined section attributes.

So what might be better to do here is introduce a test to verify proper 
behavior.

Jeff

  reply	other threads:[~2016-06-22  2:55 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-10 16:56 [PATCH 0/2] Remove user_defined_section_attribute global Andrew Burgess
2016-06-10 16:56 ` [PATCH 1/2] gcc: Remove unneeded global flag Andrew Burgess
2016-06-22  2:55   ` Jeff Law [this message]
2016-06-22  6:02     ` Jakub Jelinek
2016-06-29 19:33     ` Andrew Burgess
2016-09-14 13:05       ` Ping: " Andrew Burgess
2016-09-14 13:08         ` Jakub Jelinek
2016-09-15 14:30           ` Andrew Burgess
2016-10-28 15:58             ` Jeff Law
2016-10-28 16:15               ` Andrew Burgess
2016-11-03 12:01         ` Bernd Schmidt
2016-11-16 20:09           ` Andrew Burgess
2016-11-16 21:00             ` Mike Stump
2016-11-16 22:12               ` Andrew Burgess
2016-11-17 17:59                 ` Jeff Law
2016-11-18 12:22                 ` Christophe Lyon
2016-11-19 21:59                   ` Andrew Burgess
2016-11-20 17:27                     ` Mike Stump
2016-11-21 12:47                       ` Christophe Lyon
2016-11-24 21:40                         ` Andrew Burgess
2016-11-28 22:09                           ` Jeff Law
2016-11-29 14:03                             ` Andrew Burgess
2016-11-29 17:36                               ` Jeff Law
2016-11-30 11:40                                 ` Andrew Burgess
2016-06-10 16:57 ` [PATCH 2/2] gcc: Update comment in bb-reorder.c Andrew Burgess
2016-06-22  2:59   ` Jeff Law

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=512a967c-39c4-44f5-6f24-d75ef543979d@redhat.com \
    --to=law@redhat.com \
    --cc=andrew.burgess@embecosm.com \
    --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).