Commit f5b9e7c9 by Nathan Sidwell Committed by Nathan Sidwell

sh.c (print_operand_address): Use gcc_assert and gcc_unreachable as appropriate.

	* config/sh/sh.c (print_operand_address): Use gcc_assert and
	gcc_unreachable as appropriate.
	(print_operand, prepare_move_operands, prepare_scc_operands,
	output_movedouble, output_branch, shift_insns_rtx, gen_shifty_op,
	gen_shl_and, shl_sext_kind, gen_datalabel_ref, dump_table,
	fixup_mova, gen_far_branch, sh_reorg, split_branches,
	final_prescan_insn, output_stack_adjust, sh_expand_epilogue,
	sh_set_return_address, sh_setup_incoming_varargs,
	initial_elimination_offset, sh_pch_valid_p, get_free_reg,
	sh_expand_builtin, sh_output_mi_thunk, extract_sfunc_addr,
	check_use_sfunc_addr): Likewise.
	* config/sh/netbsd-elf.h (FUNCTION_PROFILER): Likewise.
	* config/sh/sh.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
	* config/sh/symbian.c (sh_symbian_mark_dllexport,
	sh_symbian_mark_dllimport): Likewise.
	* config/sh/sh.md: Likewise.
	(movdicc, call_pop, call_value_pop, casesi_worker_1,
	casesi_worker_2, casesi_shift_media, casesi_load_media,
	return_media): Likewise.

