Commit a236f9d6 by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

re PR target/85666 (gcc-8.0.1 fails to build mmix target:…

re PR target/85666 (gcc-8.0.1 fails to build mmix target: gcc/libgcc/libgcc2.h:203:20: internal compiler error: in leaf_function_p, at final.c:4488)

	PR target/85666
	* config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't
	call leaf_function_p, instead use has_hard_reg_initial_val.

From-SVN: r264182
parent b8106e8f
2018-09-09 Hans-Peter Nilsson <hp@bitrange.com>
PR target/85666
* config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't
call leaf_function_p, instead use has_hard_reg_initial_val.
2018-09-09 Nathan Sidwell <nathan@acm.org> 2018-09-09 Nathan Sidwell <nathan@acm.org>
* gcc.h (pfatal_with_name): Don't declare here. * gcc.h (pfatal_with_name): Don't declare here.
......
...@@ -60,19 +60,16 @@ along with GCC; see the file COPYING3. If not see ...@@ -60,19 +60,16 @@ along with GCC; see the file COPYING3. If not see
/* We have no means to tell DWARF 2 about the register stack, so we need /* We have no means to tell DWARF 2 about the register stack, so we need
to store the return address on the stack if an exception can get into to store the return address on the stack if an exception can get into
this function. FIXME: Narrow condition. Before any whole-function this function. We'll have an "initial value" recorded for the
analysis, df_regs_ever_live_p () isn't initialized. We know it's up-to-date return-register if we've seen a call instruction emitted. This note
after reload_completed; it may contain incorrect information some time will be inaccurate before instructions are emitted, but the only caller
before that. Within a RTL sequence (after a call to start_sequence, at that time is looking for modulo from stack-boundary, to which the
such as in RTL expanders), leaf_function_p doesn't see all insns return-address does not contribute, and which is always 0 for MMIX
(perhaps any insn). But regs_ever_live is up-to-date when anyway. Beware of calling leaf_function_p here, as it'll abort if
leaf_function_p () isn't, so we "or" them together to get accurate called within a sequence. */
information. FIXME: Some tweak to leaf_function_p might be
preferable. */
#define MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS \ #define MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS \
(flag_exceptions \ (flag_exceptions \
&& ((reload_completed && df_regs_ever_live_p (MMIX_rJ_REGNUM)) \ && has_hard_reg_initial_val (Pmode, MMIX_INCOMING_RETURN_ADDRESS_REGNUM))
|| !leaf_function_p ()))
#define IS_MMIX_EH_RETURN_DATA_REG(REGNO) \ #define IS_MMIX_EH_RETURN_DATA_REG(REGNO) \
(crtl->calls_eh_return \ (crtl->calls_eh_return \
......
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