From 4d1065ed1b3ec80edaa39bcb1b302b7cc0d1f2cb Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Mon, 13 Feb 1995 22:08:43 +0000 Subject: varasm.c (function_section): New function. * varasm.c (function_section): New function. (assemble_start_function): Call it. * output.h (function_section): Declare it. * final.c (final_scan_insn): Call function_section instead of text_section. * dwarfout.c (dwarfout_begin_block): Likewise. (dwarfout_end_block): Likewise. (dwarfout_label): Likewise. (dwarfout_begin_function): Likewise. (dwarfout_end_function): Likewise. (dwarfout_line): Likewise. From-SVN: r8942 --- gcc/dwarfout.c | 12 ++++++------ gcc/final.c | 4 ++-- gcc/output.h | 3 +++ gcc/varasm.c | 22 ++++++++++++++++++---- 4 files changed, 29 insertions(+), 12 deletions(-) (limited to 'gcc') diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c index 4287e10..3ebff01 100644 --- a/gcc/dwarfout.c +++ b/gcc/dwarfout.c @@ -4923,7 +4923,7 @@ dwarfout_begin_block (blocknum) { char label[MAX_ARTIFICIAL_LABEL_BYTES]; - text_section (); + function_section (current_function_decl); sprintf (label, BLOCK_BEGIN_LABEL_FMT, blocknum); ASM_OUTPUT_LABEL (asm_out_file, label); } @@ -4937,7 +4937,7 @@ dwarfout_end_block (blocknum) { char label[MAX_ARTIFICIAL_LABEL_BYTES]; - text_section (); + function_section (current_function_decl); sprintf (label, BLOCK_END_LABEL_FMT, blocknum); ASM_OUTPUT_LABEL (asm_out_file, label); } @@ -4953,7 +4953,7 @@ dwarfout_label (insn) { char label[MAX_ARTIFICIAL_LABEL_BYTES]; - text_section (); + function_section (current_function_decl); sprintf (label, INSN_LABEL_FMT, current_funcdef_number, (unsigned) INSN_UID (insn)); ASM_OUTPUT_LABEL (asm_out_file, label); @@ -4969,7 +4969,7 @@ dwarfout_begin_function () { char label[MAX_ARTIFICIAL_LABEL_BYTES]; - text_section (); + function_section (current_function_decl); sprintf (label, BODY_BEGIN_LABEL_FMT, current_funcdef_number); ASM_OUTPUT_LABEL (asm_out_file, label); } @@ -4982,7 +4982,7 @@ dwarfout_end_function () { char label[MAX_ARTIFICIAL_LABEL_BYTES]; - text_section (); + function_section (current_function_decl); sprintf (label, BODY_END_LABEL_FMT, current_funcdef_number); ASM_OUTPUT_LABEL (asm_out_file, label); } @@ -5156,7 +5156,7 @@ dwarfout_line (filename, line) static unsigned prev_file_entry_num = (unsigned) -1; register unsigned this_file_entry_num = lookup_filename (filename); - text_section (); + function_section (current_function_decl); sprintf (label, LINE_CODE_LABEL_FMT, ++last_line_entry_num); ASM_OUTPUT_LABEL (asm_out_file, label); diff --git a/gcc/final.c b/gcc/final.c index 5d62c92..c086dd0 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1511,7 +1511,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) / BITS_PER_UNIT)); #endif /* READONLY_DATA_SECTION */ #else /* JUMP_TABLES_IN_TEXT_SECTION */ - text_section (); + function_section (current_function_decl); #endif /* JUMP_TABLES_IN_TEXT_SECTION */ #ifdef ASM_OUTPUT_CASE_LABEL ASM_OUTPUT_CASE_LABEL (file, "L", CODE_LABEL_NUMBER (insn), @@ -1600,7 +1600,7 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes) insn); #endif - text_section (); + function_section (current_function_decl); break; } diff --git a/gcc/output.h b/gcc/output.h index 7922d64..c1a8ae6 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -136,6 +136,9 @@ extern int in_text_section PROTO((void)); If NAME is NULL, get the name from DECL. */ extern void named_section PROTO((tree, char *)); +/* Tell assembler to switch to the section for function DECL. */ +extern void function_section PROTO((tree)); + /* Create the rtl to represent a function, for a function definition. DECL is a FUNCTION_DECL node which describes which function. The rtl is stored into DECL. */ diff --git a/gcc/varasm.c b/gcc/varasm.c index a89de1a..9091023 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -244,6 +244,23 @@ named_section (decl, name) #endif } } + +/* Switch to the section for function DECL. + + If DECL is NULL_TREE, switch to the text section. + ??? It's not clear that we will ever be passed NULL_TREE, but it's + safer to handle it. */ + +void +function_section (decl) + tree decl; +{ + if (decl != NULL_TREE + && DECL_SECTION_NAME (decl) != NULL_TREE) + named_section (decl, (char *) 0); + else + text_section (); +} /* Create the rtl to represent a function, for a function definition. DECL is a FUNCTION_DECL node which describes which function. @@ -733,10 +750,7 @@ assemble_start_function (decl, fnname) output_constant_pool (fnname, decl); - if (IN_NAMED_SECTION (decl)) - named_section (decl, NULL); - else - text_section (); + function_section (decl); /* Tell assembler to move to target machine's alignment for functions. */ align = floor_log2 (FUNCTION_BOUNDARY / BITS_PER_UNIT); -- cgit v1.1