From-SVN: r99425
parent 4581ba9d
2005-05-09 Nathan Sidwell <nathan@codesourcery.com>
* config/sh/sh.c (print_operand_address): Use gcc_assert and
gcc_unreachable as appropriate.
(print_operand, prepare_move_operands, prepare_scc_operands,
output_movedouble, output_branch, shift_insns_rtx, gen_shifty_op,
gen_shl_and, shl_sext_kind, gen_datalabel_ref, dump_table,
fixup_mova, gen_far_branch, sh_reorg, split_branches,
final_prescan_insn, output_stack_adjust, sh_expand_epilogue,
sh_set_return_address, sh_setup_incoming_varargs,
initial_elimination_offset, sh_pch_valid_p, get_free_reg,
sh_expand_builtin, sh_output_mi_thunk, extract_sfunc_addr,
check_use_sfunc_addr): Likewise.
* config/sh/netbsd-elf.h (FUNCTION_PROFILER): Likewise.
* config/sh/sh.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
* config/sh/symbian.c (sh_symbian_mark_dllexport,
sh_symbian_mark_dllimport): Likewise.
* config/sh/sh.md: Likewise.
(movdicc, call_pop, call_value_pop, casesi_worker_1,
casesi_worker_2, casesi_shift_media, casesi_load_media,
return_media): Likewise.
2005-05-08 Roger Sayle <roger@eyesopen.com>
PR inline-asm/8788
......
......@@ -89,15 +89,10 @@ Boston, MA 02111-1307, USA. */
#define FUNCTION_PROFILER(STREAM,LABELNO) \
do \
{ \
if (TARGET_SHMEDIA32) \
if (TARGET_SHMEDIA32 || TARGET_SHMEDIA64) \
{ \
/* FIXME */ \
abort (); \
} \
else if (TARGET_SHMEDIA64) \
{ \
/* FIXME */ \
abort (); \
sorry ("unimplemented-shmedia profiling"); \
} \
else \
{ \
......
......@@ -3475,8 +3475,7 @@ extern int rtx_equal_function_value_matters;
if (((ENCODING) & 0xf) != DW_EH_PE_sdata4 \
&& ((ENCODING) & 0xf) != DW_EH_PE_sdata8) \
{ \
if (GET_CODE (ADDR) != SYMBOL_REF) \
abort (); \
gcc_assert (GET_CODE (ADDR) == SYMBOL_REF); \
SYMBOL_REF_FLAGS (ADDR) |= SYMBOL_FLAG_FUNCTION; \
if (0) goto DONE; \
} \
......
......@@ -889,7 +889,7 @@
FAIL;
default:
abort ();
gcc_unreachable ();
}
}
}")
......@@ -1950,7 +1950,7 @@
[(const_int 0)]
"
{
if (INTVAL (operands[2]) == (unsigned) 0xffffffff)
if ((unsigned)INTVAL (operands[2]) == (unsigned) 0xffffffff)
emit_insn (gen_mshflo_l_di (operands[0], operands[1], CONST0_RTX (DImode)));
else
emit_insn (gen_mshfhi_l_di (operands[0], CONST0_RTX (DImode), operands[1]));
......@@ -2022,8 +2022,7 @@
offset = SUBREG_BYTE (operands[0]);
operands[0] = SUBREG_REG (operands[0]);
}
if (GET_CODE (operands[0]) != REG)
abort ();
gcc_assert (GET_CODE (operands[0]) == REG);
if (! TARGET_LITTLE_ENDIAN)
offset += 8 - GET_MODE_SIZE (inmode);
operands[5] = gen_rtx_SUBREG (inmode, operands[0], offset);
......@@ -3812,14 +3811,20 @@
&& GET_CODE (XEXP (operands[1], 0)) == POST_INC))
FAIL;
if (GET_CODE (operands[0]) == REG)
switch (GET_CODE (operands[0]))
{
case REG:
regno = REGNO (operands[0]);
else if (GET_CODE (operands[0]) == SUBREG)
break;
case SUBREG:
regno = subreg_regno (operands[0]);
else if (GET_CODE (operands[0]) == MEM)
break;
case MEM:
regno = -1;
else
abort ();
break;
default:
gcc_unreachable ();
}
if (regno == -1
|| ! refers_to_regno_p (regno, regno + 1, operands[1], 0))
......@@ -4186,11 +4191,12 @@
operands[2] = immed_double_const ((unsigned long) values[endian]
| ((HOST_WIDE_INT) values[1 - endian]
<< 32), 0, DImode);
else if (HOST_BITS_PER_WIDE_INT == 32)
else
{
gcc_assert (HOST_BITS_PER_WIDE_INT == 32);
operands[2] = immed_double_const (values[endian], values[1 - endian],
DImode);
else
abort ();
}
operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0]));
}")
......@@ -4558,14 +4564,20 @@
&& GET_CODE (XEXP (operands[1], 0)) == POST_INC))
FAIL;
if (GET_CODE (operands[0]) == REG)
switch (GET_CODE (operands[0]))
{
case REG:
regno = REGNO (operands[0]);
else if (GET_CODE (operands[0]) == SUBREG)
break;
case SUBREG:
regno = subreg_regno (operands[0]);
else if (GET_CODE (operands[0]) == MEM)
break;
case MEM:
regno = -1;
else
abort ();
break;
default:
gcc_unreachable ();
}
if (regno == -1
|| ! refers_to_regno_p (regno, regno + 1, operands[1], 0))
......@@ -5959,19 +5971,21 @@
"TARGET_SHCOMPACT"
"
{
if (operands[2] && INTVAL (operands[2]))
{
rtx cookie_rtx = operands[2];
long cookie = INTVAL (cookie_rtx);
rtx func = XEXP (operands[0], 0);
rtx cookie_rtx;
long cookie;
rtx func;
rtx r0, r1;
gcc_assert (operands[2] && INTVAL (operands[2]));
cookie_rtx = operands[2];
cookie = INTVAL (cookie_rtx);
func = XEXP (operands[0], 0);
if (flag_pic)
{
if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func))
{
rtx reg = gen_reg_rtx (Pmode);
emit_insn (gen_symGOTPLT2reg (reg, func));
func = reg;
}
......@@ -6008,9 +6022,6 @@
(operands[0], operands[1], operands[2], operands[3]));
DONE;
}
abort ();
}")
(define_expand "call_value"
......@@ -6430,13 +6441,16 @@
"TARGET_SHCOMPACT"
"
{
if (TARGET_SHCOMPACT && operands[3] && INTVAL (operands[3]))
{
rtx cookie_rtx = operands[3];
long cookie = INTVAL (cookie_rtx);
rtx func = XEXP (operands[1], 0);
rtx cookie_rtx;
long cookie;
rtx func;
rtx r0, r1;
gcc_assert (TARGET_SHCOMPACT && operands[3] && INTVAL (operands[3]));
cookie_rtx = operands[3];
cookie = INTVAL (cookie_rtx);
func = XEXP (operands[1], 0);
if (flag_pic)
{
if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func))
......@@ -6481,9 +6495,6 @@
operands[3], operands[4]));
DONE;
}
abort ();
}")
(define_expand "sibcall_epilogue"
......@@ -7145,8 +7156,7 @@ mov.l\\t1f,r0\\n\\
{
rtx diff_vec = PATTERN (next_real_insn (operands[2]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
abort ();
gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
switch (GET_MODE (diff_vec))
{
......@@ -7159,7 +7169,7 @@ mov.l\\t1f,r0\\n\\
return \"mov.b @(r0,%1),%0\;extu.b %0,%0\";
return \"mov.b @(r0,%1),%0\";
default:
abort ();
gcc_unreachable ();
}
}"
[(set_attr "length" "4")])
......@@ -7177,8 +7187,7 @@ mov.l\\t1f,r0\\n\\
rtx diff_vec = PATTERN (next_real_insn (operands[2]));
const char *load;
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
abort ();
gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
switch (GET_MODE (diff_vec))
{
......@@ -7195,7 +7204,7 @@ mov.l\\t1f,r0\\n\\
load = \"mov.b @(r0,%1),%0\";
break;
default:
abort ();
gcc_unreachable ();
}
output_asm_insn (\"add\tr0,%1\;mova\t%O3,r0\\n\", operands);
return load;
......@@ -7212,8 +7221,7 @@ mov.l\\t1f,r0\\n\\
{
rtx diff_vec = PATTERN (next_real_insn (operands[2]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
abort ();
gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
switch (GET_MODE (diff_vec))
{
......@@ -7226,7 +7234,7 @@ mov.l\\t1f,r0\\n\\
return \"\";
return \"add %1, r63, %0\";
default:
abort ();
gcc_unreachable ();
}
}"
[(set_attr "type" "arith_media")])
......@@ -7241,8 +7249,7 @@ mov.l\\t1f,r0\\n\\
{
rtx diff_vec = PATTERN (next_real_insn (operands[3]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
abort ();
gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
switch (GET_MODE (diff_vec))
{
......@@ -7259,7 +7266,7 @@ mov.l\\t1f,r0\\n\\
return \"ldx.ub %1, %2, %0\";
return \"ldx.b %1, %2, %0\";
default:
abort ();
gcc_unreachable ();
}
}"
[(set_attr "type" "load_media")])
......@@ -7348,8 +7355,7 @@ mov.l\\t1f,r0\\n\\
{
rtx r18 = gen_rtx_REG (DImode, PR_MEDIA_REG);
if (! call_really_used_regs[TR0_REG] || fixed_regs[TR0_REG])
abort ();
gcc_assert (call_really_used_regs[TR0_REG] && !fixed_regs[TR0_REG]);
tr_regno = TR0_REG;
tr = gen_rtx_REG (DImode, tr_regno);
emit_move_insn (tr, r18);
......
......@@ -216,14 +216,10 @@ sh_symbian_mark_dllexport (tree decl)
tree idp;
rtlname = XEXP (DECL_RTL (decl), 0);
if (GET_CODE (rtlname) == SYMBOL_REF)
if (GET_CODE (rtlname) == MEM)
rtlname = XEXP (rtlname, 0);
gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
oldname = XSTR (rtlname, 0);
else if (GET_CODE (rtlname) == MEM
&& GET_CODE (XEXP (rtlname, 0)) == SYMBOL_REF)
oldname = XSTR (XEXP (rtlname, 0), 0);
else
abort ();
if (sh_symbian_dllimport_name_p (oldname))
{
......@@ -265,14 +261,10 @@ sh_symbian_mark_dllimport (tree decl)
rtx newrtl;
rtlname = XEXP (DECL_RTL (decl), 0);
if (GET_CODE (rtlname) == SYMBOL_REF)
if (GET_CODE (rtlname) == MEM)
rtlname = XEXP (rtlname, 0);
gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
oldname = XSTR (rtlname, 0);
else if (GET_CODE (rtlname) == MEM
&& GET_CODE (XEXP (rtlname, 0)) == SYMBOL_REF)
oldname = XSTR (XEXP (rtlname, 0), 0);
else
abort ();
if (sh_symbian_dllexport_name_p (oldname))
{
......
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