Commit 17e6098e by John David Anglin Committed by John David Anglin

pa.c (pa_output_function_prologue, [...]): Move updating of total_code_bytes…

pa.c (pa_output_function_prologue, [...]): Move updating of total_code_bytes from prologue to epilogue.

	* pa.c (pa_output_function_prologue, pa_output_function_epilogue): Move
	updating of total_code_bytes from prologue to epilogue.

From-SVN: r62233
parent ccbaec26
2003-01-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa.c (pa_output_function_prologue, pa_output_function_epilogue): Move
updating of total_code_bytes from prologue to epilogue.
2003-01-31 Ulrich Weigand <uweigand@de.ibm.com> 2003-01-31 Ulrich Weigand <uweigand@de.ibm.com>
* reload.c (find_reloads): Do not use the mode specified in the insn * reload.c (find_reloads): Do not use the mode specified in the insn
......
...@@ -3306,26 +3306,6 @@ pa_output_function_prologue (file, size) ...@@ -3306,26 +3306,6 @@ pa_output_function_prologue (file, size)
fputs ("\n\t.ENTRY\n", file); fputs ("\n\t.ENTRY\n", file);
/* If we're using GAS and SOM, and not using the portable runtime model,
or function sections, then we don't need to accumulate the total number
of code bytes. */
if ((TARGET_GAS && TARGET_SOM && ! TARGET_PORTABLE_RUNTIME)
|| flag_function_sections)
total_code_bytes = 0;
else if (INSN_ADDRESSES_SET_P ())
{
unsigned long old_total = total_code_bytes;
total_code_bytes += INSN_ADDRESSES (INSN_UID (get_last_nonnote_insn ()));
total_code_bytes += FUNCTION_BOUNDARY / BITS_PER_UNIT;
/* Be prepared to handle overflows. */
if (old_total > total_code_bytes)
total_code_bytes = -1;
}
else
total_code_bytes = -1;
remove_useless_addtr_insns (get_insns (), 0); remove_useless_addtr_insns (get_insns (), 0);
} }
...@@ -3647,6 +3627,7 @@ pa_output_function_epilogue (file, size) ...@@ -3647,6 +3627,7 @@ pa_output_function_epilogue (file, size)
FILE *file; FILE *file;
HOST_WIDE_INT size ATTRIBUTE_UNUSED; HOST_WIDE_INT size ATTRIBUTE_UNUSED;
{ {
int last_address = 0;
rtx insn = get_last_insn (); rtx insn = get_last_insn ();
/* hppa_expand_epilogue does the dirty work now. We just need /* hppa_expand_epilogue does the dirty work now. We just need
...@@ -3669,9 +3650,36 @@ pa_output_function_epilogue (file, size) ...@@ -3669,9 +3650,36 @@ pa_output_function_epilogue (file, size)
/* If insn is a CALL_INSN, then it must be a call to a volatile /* If insn is a CALL_INSN, then it must be a call to a volatile
function (otherwise there would be epilogue insns). */ function (otherwise there would be epilogue insns). */
if (insn && GET_CODE (insn) == CALL_INSN) if (insn && GET_CODE (insn) == CALL_INSN)
fputs ("\tnop\n", file); {
fputs ("\tnop\n", file);
last_address += 4;
}
fputs ("\t.EXIT\n\t.PROCEND\n", file); fputs ("\t.EXIT\n\t.PROCEND\n", file);
/* Finally, update the total number of code bytes output so far. */
if ((TARGET_PORTABLE_RUNTIME || !TARGET_GAS || !TARGET_SOM)
&& !flag_function_sections)
{
if (INSN_ADDRESSES_SET_P ())
{
unsigned long old_total = total_code_bytes;
insn = get_last_nonnote_insn ();
last_address += INSN_ADDRESSES (INSN_UID (insn));
if (INSN_P (insn))
last_address += insn_default_length (insn);
total_code_bytes += last_address;
total_code_bytes += FUNCTION_BOUNDARY / BITS_PER_UNIT;
/* Be prepared to handle overflows. */
if (old_total > total_code_bytes)
total_code_bytes = -1;
}
else
total_code_bytes = -1;
}
} }
void void
......
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