Commit db3c0315 by Mark Mitchell Committed by Mark Mitchell

function.c (expand_function_start): Avoid creating BLKmode pseudos.

	* function.c (expand_function_start): Avoid creating BLKmode
	pseudos.

	* dwarf2out.c (output_comp_unit): Always output a compilation-unit
	DIE, even if it has no children.
	(dwarf2out_finish): Always output the line-number table, even if
	it has no content.

From-SVN: r42254
parent 52a57250
2001-05-18 Mark Mitchell <mark@codesourcery.com>
* function.c (expand_function_start): Avoid creating BLKmode
pseudos.
2001-05-17 Mark Mitchell <mark@codesourcery.com>
* dwarf2out.c (output_comp_unit): Always output a compilation-unit
DIE, even if it has no children.
(dwarf2out_finish): Always output the line-number table, even if
it has no content.
2001-05-18 David Edelsohn <edelsohn@gnu.org> 2001-05-18 David Edelsohn <edelsohn@gnu.org>
* rs6000.md (movsfcc,movdfcc): Remove NE case. * rs6000.md (movsfcc,movdfcc): Remove NE case.
......
...@@ -5929,10 +5929,13 @@ output_comp_unit (die) ...@@ -5929,10 +5929,13 @@ output_comp_unit (die)
{ {
const char *secname; const char *secname;
if (die->die_child == 0) /* Even if there are no children of this DIE, we must output the
return; information about the compilation unit. Otherwise, on an empty
translation unit, we will generate a present, but empty,
.debug_info section. IRIX 6.5 `nm' will then complain when
examining the file.
/* Mark all the DIEs in this CU so we know which get local refs. */ Mark all the DIEs in this CU so we know which get local refs. */
mark_dies (die); mark_dies (die);
build_abbrev_table (die); build_abbrev_table (die);
...@@ -11250,17 +11253,19 @@ dwarf2out_finish () ...@@ -11250,17 +11253,19 @@ dwarf2out_finish ()
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, BSS_END_LABEL, 0); ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, BSS_END_LABEL, 0);
#endif #endif
/* Output the source line correspondence table. */ /* Output the source line correspondence table. We must do this
if (line_info_table_in_use > 1 || separate_line_info_table_in_use) even if there is no line information. Otherwise, on an empty
{ translation unit, we will generate a present, but empty,
.debug_info section. IRIX 6.5 `nm' will then complain when
examining the file. */
if (! DWARF2_ASM_LINE_DEBUG_INFO) if (! DWARF2_ASM_LINE_DEBUG_INFO)
{ {
ASM_OUTPUT_SECTION (asm_out_file, DEBUG_LINE_SECTION); ASM_OUTPUT_SECTION (asm_out_file, DEBUG_LINE_SECTION);
output_line_info (); output_line_info ();
} }
/* We can only use the low/high_pc attributes if all of the code /* We can only use the low/high_pc attributes if all of the code was
was in .text. */ in .text. */
if (separate_line_info_table_in_use == 0) if (separate_line_info_table_in_use == 0)
{ {
add_AT_lbl_id (comp_unit_die, DW_AT_low_pc, text_section_label); add_AT_lbl_id (comp_unit_die, DW_AT_low_pc, text_section_label);
...@@ -11269,7 +11274,6 @@ dwarf2out_finish () ...@@ -11269,7 +11274,6 @@ dwarf2out_finish ()
add_AT_lbl_offset (comp_unit_die, DW_AT_stmt_list, add_AT_lbl_offset (comp_unit_die, DW_AT_stmt_list,
debug_line_section_label); debug_line_section_label);
}
#if 0 /* unimplemented */ #if 0 /* unimplemented */
if (debug_info_level >= DINFO_LEVEL_VERBOSE && primary) if (debug_info_level >= DINFO_LEVEL_VERBOSE && primary)
......
...@@ -6370,21 +6370,25 @@ expand_function_start (subr, parms_have_cleanups) ...@@ -6370,21 +6370,25 @@ expand_function_start (subr, parms_have_cleanups)
|| current_function_instrument_entry_exit || current_function_instrument_entry_exit
|| (flag_exceptions && USING_SJLJ_EXCEPTIONS)) || (flag_exceptions && USING_SJLJ_EXCEPTIONS))
{ {
/* If function will end with cleanup code for parms, /* If function will end with cleanup code for parms, compute the
compute the return values into a pseudo reg, return values into a pseudo reg, which we will copy into the
which we will copy into the true return register true return register after the cleanups are done. */
after the cleanups are done. */
/* In order to figure out what mode to use for the pseudo, we
enum machine_mode mode = DECL_MODE (DECL_RESULT (subr)); figure out what the mode of the eventual return register will
actually be, and use that. */
#ifdef PROMOTE_FUNCTION_RETURN rtx hard_reg
tree type = TREE_TYPE (DECL_RESULT (subr)); = hard_function_value (TREE_TYPE (DECL_RESULT (subr)),
int unsignedp = TREE_UNSIGNED (type); subr, 1);
mode = promote_mode (type, mode, &unsignedp, 1); /* Since we know the return value is not an aggregate, we should
#endif have a REG here. */
if (!REG_P (hard_reg))
abort ();
SET_DECL_RTL (DECL_RESULT (subr), gen_reg_rtx (mode)); /* Create the pseudo. */
SET_DECL_RTL (DECL_RESULT (subr),
gen_reg_rtx (GET_MODE (hard_reg)));
/* Needed because we may need to move this to memory /* Needed because we may need to move this to memory
in case it's a named return value whose address is taken. */ in case it's a named return value whose address is taken. */
DECL_REGISTER (DECL_RESULT (subr)) = 1; DECL_REGISTER (DECL_RESULT (subr)) = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment