From: Caroline Tice <cmtice@google.com>
To: Uros Bizjak <ubizjak@gmail.com>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
Jeff Law <law@redhat.com>, Richard Henderson <rth@redhat.com>
Subject: Re: [PATCH] Fix size & type for cold partition names (hot-cold function partitioning)
Date: Wed, 29 Apr 2015 17:57:00 -0000 [thread overview]
Message-ID: <CABtf2+Q-fqDMUwCBY5WdoRYnyOh+MOB9G8HQh9+e3U_wHRjpoQ@mail.gmail.com> (raw)
In-Reply-To: <CAFULd4anFuykMh6ZmDhJ7QM_5enEpR=1p=S5n5gRgcHHpR1zmA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2573 bytes --]
The attached patch can revert the previous patch, if that is the way
we should proceed on this. If you want me to apply the reversion,
please let me know.
I would be happy to fix to the problem, rather than just reverting the
patch, but I do not have expertise in assembly language on other
platforms, so I would need some help, if anyone would be interested in
helping me?
-- Caroline Tice
cmtice@google.com
ChangeLog (gcc):
2015-04-29 Caroline Tice <cmtice@google.com>
Revert patch from 2015-04-27
* final.c (final_scan_insn): Remove code to output
cold_function_name as a function type in assembly.
* varasm.c (cold_function_name): Remove global declaration.
(assemble_start_function): Remove code to re-set
cold_function_name.
(assemble_end_function): Do not output side of cold
partition.
ChangLog (gcc/testsuite):
2015-04-29 Caroline Tice <cmtice@google.com>
Revert patch from 2015-04-27
* gcc.dg/tree-prof/cold_partition_label.c: Do not check
for cold partition size.
On Wed, Apr 29, 2015 at 9:33 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
>> 2015-03-27 Caroline Tice <cmtice@google.com>
>>
>> * final.c (final_scan_insn): Change 'cold_function_name' to
>> 'cold_partition_name' and make it a global variable; also output
>> assembly to give it a 'FUNC' type, if appropriate.
>> * varasm.c (cold_partition_name): Declare and initialize global
>> variable.
>> (assemble_start_function): Re-set value for cold_partition_name.
>> (assemble_end_function): Output assembly to calculate size of cold
>> partition, and associate size with name, if appropriate.
>> * varash.h (cold_partition_name): Add extern declaration for global
>> variable.
>> * testsuite/gcc.dg/tree-prof/cold_partition_label.c: Add dg-final-use
>> to scan assembly for cold partition name and size.
>
> This patch caused PR 65929 [1].
>
> Targets are (ab)using ASM_DECLARE_FUNCTION_NAME and
> ASM_DECLARE_FUNCTION_SIZE for more things that their name suggests. As
> shown in the PR, some directives that are generated through these
> macros apply only to real functions, not to parts of function in the
> middle of the function.
>
> In the particular case in the PR, assembler doesn't tolerate nested
> function declaration.
>
> I suggest to revert the patch for now, until side effects of the patch
> are resolved.
>
> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65929
>
> Uros.
[-- Attachment #2: revert-cold-partition-name.patch --]
[-- Type: text/x-patch, Size: 3340 bytes --]
Index: gcc/final.c
===================================================================
--- gcc/final.c (revision 222584)
+++ gcc/final.c (working copy)
@@ -2233,16 +2233,10 @@
suffixing "cold" to the original function's name. */
if (in_cold_section_p)
{
- cold_function_name
+ tree cold_function_name
= clone_function_name (current_function_decl, "cold");
-#ifdef ASM_DECLARE_FUNCTION_NAME
- ASM_DECLARE_FUNCTION_NAME (asm_out_file,
- IDENTIFIER_POINTER (cold_function_name),
- current_function_decl);
-#else
ASM_OUTPUT_LABEL (asm_out_file,
IDENTIFIER_POINTER (cold_function_name));
-#endif
}
break;
Index: gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c (revision 222584)
+++ gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c (working copy)
@@ -35,6 +35,4 @@
return 0;
}
-/* { dg-final-use { scan-assembler "foo\[._\]+cold\[\._\]+0" } } */
-/* { dg-final-use { scan-assembler "size\[ \ta-zA-Z0-0\]+foo\[._\]+cold\[\._\]+0" } } */
/* { dg-final-use { cleanup-saved-temps } } */
Index: gcc/varasm.c
===================================================================
--- gcc/varasm.c (revision 222584)
+++ gcc/varasm.c (working copy)
@@ -187,13 +187,6 @@
at the cold section. */
bool in_cold_section_p;
-/* The following global holds the "function name" for the code in the
- cold section of a function, if hot/cold function splitting is enabled
- and there was actually code that went into the cold section. A
- pseudo function name is needed for the cold section of code for some
- debugging tools that perform symbolization. */
-tree cold_function_name = NULL_TREE;
-
/* A linked list of all the unnamed sections. */
static GTY(()) section *unnamed_sections;
@@ -1726,7 +1719,6 @@
ASM_GENERATE_INTERNAL_LABEL (tmp_label, "LCOLDE", const_labelno);
crtl->subsections.cold_section_end_label = ggc_strdup (tmp_label);
const_labelno++;
- cold_function_name = NULL_TREE;
}
else
{
@@ -1864,12 +1856,6 @@
save_text_section = in_section;
switch_to_section (unlikely_text_section ());
-#ifdef ASM_DECLARE_FUNCTION_SIZE
- if (cold_function_name != NULL_TREE)
- ASM_DECLARE_FUNCTION_SIZE (asm_out_file,
- IDENTIFIER_POINTER (cold_function_name),
- decl);
-#endif
ASM_OUTPUT_LABEL (asm_out_file, crtl->subsections.cold_section_end_label);
if (first_function_block_is_cold)
switch_to_section (text_section);
Index: gcc/varasm.h
===================================================================
--- gcc/varasm.h (revision 222584)
+++ gcc/varasm.h (working copy)
@@ -20,13 +20,6 @@
#ifndef GCC_VARASM_H
#define GCC_VARASM_H
-/* The following global holds the "function name" for the code in the
- cold section of a function, if hot/cold function splitting is enabled
- and there was actually code that went into the cold section. A
- pseudo function name is needed for the cold section of code for some
- debugging tools that perform symbolization. */
-extern tree cold_function_name;
-
extern tree tree_output_constant_def (tree);
extern void make_decl_rtl (tree);
extern rtx make_decl_rtl_for_debug (tree);
next prev parent reply other threads:[~2015-04-29 17:38 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-29 16:48 Uros Bizjak
2015-04-29 17:57 ` Caroline Tice [this message]
2015-04-29 18:12 ` Uros Bizjak
2015-04-29 18:52 ` Uros Bizjak
2015-04-29 19:08 ` Caroline Tice
2015-04-29 21:30 ` Caroline Tice
2015-04-30 4:15 ` Jack Howarth
2015-04-30 6:40 ` Uros Bizjak
2015-04-30 16:36 ` Caroline Tice
2015-04-30 17:32 ` Uros Bizjak
2015-04-30 17:44 ` Richard Henderson
2015-04-30 19:34 ` H.J. Lu
2015-04-30 19:34 ` Caroline Tice
2015-04-30 19:38 ` Uros Bizjak
2015-04-30 19:42 ` H.J. Lu
-- strict thread matches above, loose matches on Subject: below --
2015-04-28 17:14 David Edelsohn
2015-04-28 17:15 ` Caroline Tice
2015-04-28 17:16 ` Jeff Law
2015-04-28 17:17 ` Gerald Pfeifer
2015-04-28 17:33 ` David Edelsohn
2015-04-28 17:36 ` Caroline Tice
2014-12-05 22:41 Caroline Tice
2014-12-08 21:07 ` Jeff Law
2015-03-27 16:45 ` Caroline Tice
2015-03-31 5:19 ` Jeff Law
2015-03-31 15:13 ` Caroline Tice
2015-03-31 15:17 ` 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=CABtf2+Q-fqDMUwCBY5WdoRYnyOh+MOB9G8HQh9+e3U_wHRjpoQ@mail.gmail.com \
--to=cmtice@google.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=law@redhat.com \
--cc=rth@redhat.com \
--cc=ubizjak@gmail.com \
/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).