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> 2005-05-08 Roger Sayle <roger@eyesopen.com>
PR inline-asm/8788 PR inline-asm/8788
......
...@@ -89,15 +89,10 @@ Boston, MA 02111-1307, USA. */ ...@@ -89,15 +89,10 @@ Boston, MA 02111-1307, USA. */
#define FUNCTION_PROFILER(STREAM,LABELNO) \ #define FUNCTION_PROFILER(STREAM,LABELNO) \
do \ do \
{ \ { \
if (TARGET_SHMEDIA32) \ if (TARGET_SHMEDIA32 || TARGET_SHMEDIA64) \
{ \ { \
/* FIXME */ \ /* FIXME */ \
abort (); \ sorry ("unimplemented-shmedia profiling"); \
} \
else if (TARGET_SHMEDIA64) \
{ \
/* FIXME */ \
abort (); \
} \ } \
else \ else \
{ \ { \
......
...@@ -3475,8 +3475,7 @@ extern int rtx_equal_function_value_matters; ...@@ -3475,8 +3475,7 @@ extern int rtx_equal_function_value_matters;
if (((ENCODING) & 0xf) != DW_EH_PE_sdata4 \ if (((ENCODING) & 0xf) != DW_EH_PE_sdata4 \
&& ((ENCODING) & 0xf) != DW_EH_PE_sdata8) \ && ((ENCODING) & 0xf) != DW_EH_PE_sdata8) \
{ \ { \
if (GET_CODE (ADDR) != SYMBOL_REF) \ gcc_assert (GET_CODE (ADDR) == SYMBOL_REF); \
abort (); \
SYMBOL_REF_FLAGS (ADDR) |= SYMBOL_FLAG_FUNCTION; \ SYMBOL_REF_FLAGS (ADDR) |= SYMBOL_FLAG_FUNCTION; \
if (0) goto DONE; \ if (0) goto DONE; \
} \ } \
......
...@@ -889,7 +889,7 @@ ...@@ -889,7 +889,7 @@
FAIL; FAIL;
default: default:
abort (); gcc_unreachable ();
} }
} }
}") }")
...@@ -1950,7 +1950,7 @@ ...@@ -1950,7 +1950,7 @@
[(const_int 0)] [(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))); emit_insn (gen_mshflo_l_di (operands[0], operands[1], CONST0_RTX (DImode)));
else else
emit_insn (gen_mshfhi_l_di (operands[0], CONST0_RTX (DImode), operands[1])); emit_insn (gen_mshfhi_l_di (operands[0], CONST0_RTX (DImode), operands[1]));
...@@ -2022,8 +2022,7 @@ ...@@ -2022,8 +2022,7 @@
offset = SUBREG_BYTE (operands[0]); offset = SUBREG_BYTE (operands[0]);
operands[0] = SUBREG_REG (operands[0]); operands[0] = SUBREG_REG (operands[0]);
} }
if (GET_CODE (operands[0]) != REG) gcc_assert (GET_CODE (operands[0]) == REG);
abort ();
if (! TARGET_LITTLE_ENDIAN) if (! TARGET_LITTLE_ENDIAN)
offset += 8 - GET_MODE_SIZE (inmode); offset += 8 - GET_MODE_SIZE (inmode);
operands[5] = gen_rtx_SUBREG (inmode, operands[0], offset); operands[5] = gen_rtx_SUBREG (inmode, operands[0], offset);
...@@ -3812,14 +3811,20 @@ ...@@ -3812,14 +3811,20 @@
&& GET_CODE (XEXP (operands[1], 0)) == POST_INC)) && GET_CODE (XEXP (operands[1], 0)) == POST_INC))
FAIL; FAIL;
if (GET_CODE (operands[0]) == REG) switch (GET_CODE (operands[0]))
{
case REG:
regno = REGNO (operands[0]); regno = REGNO (operands[0]);
else if (GET_CODE (operands[0]) == SUBREG) break;
case SUBREG:
regno = subreg_regno (operands[0]); regno = subreg_regno (operands[0]);
else if (GET_CODE (operands[0]) == MEM) break;
case MEM:
regno = -1; regno = -1;
else break;
abort (); default:
gcc_unreachable ();
}
if (regno == -1 if (regno == -1
|| ! refers_to_regno_p (regno, regno + 1, operands[1], 0)) || ! refers_to_regno_p (regno, regno + 1, operands[1], 0))
...@@ -4186,11 +4191,12 @@ ...@@ -4186,11 +4191,12 @@
operands[2] = immed_double_const ((unsigned long) values[endian] operands[2] = immed_double_const ((unsigned long) values[endian]
| ((HOST_WIDE_INT) values[1 - endian] | ((HOST_WIDE_INT) values[1 - endian]
<< 32), 0, DImode); << 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], operands[2] = immed_double_const (values[endian], values[1 - endian],
DImode); DImode);
else }
abort ();
operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0])); operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0]));
}") }")
...@@ -4558,14 +4564,20 @@ ...@@ -4558,14 +4564,20 @@
&& GET_CODE (XEXP (operands[1], 0)) == POST_INC)) && GET_CODE (XEXP (operands[1], 0)) == POST_INC))
FAIL; FAIL;
if (GET_CODE (operands[0]) == REG) switch (GET_CODE (operands[0]))
{
case REG:
regno = REGNO (operands[0]); regno = REGNO (operands[0]);
else if (GET_CODE (operands[0]) == SUBREG) break;
case SUBREG:
regno = subreg_regno (operands[0]); regno = subreg_regno (operands[0]);
else if (GET_CODE (operands[0]) == MEM) break;
case MEM:
regno = -1; regno = -1;
else break;
abort (); default:
gcc_unreachable ();
}
if (regno == -1 if (regno == -1
|| ! refers_to_regno_p (regno, regno + 1, operands[1], 0)) || ! refers_to_regno_p (regno, regno + 1, operands[1], 0))
...@@ -5959,19 +5971,21 @@ ...@@ -5959,19 +5971,21 @@
"TARGET_SHCOMPACT" "TARGET_SHCOMPACT"
" "
{ {
if (operands[2] && INTVAL (operands[2])) rtx cookie_rtx;
{ long cookie;
rtx cookie_rtx = operands[2]; rtx func;
long cookie = INTVAL (cookie_rtx);
rtx func = XEXP (operands[0], 0);
rtx r0, r1; 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 (flag_pic)
{ {
if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func)) if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func))
{ {
rtx reg = gen_reg_rtx (Pmode); rtx reg = gen_reg_rtx (Pmode);
emit_insn (gen_symGOTPLT2reg (reg, func)); emit_insn (gen_symGOTPLT2reg (reg, func));
func = reg; func = reg;
} }
...@@ -6008,9 +6022,6 @@ ...@@ -6008,9 +6022,6 @@
(operands[0], operands[1], operands[2], operands[3])); (operands[0], operands[1], operands[2], operands[3]));
DONE; DONE;
}
abort ();
}") }")
(define_expand "call_value" (define_expand "call_value"
...@@ -6430,13 +6441,16 @@ ...@@ -6430,13 +6441,16 @@
"TARGET_SHCOMPACT" "TARGET_SHCOMPACT"
" "
{ {
if (TARGET_SHCOMPACT && operands[3] && INTVAL (operands[3])) rtx cookie_rtx;
{ long cookie;
rtx cookie_rtx = operands[3]; rtx func;
long cookie = INTVAL (cookie_rtx);
rtx func = XEXP (operands[1], 0);
rtx r0, r1; 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 (flag_pic)
{ {
if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func)) if (GET_CODE (func) == SYMBOL_REF && ! SYMBOL_REF_LOCAL_P (func))
...@@ -6481,9 +6495,6 @@ ...@@ -6481,9 +6495,6 @@
operands[3], operands[4])); operands[3], operands[4]));
DONE; DONE;
}
abort ();
}") }")
(define_expand "sibcall_epilogue" (define_expand "sibcall_epilogue"
...@@ -7145,8 +7156,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7145,8 +7156,7 @@ mov.l\\t1f,r0\\n\\
{ {
rtx diff_vec = PATTERN (next_real_insn (operands[2])); rtx diff_vec = PATTERN (next_real_insn (operands[2]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
abort ();
switch (GET_MODE (diff_vec)) switch (GET_MODE (diff_vec))
{ {
...@@ -7159,7 +7169,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -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\;extu.b %0,%0\";
return \"mov.b @(r0,%1),%0\"; return \"mov.b @(r0,%1),%0\";
default: default:
abort (); gcc_unreachable ();
} }
}" }"
[(set_attr "length" "4")]) [(set_attr "length" "4")])
...@@ -7177,8 +7187,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7177,8 +7187,7 @@ mov.l\\t1f,r0\\n\\
rtx diff_vec = PATTERN (next_real_insn (operands[2])); rtx diff_vec = PATTERN (next_real_insn (operands[2]));
const char *load; const char *load;
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
abort ();
switch (GET_MODE (diff_vec)) switch (GET_MODE (diff_vec))
{ {
...@@ -7195,7 +7204,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7195,7 +7204,7 @@ mov.l\\t1f,r0\\n\\
load = \"mov.b @(r0,%1),%0\"; load = \"mov.b @(r0,%1),%0\";
break; break;
default: default:
abort (); gcc_unreachable ();
} }
output_asm_insn (\"add\tr0,%1\;mova\t%O3,r0\\n\", operands); output_asm_insn (\"add\tr0,%1\;mova\t%O3,r0\\n\", operands);
return load; return load;
...@@ -7212,8 +7221,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7212,8 +7221,7 @@ mov.l\\t1f,r0\\n\\
{ {
rtx diff_vec = PATTERN (next_real_insn (operands[2])); rtx diff_vec = PATTERN (next_real_insn (operands[2]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
abort ();
switch (GET_MODE (diff_vec)) switch (GET_MODE (diff_vec))
{ {
...@@ -7226,7 +7234,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7226,7 +7234,7 @@ mov.l\\t1f,r0\\n\\
return \"\"; return \"\";
return \"add %1, r63, %0\"; return \"add %1, r63, %0\";
default: default:
abort (); gcc_unreachable ();
} }
}" }"
[(set_attr "type" "arith_media")]) [(set_attr "type" "arith_media")])
...@@ -7241,8 +7249,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7241,8 +7249,7 @@ mov.l\\t1f,r0\\n\\
{ {
rtx diff_vec = PATTERN (next_real_insn (operands[3])); rtx diff_vec = PATTERN (next_real_insn (operands[3]));
if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) gcc_assert (GET_CODE (diff_vec) == ADDR_DIFF_VEC);
abort ();
switch (GET_MODE (diff_vec)) switch (GET_MODE (diff_vec))
{ {
...@@ -7259,7 +7266,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7259,7 +7266,7 @@ mov.l\\t1f,r0\\n\\
return \"ldx.ub %1, %2, %0\"; return \"ldx.ub %1, %2, %0\";
return \"ldx.b %1, %2, %0\"; return \"ldx.b %1, %2, %0\";
default: default:
abort (); gcc_unreachable ();
} }
}" }"
[(set_attr "type" "load_media")]) [(set_attr "type" "load_media")])
...@@ -7348,8 +7355,7 @@ mov.l\\t1f,r0\\n\\ ...@@ -7348,8 +7355,7 @@ mov.l\\t1f,r0\\n\\
{ {
rtx r18 = gen_rtx_REG (DImode, PR_MEDIA_REG); rtx r18 = gen_rtx_REG (DImode, PR_MEDIA_REG);
if (! call_really_used_regs[TR0_REG] || fixed_regs[TR0_REG]) gcc_assert (call_really_used_regs[TR0_REG] && !fixed_regs[TR0_REG]);
abort ();
tr_regno = TR0_REG; tr_regno = TR0_REG;
tr = gen_rtx_REG (DImode, tr_regno); tr = gen_rtx_REG (DImode, tr_regno);
emit_move_insn (tr, r18); emit_move_insn (tr, r18);
......
...@@ -216,14 +216,10 @@ sh_symbian_mark_dllexport (tree decl) ...@@ -216,14 +216,10 @@ sh_symbian_mark_dllexport (tree decl)
tree idp; tree idp;
rtlname = XEXP (DECL_RTL (decl), 0); rtlname = XEXP (DECL_RTL (decl), 0);
if (GET_CODE (rtlname) == MEM)
if (GET_CODE (rtlname) == SYMBOL_REF) rtlname = XEXP (rtlname, 0);
gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
oldname = XSTR (rtlname, 0); 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)) if (sh_symbian_dllimport_name_p (oldname))
{ {
...@@ -265,14 +261,10 @@ sh_symbian_mark_dllimport (tree decl) ...@@ -265,14 +261,10 @@ sh_symbian_mark_dllimport (tree decl)
rtx newrtl; rtx newrtl;
rtlname = XEXP (DECL_RTL (decl), 0); rtlname = XEXP (DECL_RTL (decl), 0);
if (GET_CODE (rtlname) == MEM)
if (GET_CODE (rtlname) == SYMBOL_REF) rtlname = XEXP (rtlname, 0);
gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
oldname = XSTR (rtlname, 0); 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)) 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