From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1851) id F2E583858436; Tue, 14 Sep 2021 12:35:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F2E583858436 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Martin Liska To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/marxin/heads/casm-state-v3)] Step #3. X-Act-Checkin: gcc X-Git-Author: Martin Liska X-Git-Refname: refs/users/marxin/heads/casm-state-v3 X-Git-Oldrev: ba2501581e4b557dbcdb88d91984e9350701cabb X-Git-Newrev: 861451ad297b47a9ef40dd78f8f9bacaf43029a7 Message-Id: <20210914123523.F2E583858436@sourceware.org> Date: Tue, 14 Sep 2021 12:35:23 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Sep 2021 12:35:24 -0000 https://gcc.gnu.org/g:861451ad297b47a9ef40dd78f8f9bacaf43029a7 commit 861451ad297b47a9ef40dd78f8f9bacaf43029a7 Author: Martin Liska Date: Tue Sep 7 14:04:33 2021 +0200 Step #3. Diff: --- gcc/cgraphunit.c | 2 +- gcc/config/i386/i386.c | 4 ++-- gcc/dbxout.c | 6 +++--- gcc/dwarf2out.c | 18 +++++++++--------- gcc/except.c | 2 +- gcc/final.c | 10 +++++----- gcc/langhooks.c | 2 +- gcc/output.h | 10 +++++++--- gcc/run-rtl-passes.c | 2 +- gcc/varasm.c | 24 +++++++++++------------- 10 files changed, 41 insertions(+), 39 deletions(-) diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 55cb0347149..5bac9beb934 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -2309,7 +2309,7 @@ symbol_table::compile (void) timevar_pop (TV_CGRAPHOPT); /* Output everything. */ - switch_to_section (text_section); + switch_to_section (casm->sections.text); (*debug_hooks->assembly_start) (); if (!quiet_flag) fprintf (stderr, "Assembling functions:\n"); diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3b2dcb47b05..2fbc43e9e48 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -5954,7 +5954,7 @@ output_indirect_thunk_function (enum indirect_thunk_prefix need_prefix, } else { - switch_to_section (text_section); + switch_to_section (casm->sections.text); ASM_OUTPUT_LABEL (asm_out_file, name); } @@ -6074,7 +6074,7 @@ ix86_code_end (void) } else { - switch_to_section (text_section); + switch_to_section (casm->sections.text); ASM_OUTPUT_LABEL (asm_out_file, name); } diff --git a/gcc/dbxout.c b/gcc/dbxout.c index d41ce0a968f..2a77c0bcee9 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -1042,7 +1042,7 @@ dbxout_init (const char *input_file_name) if (used_ltext_label_name) { - switch_to_section (text_section); + switch_to_section (casm->sections.text); targetm.asm_out.internal_label (asm_out_file, "Ltext", 0); } @@ -1244,7 +1244,7 @@ dbxout_source_file (const char *filename) { /* Don't change section amid function. */ if (current_function_decl == NULL_TREE) - switch_to_section (text_section); + switch_to_section (casm->sections.text); dbxout_begin_simple_stabs (remap_debug_filename (filename), N_SOL); dbxout_stab_value_internal_label ("Ltext", &source_label_number); @@ -1432,7 +1432,7 @@ dbxout_finish (const char *filename ATTRIBUTE_UNUSED) DBX_OUTPUT_MAIN_SOURCE_FILE_END (asm_out_file, filename); #elif defined DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END { - switch_to_section (text_section); + switch_to_section (casm->sections.text); dbxout_begin_empty_stabs (N_SO); dbxout_stab_value_internal_label ("Letext", 0); } diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 44d53e11ffd..b975658c0e8 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -1113,10 +1113,10 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED, /* Initialize the bits of CURRENT_FDE that were not available earlier. */ fde->dw_fde_begin = dup_label; fde->dw_fde_current_label = dup_label; - fde->in_std_section = (fnsec == text_section + fde->in_std_section = (fnsec == casm->sections.text || (cold_text_section && fnsec == cold_text_section)); fde->ignored_debug = DECL_IGNORED_P (current_function_decl); - in_text_section_p = fnsec == text_section; + in_text_section_p = fnsec == casm->sections.text; /* We only want to output line number information for the genuine dwarf2 prologue case, not the eh frame case. */ @@ -1317,9 +1317,9 @@ dwarf2out_switch_text_section (void) switch_to_section (sect); fde->second_in_std_section - = (sect == text_section + = (sect == casm->sections.text || (cold_text_section && sect == cold_text_section)); - in_text_section_p = sect == text_section; + in_text_section_p = sect == casm->sections.text; if (dwarf2out_do_cfi_asm ()) dwarf2out_do_cfi_startproc (true); @@ -28190,7 +28190,7 @@ set_cur_line_info_table (section *sec) { dw_line_info_table *table; - if (sec == text_section) + if (sec == casm->sections.text) table = text_section_line_info; else if (sec == cold_text_section) { @@ -28244,7 +28244,7 @@ dwarf2out_begin_function (tree fun) { section *sec = function_section (fun); - if (sec != text_section) + if (sec != casm->sections.text) have_multiple_function_sections = true; if (crtl->has_bb_partition && !cold_text_section) @@ -29373,7 +29373,7 @@ dwarf2out_assembly_start (void) COLD_TEXT_SECTION_LABEL, 0); ASM_GENERATE_INTERNAL_LABEL (cold_end_label, COLD_END_LABEL, 0); - switch_to_section (text_section); + switch_to_section (casm->sections.text); ASM_OUTPUT_LABEL (asm_out_file, text_section_label); #endif @@ -32080,7 +32080,7 @@ dwarf2out_finish (const char *filename) main_comp_unit_die = comp_unit_die (); /* Output a terminator label for the .text section. */ - switch_to_section (text_section); + switch_to_section (casm->sections.text); targetm.asm_out.internal_label (asm_out_file, TEXT_END_LABEL, 0); if (cold_text_section) { @@ -32996,7 +32996,7 @@ dwarf2out_early_finish (const char *filename) } /* Switch back to the text section. */ - switch_to_section (text_section); + switch_to_section (casm->sections.text); } /* Reset all state within dwarf2out.c so that we can rerun the compiler diff --git a/gcc/except.c b/gcc/except.c index 8e905a30939..cd228845cc4 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2948,7 +2948,7 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname)) } else exception_section - = s = flags == SECTION_WRITE ? data_section : readonly_data_section; + = s = flags == SECTION_WRITE ? casm->sections.data: readonly_data_section; } switch_to_section (s); diff --git a/gcc/final.c b/gcc/final.c index 481e1ef6835..797b1a0ec86 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -885,7 +885,7 @@ shorten_branches (rtx_insn *first) /* ADDR_VECs only take room if read-only data goes into the text section. */ if ((JUMP_TABLES_IN_TEXT_SECTION - || readonly_data_section == text_section) + || readonly_data_section == casm->sections.text) && table) { align_flags alignment = align_flags (ADDR_VEC_ALIGN (table)); @@ -1051,7 +1051,7 @@ shorten_branches (rtx_insn *first) /* This only takes room if read-only data goes into the text section. */ if (JUMP_TABLES_IN_TEXT_SECTION - || readonly_data_section == text_section) + || readonly_data_section == casm->sections.text) insn_lengths[uid] = (XVECLEN (body, GET_CODE (body) == ADDR_DIFF_VEC) * GET_MODE_SIZE (table->get_data_mode ())); @@ -1143,7 +1143,7 @@ shorten_branches (rtx_insn *first) may need to update the alignment of this label. */ if (JUMP_TABLES_IN_TEXT_SECTION - || readonly_data_section == text_section) + || readonly_data_section == casm->sections.text) { rtx_jump_table_data *table = jump_table_for_label (label); if (table) @@ -1284,7 +1284,7 @@ shorten_branches (rtx_insn *first) >= GET_MODE_SIZE (table->get_data_mode ()))) PUT_MODE (body, vec_mode); if (JUMP_TABLES_IN_TEXT_SECTION - || readonly_data_section == text_section) + || readonly_data_section == casm->sections.text) { insn_lengths[uid] = (XVECLEN (body, 1) @@ -1836,7 +1836,7 @@ profile_function (FILE *file ATTRIBUTE_UNUSED) if (! NO_PROFILE_COUNTERS) { int align = MIN (BIGGEST_ALIGNMENT, LONG_TYPE_SIZE); - switch_to_section (data_section); + switch_to_section (casm->sections.data); ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); targetm.asm_out.internal_label (file, "LP", current_function_funcdef_no); assemble_integer (const0_rtx, LONG_TYPE_SIZE / BITS_PER_UNIT, align, 1); diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 9a19652a953..a25a4f84eba 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -805,7 +805,7 @@ lhd_begin_section (const char *name) gcc_assert (!saved_section); saved_section = casm->in_section; if (!saved_section) - saved_section = text_section; + saved_section = casm->sections.text; /* Create a new section and switch to it. */ section = get_section (name, SECTION_DEBUG | SECTION_EXCLUDE, NULL, true); diff --git a/gcc/output.h b/gcc/output.h index e8e2a823a0d..3c7cb4c904c 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -324,7 +324,7 @@ struct section_hasher : ggc_ptr_hash
struct GTY(()) asm_out_state { asm_out_state (): out_file (NULL), in_section (NULL), - in_cold_section_p (false) + sections ({}), in_cold_section_p (false) { section_htab = hash_table::create_ggc (31); } @@ -339,6 +339,12 @@ struct GTY(()) asm_out_state been selected or if we lose track of what the current section is. */ section *in_section; + struct + { + section *text; + section *data; + } sections; + /* True if code for the current function is currently being directed at the cold section. */ bool in_cold_section_p; @@ -543,8 +549,6 @@ union GTY ((desc ("SECTION_STYLE (&(%h))"), for_user)) section { struct object_block; /* Special well-known sections. */ -extern GTY(()) section *text_section; -extern GTY(()) section *data_section; extern GTY(()) section *readonly_data_section; extern GTY(()) section *sdata_section; extern GTY(()) section *ctors_section; diff --git a/gcc/run-rtl-passes.c b/gcc/run-rtl-passes.c index 37a02813f22..e49b75bf7f9 100644 --- a/gcc/run-rtl-passes.c +++ b/gcc/run-rtl-passes.c @@ -46,7 +46,7 @@ run_rtl_passes (char *initial_pass_name) max_regno = max_reg_num (); /* cgraphunit.c normally handles this. */ - switch_to_section (text_section); + switch_to_section (casm->sections.text); (*debug_hooks->assembly_start) (); if (initial_pass_name) diff --git a/gcc/varasm.c b/gcc/varasm.c index a5e550d81ea..ad9578f3638 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -131,8 +131,6 @@ static void output_constant_pool (const char *, tree); static void handle_vtv_comdat_section (section *, const_tree); /* Well-known sections, each one associated with some sort of *_ASM_OP. */ -section *text_section; -section *data_section; section *readonly_data_section; section *sdata_section; section *ctors_section; @@ -508,7 +506,7 @@ asm_output_aligned_bss (FILE *file, tree decl ATTRIBUTE_UNUSED, #endif /* BSS_SECTION_ASM_OP */ #ifndef USE_SELECT_SECTION_FOR_FUNCTIONS -/* Return the hot section for function DECL. Return text_section for +/* Return the hot section for function DECL. Return casm->sections.text for null DECLs. */ static section * @@ -519,7 +517,7 @@ hot_function_section (tree decl) && targetm_common.have_named_sections) return get_named_section (decl, NULL, 0); else - return text_section; + return casm->sections.text; } #endif @@ -1881,7 +1879,7 @@ assemble_start_function (tree decl, const char *fnname) if (!cfun->is_thunk && BB_PARTITION (ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb) == BB_COLD_PARTITION) { - switch_to_section (text_section); + switch_to_section (casm->sections.text); assemble_align (align); ASM_OUTPUT_LABEL (asm_out_file, crtl->subsections.hot_section_label); hot_label_written = true; @@ -2011,7 +2009,7 @@ assemble_end_function (tree decl, const char *fnname ATTRIBUTE_UNUSED) #endif ASM_OUTPUT_LABEL (asm_out_file, crtl->subsections.cold_section_end_label); if (first_function_block_is_cold) - switch_to_section (text_section); + switch_to_section (casm->sections.text); else switch_to_section (function_section (decl)); ASM_OUTPUT_LABEL (asm_out_file, crtl->subsections.hot_section_end_label); @@ -6583,13 +6581,13 @@ init_varasm_once (void) shared_constant_pool = create_constant_pool (); #ifdef TEXT_SECTION_ASM_OP - text_section = get_unnamed_section (SECTION_CODE, output_section_asm_op, + casm->sections.text = get_unnamed_section (SECTION_CODE, output_section_asm_op, TEXT_SECTION_ASM_OP); #endif #ifdef DATA_SECTION_ASM_OP - data_section = get_unnamed_section (SECTION_WRITE, output_section_asm_op, - DATA_SECTION_ASM_OP); + casm->sections.data = get_unnamed_section (SECTION_WRITE, output_section_asm_op, + DATA_SECTION_ASM_OP); #endif #ifdef SDATA_SECTION_ASM_OP @@ -6639,7 +6637,7 @@ init_varasm_once (void) targetm.asm_out.init_sections (); if (readonly_data_section == NULL) - readonly_data_section = text_section; + readonly_data_section = casm->sections.text; #ifdef ASM_OUTPUT_EXTERNAL pending_assemble_externals_set = new hash_set; @@ -6947,7 +6945,7 @@ default_select_section (tree decl, int reloc, else if (! (flag_pic && reloc)) return readonly_data_section; - return data_section; + return casm->sections.data; } enum section_category @@ -7102,7 +7100,7 @@ default_elf_select_section (tree decl, int reloc, sname = ".persistent"; break; } - return data_section; + return casm->sections.data; case SECCAT_DATA_REL: sname = ".data.rel"; break; @@ -7278,7 +7276,7 @@ default_select_rtx_section (machine_mode mode ATTRIBUTE_UNUSED, unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED) { if (compute_reloc_for_rtx (x) & targetm.asm_out.reloc_rw_mask ()) - return data_section; + return casm->sections.data; else return readonly_data_section; }