Commit dce20bbc by J"orn Rennecke Committed by Joern Rennecke

sh.c (sh_get_pr_initial_val): Always wrap in unspec for TARGET_SH1.

	* sh.c (sh_get_pr_initial_val): Always wrap in unspec for TARGET_SH1.
	* sh.md (load_ra): Change insn predicate to TARGET_SH1.

From-SVN: r70410
parent bc5ad3e6
2003-08-13 J"orn Rennecke <joern.rennecke@superh.com>
* sh.c (sh_get_pr_initial_val): Always wrap in unspec for TARGET_SH1.
* sh.md (load_ra): Change insn predicate to TARGET_SH1.
2003-08-13 Dale Johannesen <dalej@apple.com> 2003-08-13 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.md (ctrsi, ctrdi): Reenable * config/rs6000/rs6000.md (ctrsi, ctrdi): Reenable
......
...@@ -8865,9 +8865,13 @@ sh_get_pr_initial_val (void) ...@@ -8865,9 +8865,13 @@ sh_get_pr_initial_val (void)
then, we end in trouble if we didn't use the register in the same then, we end in trouble if we didn't use the register in the same
basic block before. So call get_hard_reg_initial_val now and wrap it basic block before. So call get_hard_reg_initial_val now and wrap it
in an unspec if we might need to replace it. */ in an unspec if we might need to replace it. */
/* ??? We also must do this for TARGET_SH1 in general, because otherwise
combine can put the pseudo returned by get_hard_reg_initial_val into
instructions that need a general purpose registers, which will fail to
be recognized when the pseudo becomes allocated to PR. */
val val
= get_hard_reg_initial_val (Pmode, TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG); = get_hard_reg_initial_val (Pmode, TARGET_SHMEDIA ? PR_MEDIA_REG : PR_REG);
if (TARGET_SHCOMPACT && rtx_equal_function_value_matters) if (TARGET_SH1)
return gen_rtx_UNSPEC (SImode, gen_rtvec (1, val), UNSPEC_RA); return gen_rtx_UNSPEC (SImode, gen_rtvec (1, val), UNSPEC_RA);
return val; return val;
} }
......
...@@ -3475,13 +3475,13 @@ ...@@ -3475,13 +3475,13 @@
(define_insn_and_split "load_ra" (define_insn_and_split "load_ra"
[(set (match_operand:SI 0 "general_movdst_operand" "") [(set (match_operand:SI 0 "general_movdst_operand" "")
(unspec:SI [(match_operand 1 "register_operand" "")] UNSPEC_RA))] (unspec:SI [(match_operand 1 "register_operand" "")] UNSPEC_RA))]
"TARGET_SHCOMPACT" "TARGET_SH1"
"#" "#"
"&& ! rtx_equal_function_value_matters" "&& ! rtx_equal_function_value_matters"
[(set (match_dup 0) (match_dup 1))] [(set (match_dup 0) (match_dup 1))]
" "
{ {
if (current_function_has_nonlocal_label) if (TARGET_SHCOMPACT && current_function_has_nonlocal_label)
operands[1] = gen_rtx_MEM (SImode, return_address_pointer_rtx); operands[1] = gen_rtx_MEM (SImode, return_address_pointer_rtx);
}") }")
......
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