public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/casm-state-v2)] Step #2.
@ 2021-09-09 12:59 Martin Liska
0 siblings, 0 replies; 3+ messages in thread
From: Martin Liska @ 2021-09-09 12:59 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:ae20c71249396867ebce7bb99325e9b01c19355f
commit ae20c71249396867ebce7bb99325e9b01c19355f
Author: Martin Liska <mliska@suse.cz>
Date: Tue Sep 7 13:47:44 2021 +0200
Step #2.
Diff:
---
gcc/dbxout.c | 12 ++++++------
gcc/dwarf2out.c | 26 +++++++++++++-------------
gcc/final.c | 14 +++++++-------
gcc/langhooks.c | 2 +-
gcc/output.h | 30 +++++++++++++++++++++++-------
gcc/targhooks.c | 2 +-
gcc/varasm.c | 42 +++++++++++++++---------------------------
7 files changed, 66 insertions(+), 62 deletions(-)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 6be282714cf..d41ce0a968f 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -934,7 +934,7 @@ dbxout_function_end (tree decl ATTRIBUTE_UNUSED)
if (crtl->has_bb_partition)
{
dbxout_begin_empty_stabs (N_FUN);
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
dbxout_stab_value_label_diff (crtl->subsections.cold_section_end_label,
crtl->subsections.cold_section_label);
else
@@ -1314,12 +1314,12 @@ dbxout_switch_text_section (void)
/* The N_FUN tag at the end of the function is a GNU extension,
which may be undesirable, and is unnecessary if we do not have
named sections. */
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
dbxout_block (DECL_INITIAL (current_function_decl), 0,
DECL_ARGUMENTS (current_function_decl), -1);
dbxout_function_end (current_function_decl);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
@@ -3776,7 +3776,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* If called for the second partition, ignore blocks that don't have
any children in the second partition. */
- if (crtl->has_bb_partition && in_cold_section_p && depth == 0)
+ if (crtl->has_bb_partition && casm->in_cold_section_p && depth == 0)
dbx_block_with_cold_children (block);
for (; block; block = BLOCK_CHAIN (block))
@@ -3801,7 +3801,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
the assembler symbols LBBn and LBEn
that final will define around the code in this block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[20];
const char *scope_start;
@@ -3829,7 +3829,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* Refer to the marker for the end of the block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[100];
if (depth == 0)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 9876750e4f9..44d53e11ffd 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1295,7 +1295,7 @@ dwarf2out_switch_text_section (void)
current_function_funcdef_no);
fde->dw_fde_second_begin = ggc_strdup (label);
- if (!in_cold_section_p)
+ if (!casm->in_cold_section_p)
{
fde->dw_fde_end = crtl->subsections.cold_section_end_label;
fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
@@ -17268,7 +17268,7 @@ secname_for_decl (const_tree decl)
secname = DECL_SECTION_NAME (decl);
else if (current_function_decl && DECL_SECTION_NAME (current_function_decl))
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
section *sec = current_function_section ();
if (sec->common.flags & SECTION_NAMED)
@@ -17276,7 +17276,7 @@ secname_for_decl (const_tree decl)
}
secname = DECL_SECTION_NAME (current_function_decl);
}
- else if (cfun && in_cold_section_p)
+ else if (cfun && casm->in_cold_section_p)
secname = crtl->subsections.cold_section_label;
else
secname = text_section_label;
@@ -17597,12 +17597,12 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
if (cfun && crtl->has_bb_partition)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = first_function_block_is_cold;
if (loc_list->last_before_switch == NULL)
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
else
secname = secname_for_decl (decl);
@@ -17680,10 +17680,10 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
&& crtl->has_bb_partition
&& node == loc_list->last_before_switch)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = !first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = !first_function_block_is_cold;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
if (range_across_switch)
@@ -27851,7 +27851,7 @@ create_label:
last_{,postcall_}label so that they are not reused this time. */
if (last_var_location_insn == NULL_RTX
|| last_var_location_insn != next_real
- || last_in_cold_section_p != in_cold_section_p)
+ || last_in_cold_section_p != casm->in_cold_section_p)
{
last_label = NULL;
last_postcall_label = NULL;
@@ -28022,7 +28022,7 @@ create_label:
}
last_var_location_insn = next_real;
- last_in_cold_section_p = in_cold_section_p;
+ last_in_cold_section_p = casm->in_cold_section_p;
}
/* Check whether BLOCK, a lexical block, is nested within OUTER, or is
@@ -28207,7 +28207,7 @@ set_cur_line_info_table (section *sec)
if (crtl->has_bb_partition)
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
end_label = crtl->subsections.cold_section_end_label;
else
end_label = crtl->subsections.hot_section_end_label;
diff --git a/gcc/final.c b/gcc/final.c
index ac6892d041c..481e1ef6835 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2189,10 +2189,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (targetm.asm_out.unwind_emit)
targetm.asm_out.unwind_emit (asm_out_file, insn);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
- gcc_checking_assert (in_cold_section_p);
- if (in_cold_section_p)
+ gcc_checking_assert (casm->in_cold_section_p);
+ if (casm->in_cold_section_p)
cold_function_name
= clone_function_name (current_function_decl, "cold");
@@ -2213,10 +2213,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
switch_to_section (current_function_section ());
targetm.asm_out.function_switched_text_sections (asm_out_file,
current_function_decl,
- in_cold_section_p);
+ casm->in_cold_section_p);
/* Emit a label for the split cold section. Form label name by
suffixing "cold" to the original function's name. */
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
#ifdef ASM_DECLARE_COLD_FUNCTION_NAME
ASM_DECLARE_COLD_FUNCTION_NAME (asm_out_file,
@@ -2323,7 +2323,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
/* Mark this block as output. */
TREE_ASM_WRITTEN (NOTE_BLOCK (insn)) = 1;
- BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = in_cold_section_p;
+ BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = casm->in_cold_section_p;
}
if (write_symbols == DBX_DEBUG)
{
@@ -2358,7 +2358,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (!DECL_IGNORED_P (current_function_decl))
debug_hooks->end_block (high_block_linenum, n);
gcc_assert (BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn))
- == in_cold_section_p);
+ == casm->in_cold_section_p);
}
if (write_symbols == DBX_DEBUG)
{
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 48c72377778..9a19652a953 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -803,7 +803,7 @@ lhd_begin_section (const char *name)
/* Save the old section so we can restore it in lto_end_asm_section. */
gcc_assert (!saved_section);
- saved_section = in_section;
+ saved_section = casm->in_section;
if (!saved_section)
saved_section = text_section;
diff --git a/gcc/output.h b/gcc/output.h
index c7ee25c2bd4..e8e2a823a0d 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -313,25 +313,41 @@ extern rtx_sequence *final_sequence;
/* File in which assembler code is being written. */
+struct section_hasher : ggc_ptr_hash<section>
+{
+ typedef const char *compare_type;
+
+ static hashval_t hash (section *);
+ static bool equal (section *, const char *);
+};
+
struct GTY(()) asm_out_state
{
- asm_out_state (): out_file (NULL), m_in_section (NULL),
- m_in_cold_section_p (false)
- {}
+ asm_out_state (): out_file (NULL), in_section (NULL),
+ in_cold_section_p (false)
+ {
+ section_htab = hash_table<section_hasher>::create_ggc (31);
+ }
/* Assembly output stream. */
FILE * GTY((skip)) out_file;
- section *m_in_section;
- bool m_in_cold_section_p;
+ /* Hash table of named sections. */
+ hash_table<section_hasher> *section_htab;
+
+ /* asm_out_file's current section. This is NULL if no section has yet
+ been selected or if we lose track of what the current section is. */
+ section *in_section;
+
+ /* True if code for the current function is currently being directed
+ at the cold section. */
+ bool in_cold_section_p;
};
extern GTY(()) asm_out_state *casm;
/* Helper macro for commonly used accesses. */
#define asm_out_file casm->out_file
-#define in_section casm->m_in_section
-#define in_cold_section_p casm->m_in_cold_section_p
/* The first global object in the file. */
extern const char *first_global_object_name;
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index c9b5208853d..68660186ec5 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1962,7 +1962,7 @@ default_print_patchable_function_entry_1 (FILE *file,
{
char buf[256];
static int patch_area_number;
- section *previous_section = in_section;
+ section *previous_section = casm->in_section;
const char *asm_op = integer_asm_op (POINTER_SIZE_UNITS, false);
gcc_assert (asm_op != NULL);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index b876063f5be..a5e550d81ea 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -173,17 +173,6 @@ static GTY(()) section *unnamed_sections;
#define IN_NAMED_SECTION(DECL) \
(VAR_OR_FUNCTION_DECL_P (DECL) && DECL_SECTION_NAME (DECL) != NULL)
-struct section_hasher : ggc_ptr_hash<section>
-{
- typedef const char *compare_type;
-
- static hashval_t hash (section *);
- static bool equal (section *, const char *);
-};
-
-/* Hash table of named sections. */
-static GTY(()) hash_table<section_hasher> *section_htab;
-
struct object_block_hasher : ggc_ptr_hash<object_block>
{
typedef const section *compare_type;
@@ -286,8 +275,8 @@ get_section (const char *name, unsigned int flags, tree decl,
{
section *sect, **slot;
- slot = section_htab->find_slot_with_hash (name, htab_hash_string (name),
- INSERT);
+ slot = casm->section_htab->find_slot_with_hash (name, htab_hash_string (name),
+ INSERT);
flags |= SECTION_NAMED;
if (decl != nullptr
&& DECL_P (decl)
@@ -710,7 +699,7 @@ function_section (tree decl)
section *
current_function_section (void)
{
- return function_section_1 (current_function_decl, in_cold_section_p);
+ return function_section_1 (current_function_decl, casm->in_cold_section_p);
}
/* Tell assembler to switch to unlikely-to-be-executed text section. */
@@ -738,7 +727,7 @@ unlikely_text_section_p (section *sect)
void
switch_to_other_text_partition (void)
{
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
}
@@ -1816,7 +1805,7 @@ decide_function_section (tree decl)
== NODE_FREQUENCY_UNLIKELY_EXECUTED);
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
/* Get the function's name, as described by its RTL. This may be
@@ -1898,7 +1887,7 @@ assemble_start_function (tree decl, const char *fnname)
hot_label_written = true;
first_function_block_is_cold = true;
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
@@ -2012,7 +2001,7 @@ assemble_end_function (tree decl, const char *fnname ATTRIBUTE_UNUSED)
{
section *save_text_section;
- save_text_section = in_section;
+ save_text_section = casm->in_section;
switch_to_section (unlikely_text_section ());
#ifdef ASM_DECLARE_COLD_FUNCTION_SIZE
if (cold_function_name != NULL_TREE)
@@ -2042,7 +2031,7 @@ assemble_zeros (unsigned HOST_WIDE_INT size)
#ifdef ASM_NO_SKIP_IN_TEXT
/* The `space' pseudo in the text section outputs nop insns rather than 0s,
so we must output 0s explicitly in the text section. */
- if (ASM_NO_SKIP_IN_TEXT && (in_section->common.flags & SECTION_CODE) != 0)
+ if (ASM_NO_SKIP_IN_TEXT && (casm->in_section->common.flags & SECTION_CODE) != 0)
{
unsigned HOST_WIDE_INT i;
for (i = 0; i < size; i++)
@@ -4184,8 +4173,8 @@ output_constant_pool_1 (class constant_descriptor_rtx *desc,
/* Make sure all constants in SECTION_MERGE and not SECTION_STRINGS
sections have proper size. */
if (align > GET_MODE_BITSIZE (desc->mode)
- && in_section
- && (in_section->common.flags & SECTION_MERGE))
+ && casm->in_section
+ && (casm->in_section->common.flags & SECTION_MERGE))
assemble_align (align);
#ifdef ASM_OUTPUT_SPECIAL_POOL_ENTRY
@@ -6588,7 +6577,6 @@ make_decl_one_only (tree decl, tree comdat_group)
void
init_varasm_once (void)
{
- section_htab = hash_table<section_hasher>::create_ggc (31);
object_block_htab = hash_table<object_block_hasher>::create_ggc (31);
const_desc_htab = hash_table<tree_descriptor_hasher>::create_ggc (1009);
@@ -7810,13 +7798,13 @@ switch_to_section (section *new_section, tree decl)
"%qD was declared here", used_decl);
}
}
- else if (in_section == new_section)
+ else if (casm->in_section == new_section)
return;
if (new_section->common.flags & SECTION_FORGET)
- in_section = NULL;
+ casm->in_section = NULL;
else
- in_section = new_section;
+ casm->in_section = new_section;
switch (SECTION_STYLE (new_section))
{
@@ -8461,7 +8449,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
#else
/* Neither OBJECT_FORMAT_PE, nor OBJECT_FORMAT_COFF is set here.
Therefore the following check is used.
@@ -8487,7 +8475,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
}
else
switch_to_section (sect);
^ permalink raw reply [flat|nested] 3+ messages in thread
* [gcc(refs/users/marxin/heads/casm-state-v2)] Step #2.
@ 2021-09-10 9:28 Martin Liska
0 siblings, 0 replies; 3+ messages in thread
From: Martin Liska @ 2021-09-10 9:28 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:2f7e6d69dfe18e98feb1d3614162889f422d80a9
commit 2f7e6d69dfe18e98feb1d3614162889f422d80a9
Author: Martin Liska <mliska@suse.cz>
Date: Tue Sep 7 13:47:44 2021 +0200
Step #2.
Diff:
---
gcc/dbxout.c | 12 ++++++------
gcc/dwarf2out.c | 26 +++++++++++++-------------
gcc/final.c | 14 +++++++-------
gcc/langhooks.c | 2 +-
gcc/output.h | 30 +++++++++++++++++++++++-------
gcc/targhooks.c | 2 +-
gcc/varasm.c | 42 +++++++++++++++---------------------------
7 files changed, 66 insertions(+), 62 deletions(-)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 6be282714cf..d41ce0a968f 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -934,7 +934,7 @@ dbxout_function_end (tree decl ATTRIBUTE_UNUSED)
if (crtl->has_bb_partition)
{
dbxout_begin_empty_stabs (N_FUN);
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
dbxout_stab_value_label_diff (crtl->subsections.cold_section_end_label,
crtl->subsections.cold_section_label);
else
@@ -1314,12 +1314,12 @@ dbxout_switch_text_section (void)
/* The N_FUN tag at the end of the function is a GNU extension,
which may be undesirable, and is unnecessary if we do not have
named sections. */
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
dbxout_block (DECL_INITIAL (current_function_decl), 0,
DECL_ARGUMENTS (current_function_decl), -1);
dbxout_function_end (current_function_decl);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
@@ -3776,7 +3776,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* If called for the second partition, ignore blocks that don't have
any children in the second partition. */
- if (crtl->has_bb_partition && in_cold_section_p && depth == 0)
+ if (crtl->has_bb_partition && casm->in_cold_section_p && depth == 0)
dbx_block_with_cold_children (block);
for (; block; block = BLOCK_CHAIN (block))
@@ -3801,7 +3801,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
the assembler symbols LBBn and LBEn
that final will define around the code in this block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[20];
const char *scope_start;
@@ -3829,7 +3829,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* Refer to the marker for the end of the block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[100];
if (depth == 0)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 9876750e4f9..44d53e11ffd 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1295,7 +1295,7 @@ dwarf2out_switch_text_section (void)
current_function_funcdef_no);
fde->dw_fde_second_begin = ggc_strdup (label);
- if (!in_cold_section_p)
+ if (!casm->in_cold_section_p)
{
fde->dw_fde_end = crtl->subsections.cold_section_end_label;
fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
@@ -17268,7 +17268,7 @@ secname_for_decl (const_tree decl)
secname = DECL_SECTION_NAME (decl);
else if (current_function_decl && DECL_SECTION_NAME (current_function_decl))
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
section *sec = current_function_section ();
if (sec->common.flags & SECTION_NAMED)
@@ -17276,7 +17276,7 @@ secname_for_decl (const_tree decl)
}
secname = DECL_SECTION_NAME (current_function_decl);
}
- else if (cfun && in_cold_section_p)
+ else if (cfun && casm->in_cold_section_p)
secname = crtl->subsections.cold_section_label;
else
secname = text_section_label;
@@ -17597,12 +17597,12 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
if (cfun && crtl->has_bb_partition)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = first_function_block_is_cold;
if (loc_list->last_before_switch == NULL)
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
else
secname = secname_for_decl (decl);
@@ -17680,10 +17680,10 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
&& crtl->has_bb_partition
&& node == loc_list->last_before_switch)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = !first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = !first_function_block_is_cold;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
if (range_across_switch)
@@ -27851,7 +27851,7 @@ create_label:
last_{,postcall_}label so that they are not reused this time. */
if (last_var_location_insn == NULL_RTX
|| last_var_location_insn != next_real
- || last_in_cold_section_p != in_cold_section_p)
+ || last_in_cold_section_p != casm->in_cold_section_p)
{
last_label = NULL;
last_postcall_label = NULL;
@@ -28022,7 +28022,7 @@ create_label:
}
last_var_location_insn = next_real;
- last_in_cold_section_p = in_cold_section_p;
+ last_in_cold_section_p = casm->in_cold_section_p;
}
/* Check whether BLOCK, a lexical block, is nested within OUTER, or is
@@ -28207,7 +28207,7 @@ set_cur_line_info_table (section *sec)
if (crtl->has_bb_partition)
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
end_label = crtl->subsections.cold_section_end_label;
else
end_label = crtl->subsections.hot_section_end_label;
diff --git a/gcc/final.c b/gcc/final.c
index ac6892d041c..481e1ef6835 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2189,10 +2189,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (targetm.asm_out.unwind_emit)
targetm.asm_out.unwind_emit (asm_out_file, insn);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
- gcc_checking_assert (in_cold_section_p);
- if (in_cold_section_p)
+ gcc_checking_assert (casm->in_cold_section_p);
+ if (casm->in_cold_section_p)
cold_function_name
= clone_function_name (current_function_decl, "cold");
@@ -2213,10 +2213,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
switch_to_section (current_function_section ());
targetm.asm_out.function_switched_text_sections (asm_out_file,
current_function_decl,
- in_cold_section_p);
+ casm->in_cold_section_p);
/* Emit a label for the split cold section. Form label name by
suffixing "cold" to the original function's name. */
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
#ifdef ASM_DECLARE_COLD_FUNCTION_NAME
ASM_DECLARE_COLD_FUNCTION_NAME (asm_out_file,
@@ -2323,7 +2323,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
/* Mark this block as output. */
TREE_ASM_WRITTEN (NOTE_BLOCK (insn)) = 1;
- BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = in_cold_section_p;
+ BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = casm->in_cold_section_p;
}
if (write_symbols == DBX_DEBUG)
{
@@ -2358,7 +2358,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (!DECL_IGNORED_P (current_function_decl))
debug_hooks->end_block (high_block_linenum, n);
gcc_assert (BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn))
- == in_cold_section_p);
+ == casm->in_cold_section_p);
}
if (write_symbols == DBX_DEBUG)
{
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 48c72377778..9a19652a953 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -803,7 +803,7 @@ lhd_begin_section (const char *name)
/* Save the old section so we can restore it in lto_end_asm_section. */
gcc_assert (!saved_section);
- saved_section = in_section;
+ saved_section = casm->in_section;
if (!saved_section)
saved_section = text_section;
diff --git a/gcc/output.h b/gcc/output.h
index c7ee25c2bd4..e8e2a823a0d 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -313,25 +313,41 @@ extern rtx_sequence *final_sequence;
/* File in which assembler code is being written. */
+struct section_hasher : ggc_ptr_hash<section>
+{
+ typedef const char *compare_type;
+
+ static hashval_t hash (section *);
+ static bool equal (section *, const char *);
+};
+
struct GTY(()) asm_out_state
{
- asm_out_state (): out_file (NULL), m_in_section (NULL),
- m_in_cold_section_p (false)
- {}
+ asm_out_state (): out_file (NULL), in_section (NULL),
+ in_cold_section_p (false)
+ {
+ section_htab = hash_table<section_hasher>::create_ggc (31);
+ }
/* Assembly output stream. */
FILE * GTY((skip)) out_file;
- section *m_in_section;
- bool m_in_cold_section_p;
+ /* Hash table of named sections. */
+ hash_table<section_hasher> *section_htab;
+
+ /* asm_out_file's current section. This is NULL if no section has yet
+ been selected or if we lose track of what the current section is. */
+ section *in_section;
+
+ /* True if code for the current function is currently being directed
+ at the cold section. */
+ bool in_cold_section_p;
};
extern GTY(()) asm_out_state *casm;
/* Helper macro for commonly used accesses. */
#define asm_out_file casm->out_file
-#define in_section casm->m_in_section
-#define in_cold_section_p casm->m_in_cold_section_p
/* The first global object in the file. */
extern const char *first_global_object_name;
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index c9b5208853d..68660186ec5 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1962,7 +1962,7 @@ default_print_patchable_function_entry_1 (FILE *file,
{
char buf[256];
static int patch_area_number;
- section *previous_section = in_section;
+ section *previous_section = casm->in_section;
const char *asm_op = integer_asm_op (POINTER_SIZE_UNITS, false);
gcc_assert (asm_op != NULL);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index b876063f5be..a5e550d81ea 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -173,17 +173,6 @@ static GTY(()) section *unnamed_sections;
#define IN_NAMED_SECTION(DECL) \
(VAR_OR_FUNCTION_DECL_P (DECL) && DECL_SECTION_NAME (DECL) != NULL)
-struct section_hasher : ggc_ptr_hash<section>
-{
- typedef const char *compare_type;
-
- static hashval_t hash (section *);
- static bool equal (section *, const char *);
-};
-
-/* Hash table of named sections. */
-static GTY(()) hash_table<section_hasher> *section_htab;
-
struct object_block_hasher : ggc_ptr_hash<object_block>
{
typedef const section *compare_type;
@@ -286,8 +275,8 @@ get_section (const char *name, unsigned int flags, tree decl,
{
section *sect, **slot;
- slot = section_htab->find_slot_with_hash (name, htab_hash_string (name),
- INSERT);
+ slot = casm->section_htab->find_slot_with_hash (name, htab_hash_string (name),
+ INSERT);
flags |= SECTION_NAMED;
if (decl != nullptr
&& DECL_P (decl)
@@ -710,7 +699,7 @@ function_section (tree decl)
section *
current_function_section (void)
{
- return function_section_1 (current_function_decl, in_cold_section_p);
+ return function_section_1 (current_function_decl, casm->in_cold_section_p);
}
/* Tell assembler to switch to unlikely-to-be-executed text section. */
@@ -738,7 +727,7 @@ unlikely_text_section_p (section *sect)
void
switch_to_other_text_partition (void)
{
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
}
@@ -1816,7 +1805,7 @@ decide_function_section (tree decl)
== NODE_FREQUENCY_UNLIKELY_EXECUTED);
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
/* Get the function's name, as described by its RTL. This may be
@@ -1898,7 +1887,7 @@ assemble_start_function (tree decl, const char *fnname)
hot_label_written = true;
first_function_block_is_cold = true;
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
@@ -2012,7 +2001,7 @@ assemble_end_function (tree decl, const char *fnname ATTRIBUTE_UNUSED)
{
section *save_text_section;
- save_text_section = in_section;
+ save_text_section = casm->in_section;
switch_to_section (unlikely_text_section ());
#ifdef ASM_DECLARE_COLD_FUNCTION_SIZE
if (cold_function_name != NULL_TREE)
@@ -2042,7 +2031,7 @@ assemble_zeros (unsigned HOST_WIDE_INT size)
#ifdef ASM_NO_SKIP_IN_TEXT
/* The `space' pseudo in the text section outputs nop insns rather than 0s,
so we must output 0s explicitly in the text section. */
- if (ASM_NO_SKIP_IN_TEXT && (in_section->common.flags & SECTION_CODE) != 0)
+ if (ASM_NO_SKIP_IN_TEXT && (casm->in_section->common.flags & SECTION_CODE) != 0)
{
unsigned HOST_WIDE_INT i;
for (i = 0; i < size; i++)
@@ -4184,8 +4173,8 @@ output_constant_pool_1 (class constant_descriptor_rtx *desc,
/* Make sure all constants in SECTION_MERGE and not SECTION_STRINGS
sections have proper size. */
if (align > GET_MODE_BITSIZE (desc->mode)
- && in_section
- && (in_section->common.flags & SECTION_MERGE))
+ && casm->in_section
+ && (casm->in_section->common.flags & SECTION_MERGE))
assemble_align (align);
#ifdef ASM_OUTPUT_SPECIAL_POOL_ENTRY
@@ -6588,7 +6577,6 @@ make_decl_one_only (tree decl, tree comdat_group)
void
init_varasm_once (void)
{
- section_htab = hash_table<section_hasher>::create_ggc (31);
object_block_htab = hash_table<object_block_hasher>::create_ggc (31);
const_desc_htab = hash_table<tree_descriptor_hasher>::create_ggc (1009);
@@ -7810,13 +7798,13 @@ switch_to_section (section *new_section, tree decl)
"%qD was declared here", used_decl);
}
}
- else if (in_section == new_section)
+ else if (casm->in_section == new_section)
return;
if (new_section->common.flags & SECTION_FORGET)
- in_section = NULL;
+ casm->in_section = NULL;
else
- in_section = new_section;
+ casm->in_section = new_section;
switch (SECTION_STYLE (new_section))
{
@@ -8461,7 +8449,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
#else
/* Neither OBJECT_FORMAT_PE, nor OBJECT_FORMAT_COFF is set here.
Therefore the following check is used.
@@ -8487,7 +8475,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
}
else
switch_to_section (sect);
^ permalink raw reply [flat|nested] 3+ messages in thread
* [gcc(refs/users/marxin/heads/casm-state-v2)] Step #2.
@ 2021-09-08 11:19 Martin Liska
0 siblings, 0 replies; 3+ messages in thread
From: Martin Liska @ 2021-09-08 11:19 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:4d692d6d4ad6b26ed941e35aa8990f724fa8f9b9
commit 4d692d6d4ad6b26ed941e35aa8990f724fa8f9b9
Author: Martin Liska <mliska@suse.cz>
Date: Tue Sep 7 13:47:44 2021 +0200
Step #2.
Diff:
---
gcc/dbxout.c | 12 ++++++------
gcc/dwarf2out.c | 26 +++++++++++++-------------
gcc/final.c | 14 +++++++-------
gcc/langhooks.c | 2 +-
gcc/output.h | 30 +++++++++++++++++++++++-------
gcc/targhooks.c | 2 +-
gcc/varasm.c | 42 +++++++++++++++---------------------------
7 files changed, 66 insertions(+), 62 deletions(-)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 6be282714cf..d41ce0a968f 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -934,7 +934,7 @@ dbxout_function_end (tree decl ATTRIBUTE_UNUSED)
if (crtl->has_bb_partition)
{
dbxout_begin_empty_stabs (N_FUN);
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
dbxout_stab_value_label_diff (crtl->subsections.cold_section_end_label,
crtl->subsections.cold_section_label);
else
@@ -1314,12 +1314,12 @@ dbxout_switch_text_section (void)
/* The N_FUN tag at the end of the function is a GNU extension,
which may be undesirable, and is unnecessary if we do not have
named sections. */
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
dbxout_block (DECL_INITIAL (current_function_decl), 0,
DECL_ARGUMENTS (current_function_decl), -1);
dbxout_function_end (current_function_decl);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
@@ -3776,7 +3776,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* If called for the second partition, ignore blocks that don't have
any children in the second partition. */
- if (crtl->has_bb_partition && in_cold_section_p && depth == 0)
+ if (crtl->has_bb_partition && casm->in_cold_section_p && depth == 0)
dbx_block_with_cold_children (block);
for (; block; block = BLOCK_CHAIN (block))
@@ -3801,7 +3801,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
the assembler symbols LBBn and LBEn
that final will define around the code in this block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[20];
const char *scope_start;
@@ -3829,7 +3829,7 @@ dbxout_block (tree block, int depth, tree args, int parent_blocknum)
/* Refer to the marker for the end of the block. */
if (did_output
- && BLOCK_IN_COLD_SECTION_P (block) == in_cold_section_p)
+ && BLOCK_IN_COLD_SECTION_P (block) == casm->in_cold_section_p)
{
char buf[100];
if (depth == 0)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 9876750e4f9..44d53e11ffd 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1295,7 +1295,7 @@ dwarf2out_switch_text_section (void)
current_function_funcdef_no);
fde->dw_fde_second_begin = ggc_strdup (label);
- if (!in_cold_section_p)
+ if (!casm->in_cold_section_p)
{
fde->dw_fde_end = crtl->subsections.cold_section_end_label;
fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
@@ -17268,7 +17268,7 @@ secname_for_decl (const_tree decl)
secname = DECL_SECTION_NAME (decl);
else if (current_function_decl && DECL_SECTION_NAME (current_function_decl))
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
section *sec = current_function_section ();
if (sec->common.flags & SECTION_NAMED)
@@ -17276,7 +17276,7 @@ secname_for_decl (const_tree decl)
}
secname = DECL_SECTION_NAME (current_function_decl);
}
- else if (cfun && in_cold_section_p)
+ else if (cfun && casm->in_cold_section_p)
secname = crtl->subsections.cold_section_label;
else
secname = text_section_label;
@@ -17597,12 +17597,12 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
if (cfun && crtl->has_bb_partition)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = first_function_block_is_cold;
if (loc_list->last_before_switch == NULL)
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
else
secname = secname_for_decl (decl);
@@ -17680,10 +17680,10 @@ dw_loc_list (var_loc_list *loc_list, tree decl, int want_address)
&& crtl->has_bb_partition
&& node == loc_list->last_before_switch)
{
- bool save_in_cold_section_p = in_cold_section_p;
- in_cold_section_p = !first_function_block_is_cold;
+ bool save_in_cold_section_p = casm->in_cold_section_p;
+ casm->in_cold_section_p = !first_function_block_is_cold;
secname = secname_for_decl (decl);
- in_cold_section_p = save_in_cold_section_p;
+ casm->in_cold_section_p = save_in_cold_section_p;
}
if (range_across_switch)
@@ -27851,7 +27851,7 @@ create_label:
last_{,postcall_}label so that they are not reused this time. */
if (last_var_location_insn == NULL_RTX
|| last_var_location_insn != next_real
- || last_in_cold_section_p != in_cold_section_p)
+ || last_in_cold_section_p != casm->in_cold_section_p)
{
last_label = NULL;
last_postcall_label = NULL;
@@ -28022,7 +28022,7 @@ create_label:
}
last_var_location_insn = next_real;
- last_in_cold_section_p = in_cold_section_p;
+ last_in_cold_section_p = casm->in_cold_section_p;
}
/* Check whether BLOCK, a lexical block, is nested within OUTER, or is
@@ -28207,7 +28207,7 @@ set_cur_line_info_table (section *sec)
if (crtl->has_bb_partition)
{
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
end_label = crtl->subsections.cold_section_end_label;
else
end_label = crtl->subsections.hot_section_end_label;
diff --git a/gcc/final.c b/gcc/final.c
index ac6892d041c..481e1ef6835 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2189,10 +2189,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (targetm.asm_out.unwind_emit)
targetm.asm_out.unwind_emit (asm_out_file, insn);
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
- gcc_checking_assert (in_cold_section_p);
- if (in_cold_section_p)
+ gcc_checking_assert (casm->in_cold_section_p);
+ if (casm->in_cold_section_p)
cold_function_name
= clone_function_name (current_function_decl, "cold");
@@ -2213,10 +2213,10 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
switch_to_section (current_function_section ());
targetm.asm_out.function_switched_text_sections (asm_out_file,
current_function_decl,
- in_cold_section_p);
+ casm->in_cold_section_p);
/* Emit a label for the split cold section. Form label name by
suffixing "cold" to the original function's name. */
- if (in_cold_section_p)
+ if (casm->in_cold_section_p)
{
#ifdef ASM_DECLARE_COLD_FUNCTION_NAME
ASM_DECLARE_COLD_FUNCTION_NAME (asm_out_file,
@@ -2323,7 +2323,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
/* Mark this block as output. */
TREE_ASM_WRITTEN (NOTE_BLOCK (insn)) = 1;
- BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = in_cold_section_p;
+ BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn)) = casm->in_cold_section_p;
}
if (write_symbols == DBX_DEBUG)
{
@@ -2358,7 +2358,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED,
if (!DECL_IGNORED_P (current_function_decl))
debug_hooks->end_block (high_block_linenum, n);
gcc_assert (BLOCK_IN_COLD_SECTION_P (NOTE_BLOCK (insn))
- == in_cold_section_p);
+ == casm->in_cold_section_p);
}
if (write_symbols == DBX_DEBUG)
{
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 48c72377778..9a19652a953 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -803,7 +803,7 @@ lhd_begin_section (const char *name)
/* Save the old section so we can restore it in lto_end_asm_section. */
gcc_assert (!saved_section);
- saved_section = in_section;
+ saved_section = casm->in_section;
if (!saved_section)
saved_section = text_section;
diff --git a/gcc/output.h b/gcc/output.h
index c7ee25c2bd4..e8e2a823a0d 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -313,25 +313,41 @@ extern rtx_sequence *final_sequence;
/* File in which assembler code is being written. */
+struct section_hasher : ggc_ptr_hash<section>
+{
+ typedef const char *compare_type;
+
+ static hashval_t hash (section *);
+ static bool equal (section *, const char *);
+};
+
struct GTY(()) asm_out_state
{
- asm_out_state (): out_file (NULL), m_in_section (NULL),
- m_in_cold_section_p (false)
- {}
+ asm_out_state (): out_file (NULL), in_section (NULL),
+ in_cold_section_p (false)
+ {
+ section_htab = hash_table<section_hasher>::create_ggc (31);
+ }
/* Assembly output stream. */
FILE * GTY((skip)) out_file;
- section *m_in_section;
- bool m_in_cold_section_p;
+ /* Hash table of named sections. */
+ hash_table<section_hasher> *section_htab;
+
+ /* asm_out_file's current section. This is NULL if no section has yet
+ been selected or if we lose track of what the current section is. */
+ section *in_section;
+
+ /* True if code for the current function is currently being directed
+ at the cold section. */
+ bool in_cold_section_p;
};
extern GTY(()) asm_out_state *casm;
/* Helper macro for commonly used accesses. */
#define asm_out_file casm->out_file
-#define in_section casm->m_in_section
-#define in_cold_section_p casm->m_in_cold_section_p
/* The first global object in the file. */
extern const char *first_global_object_name;
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index c9b5208853d..68660186ec5 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1962,7 +1962,7 @@ default_print_patchable_function_entry_1 (FILE *file,
{
char buf[256];
static int patch_area_number;
- section *previous_section = in_section;
+ section *previous_section = casm->in_section;
const char *asm_op = integer_asm_op (POINTER_SIZE_UNITS, false);
gcc_assert (asm_op != NULL);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index b876063f5be..a5e550d81ea 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -173,17 +173,6 @@ static GTY(()) section *unnamed_sections;
#define IN_NAMED_SECTION(DECL) \
(VAR_OR_FUNCTION_DECL_P (DECL) && DECL_SECTION_NAME (DECL) != NULL)
-struct section_hasher : ggc_ptr_hash<section>
-{
- typedef const char *compare_type;
-
- static hashval_t hash (section *);
- static bool equal (section *, const char *);
-};
-
-/* Hash table of named sections. */
-static GTY(()) hash_table<section_hasher> *section_htab;
-
struct object_block_hasher : ggc_ptr_hash<object_block>
{
typedef const section *compare_type;
@@ -286,8 +275,8 @@ get_section (const char *name, unsigned int flags, tree decl,
{
section *sect, **slot;
- slot = section_htab->find_slot_with_hash (name, htab_hash_string (name),
- INSERT);
+ slot = casm->section_htab->find_slot_with_hash (name, htab_hash_string (name),
+ INSERT);
flags |= SECTION_NAMED;
if (decl != nullptr
&& DECL_P (decl)
@@ -710,7 +699,7 @@ function_section (tree decl)
section *
current_function_section (void)
{
- return function_section_1 (current_function_decl, in_cold_section_p);
+ return function_section_1 (current_function_decl, casm->in_cold_section_p);
}
/* Tell assembler to switch to unlikely-to-be-executed text section. */
@@ -738,7 +727,7 @@ unlikely_text_section_p (section *sect)
void
switch_to_other_text_partition (void)
{
- in_cold_section_p = !in_cold_section_p;
+ casm->in_cold_section_p = !casm->in_cold_section_p;
switch_to_section (current_function_section ());
}
@@ -1816,7 +1805,7 @@ decide_function_section (tree decl)
== NODE_FREQUENCY_UNLIKELY_EXECUTED);
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
/* Get the function's name, as described by its RTL. This may be
@@ -1898,7 +1887,7 @@ assemble_start_function (tree decl, const char *fnname)
hot_label_written = true;
first_function_block_is_cold = true;
}
- in_cold_section_p = first_function_block_is_cold;
+ casm->in_cold_section_p = first_function_block_is_cold;
}
@@ -2012,7 +2001,7 @@ assemble_end_function (tree decl, const char *fnname ATTRIBUTE_UNUSED)
{
section *save_text_section;
- save_text_section = in_section;
+ save_text_section = casm->in_section;
switch_to_section (unlikely_text_section ());
#ifdef ASM_DECLARE_COLD_FUNCTION_SIZE
if (cold_function_name != NULL_TREE)
@@ -2042,7 +2031,7 @@ assemble_zeros (unsigned HOST_WIDE_INT size)
#ifdef ASM_NO_SKIP_IN_TEXT
/* The `space' pseudo in the text section outputs nop insns rather than 0s,
so we must output 0s explicitly in the text section. */
- if (ASM_NO_SKIP_IN_TEXT && (in_section->common.flags & SECTION_CODE) != 0)
+ if (ASM_NO_SKIP_IN_TEXT && (casm->in_section->common.flags & SECTION_CODE) != 0)
{
unsigned HOST_WIDE_INT i;
for (i = 0; i < size; i++)
@@ -4184,8 +4173,8 @@ output_constant_pool_1 (class constant_descriptor_rtx *desc,
/* Make sure all constants in SECTION_MERGE and not SECTION_STRINGS
sections have proper size. */
if (align > GET_MODE_BITSIZE (desc->mode)
- && in_section
- && (in_section->common.flags & SECTION_MERGE))
+ && casm->in_section
+ && (casm->in_section->common.flags & SECTION_MERGE))
assemble_align (align);
#ifdef ASM_OUTPUT_SPECIAL_POOL_ENTRY
@@ -6588,7 +6577,6 @@ make_decl_one_only (tree decl, tree comdat_group)
void
init_varasm_once (void)
{
- section_htab = hash_table<section_hasher>::create_ggc (31);
object_block_htab = hash_table<object_block_hasher>::create_ggc (31);
const_desc_htab = hash_table<tree_descriptor_hasher>::create_ggc (1009);
@@ -7810,13 +7798,13 @@ switch_to_section (section *new_section, tree decl)
"%qD was declared here", used_decl);
}
}
- else if (in_section == new_section)
+ else if (casm->in_section == new_section)
return;
if (new_section->common.flags & SECTION_FORGET)
- in_section = NULL;
+ casm->in_section = NULL;
else
- in_section = new_section;
+ casm->in_section = new_section;
switch (SECTION_STYLE (new_section))
{
@@ -8461,7 +8449,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
#else
/* Neither OBJECT_FORMAT_PE, nor OBJECT_FORMAT_COFF is set here.
Therefore the following check is used.
@@ -8487,7 +8475,7 @@ handle_vtv_comdat_section (section *sect, const_tree decl ATTRIBUTE_UNUSED)
sect->named.common.flags
| SECTION_LINKONCE,
DECL_NAME (decl));
- in_section = sect;
+ casm->in_section = sect;
}
else
switch_to_section (sect);
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-09-10 9:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-09 12:59 [gcc(refs/users/marxin/heads/casm-state-v2)] Step #2 Martin Liska
-- strict thread matches above, loose matches on Subject: below --
2021-09-10 9:28 Martin Liska
2021-09-08 11:19 Martin Liska
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).