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
This commit is contained in:
Doug Evans 1995-02-13 22:08:43 +00:00
parent 2c62c124a7
commit 4d1065ed1b
4 changed files with 29 additions and 12 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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. */

View File

@ -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);