Commit 954c7446 by Joern Rennecke Committed by Joern Rennecke

re PR target/44760 (iq2000.md warnings)

	PR target/44760
	* config/iq2000/iq2000.h (REGISTER_NAMES): Remove trailing semicolon.
	(REGNO_MODE_OK_FOR_BASE_P): Cast REGNO to int before passing it to
	GP_REG_OR_PSEUDO_STRICT_P.
	* config/iq2000/iq2000.md (andsi3+1): Add gcc_unreachable for
	unexpected alternative.
	(*movsf_internal): Likewise.
	(indirect_jump): Replace call to non-existant function with call to
	internal_error.
	(tablejump): Likewise.
	* config/iq2000/iq2000.c: Include df.h .
	(iq2000_function_arg_advance): Use CONST_CAST2.
	(compute_frame_size, iq2000_expand_prologue): Remove unused variables.
	(iq2000_can_eliminate): Call leaf_function_p instead of testing for
	a non-zero function address.
	(iq2000_initial_elimination_offset): Add gcc_unreachable for
	unexpected value of FROM.
	(symbolic_expression_p): Delete.
	(iq2000_function_value): Constify func.
	(expand_one_builtin): Use expand_normal.
	(iq2000_print_operand): Don't print VALUE if calculating it failed.

From-SVN: r166523
parent 83f3bd62
2010-11-10 Joern Rennecke <amylaar@spamcop.net>
PR target/44760
* config/iq2000/iq2000.h (REGISTER_NAMES): Remove trailing semicolon.
(REGNO_MODE_OK_FOR_BASE_P): Cast REGNO to int before passing it to
GP_REG_OR_PSEUDO_STRICT_P.
* config/iq2000/iq2000.md (andsi3+1): Add gcc_unreachable for
unexpected alternative.
(*movsf_internal): Likewise.
(indirect_jump): Replace call to non-existant function with call to
internal_error.
(tablejump): Likewise.
* config/iq2000/iq2000.c: Include df.h .
(iq2000_function_arg_advance): Use CONST_CAST2.
(compute_frame_size, iq2000_expand_prologue): Remove unused variables.
(iq2000_can_eliminate): Call leaf_function_p instead of testing for
a non-zero function address.
(iq2000_initial_elimination_offset): Add gcc_unreachable for
unexpected value of FROM.
(symbolic_expression_p): Delete.
(iq2000_function_value): Constify func.
(expand_one_builtin): Use expand_normal.
(iq2000_print_operand): Don't print VALUE if calculating it failed.
2010-11-10 Laurynas Biveinis <laurynas.biveinis@gmail.com> 2010-11-10 Laurynas Biveinis <laurynas.biveinis@gmail.com>
PR/46268 PR/46268
...@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see
#include "target.h" #include "target.h"
#include "target-def.h" #include "target-def.h"
#include "langhooks.h" #include "langhooks.h"
#include "df.h"
/* Enumeration for all of the relational tests, so that we can build /* Enumeration for all of the relational tests, so that we can build
arrays indexed by the test type, and not worry about the order arrays indexed by the test type, and not worry about the order
...@@ -1150,7 +1151,7 @@ iq2000_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, ...@@ -1150,7 +1151,7 @@ iq2000_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
"function_adv({gp reg found = %d, arg # = %2d, words = %2d}, %4s, ", "function_adv({gp reg found = %d, arg # = %2d, words = %2d}, %4s, ",
cum->gp_reg_found, cum->arg_number, cum->arg_words, cum->gp_reg_found, cum->arg_number, cum->arg_words,
GET_MODE_NAME (mode)); GET_MODE_NAME (mode));
fprintf (stderr, "%p", (void *) type); fprintf (stderr, "%p", CONST_CAST2 (void *, const_tree, type));
fprintf (stderr, ", %d )\n\n", named); fprintf (stderr, ", %d )\n\n", named);
} }
...@@ -1632,8 +1633,6 @@ compute_frame_size (HOST_WIDE_INT size) ...@@ -1632,8 +1633,6 @@ compute_frame_size (HOST_WIDE_INT size)
HOST_WIDE_INT gp_reg_size; /* # bytes needed to store gp regs. */ HOST_WIDE_INT gp_reg_size; /* # bytes needed to store gp regs. */
HOST_WIDE_INT fp_reg_size; /* # bytes needed to store fp regs. */ HOST_WIDE_INT fp_reg_size; /* # bytes needed to store fp regs. */
long mask; /* mask of saved gp registers. */ long mask; /* mask of saved gp registers. */
int fp_inc; /* 1 or 2 depending on the size of fp regs. */
long fp_bits; /* bitmask to use for each fp register. */
gp_reg_size = 0; gp_reg_size = 0;
fp_reg_size = 0; fp_reg_size = 0;
...@@ -1674,8 +1673,6 @@ compute_frame_size (HOST_WIDE_INT size) ...@@ -1674,8 +1673,6 @@ compute_frame_size (HOST_WIDE_INT size)
} }
} }
fp_inc = 2;
fp_bits = 3;
gp_reg_rounded = IQ2000_STACK_ALIGN (gp_reg_size); gp_reg_rounded = IQ2000_STACK_ALIGN (gp_reg_size);
total_size += gp_reg_rounded + IQ2000_STACK_ALIGN (fp_reg_size); total_size += gp_reg_rounded + IQ2000_STACK_ALIGN (fp_reg_size);
...@@ -1730,7 +1727,7 @@ iq2000_can_eliminate (const int from, const int to) ...@@ -1730,7 +1727,7 @@ iq2000_can_eliminate (const int from, const int to)
{ {
return (from == RETURN_ADDRESS_POINTER_REGNUM return (from == RETURN_ADDRESS_POINTER_REGNUM
&& (! leaf_function_p () && (! leaf_function_p ()
|| (to == GP_REG_FIRST + 31 && leaf_function_p))) || (to == GP_REG_FIRST + 31 && leaf_function_p ())))
|| (from != RETURN_ADDRESS_POINTER_REGNUM || (from != RETURN_ADDRESS_POINTER_REGNUM
&& (to == HARD_FRAME_POINTER_REGNUM && (to == HARD_FRAME_POINTER_REGNUM
|| (to == STACK_POINTER_REGNUM || (to == STACK_POINTER_REGNUM
...@@ -1759,6 +1756,8 @@ iq2000_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED) ...@@ -1759,6 +1756,8 @@ iq2000_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED)
+ ((UNITS_PER_WORD - (POINTER_SIZE / BITS_PER_UNIT)) + ((UNITS_PER_WORD - (POINTER_SIZE / BITS_PER_UNIT))
* (BYTES_BIG_ENDIAN != 0)); * (BYTES_BIG_ENDIAN != 0));
} }
else
gcc_unreachable ();
return offset; return offset;
} }
...@@ -2002,7 +2001,7 @@ iq2000_expand_prologue (void) ...@@ -2002,7 +2001,7 @@ iq2000_expand_prologue (void)
for (i = 0; i < num; i++) for (i = 0; i < num; i++)
{ {
rtx insn, pattern; rtx pattern;
pattern = RTVEC_ELT (adjust, i); pattern = RTVEC_ELT (adjust, i);
if (GET_CODE (pattern) != SET if (GET_CODE (pattern) != SET
...@@ -2010,7 +2009,7 @@ iq2000_expand_prologue (void) ...@@ -2010,7 +2009,7 @@ iq2000_expand_prologue (void)
abort_with_insn (pattern, "Insn is not a shift"); abort_with_insn (pattern, "Insn is not a shift");
PUT_CODE (SET_SRC (pattern), ASHIFTRT); PUT_CODE (SET_SRC (pattern), ASHIFTRT);
insn = emit_insn (pattern); emit_insn (pattern);
} }
} }
...@@ -2165,27 +2164,6 @@ iq2000_can_use_return_insn (void) ...@@ -2165,27 +2164,6 @@ iq2000_can_use_return_insn (void)
return compute_frame_size (get_frame_size ()) == 0; return compute_frame_size (get_frame_size ()) == 0;
} }
/* Returns nonzero if X contains a SYMBOL_REF. */
static int
symbolic_expression_p (rtx x)
{
if (GET_CODE (x) == SYMBOL_REF)
return 1;
if (GET_CODE (x) == CONST)
return symbolic_expression_p (XEXP (x, 0));
if (UNARY_P (x))
return symbolic_expression_p (XEXP (x, 0));
if (ARITHMETIC_P (x))
return (symbolic_expression_p (XEXP (x, 0))
|| symbolic_expression_p (XEXP (x, 1)));
return 0;
}
/* Choose the section to use for the constant rtx expression X that has /* Choose the section to use for the constant rtx expression X that has
mode MODE. */ mode MODE. */
...@@ -2251,7 +2229,7 @@ iq2000_function_value (const_tree valtype, ...@@ -2251,7 +2229,7 @@ iq2000_function_value (const_tree valtype,
int reg = GP_RETURN; int reg = GP_RETURN;
enum machine_mode mode = TYPE_MODE (valtype); enum machine_mode mode = TYPE_MODE (valtype);
int unsignedp = TYPE_UNSIGNED (valtype); int unsignedp = TYPE_UNSIGNED (valtype);
tree func = fn_decl_or_type; const_tree func = fn_decl_or_type;
if (fn_decl_or_type if (fn_decl_or_type
&& !DECL_P (fn_decl_or_type)) && !DECL_P (fn_decl_or_type))
...@@ -2651,7 +2629,7 @@ expand_one_builtin (enum insn_code icode, rtx target, tree exp, ...@@ -2651,7 +2629,7 @@ expand_one_builtin (enum insn_code icode, rtx target, tree exp,
for (i = 0; i < argcount; i++) for (i = 0; i < argcount; i++)
{ {
arg[i] = CALL_EXPR_ARG (exp, i); arg[i] = CALL_EXPR_ARG (exp, i);
op[i] = expand_expr (arg[i], NULL_RTX, VOIDmode, 0); op[i] = expand_normal (arg[i]);
mode[i] = insn_data[icode].operand[i].mode; mode[i] = insn_data[icode].operand[i].mode;
if (code[i] == CONST_INT && GET_CODE (op[i]) != CONST_INT) if (code[i] == CONST_INT && GET_CODE (op[i]) != CONST_INT)
error ("argument %qd is not a constant", i + 1); error ("argument %qd is not a constant", i + 1);
...@@ -3198,7 +3176,8 @@ iq2000_print_operand (FILE *file, rtx op, int letter) ...@@ -3198,7 +3176,8 @@ iq2000_print_operand (FILE *file, rtx op, int letter)
if (code != CONST_INT if (code != CONST_INT
|| (value = exact_log2 (INTVAL (op))) < 0) || (value = exact_log2 (INTVAL (op))) < 0)
output_operand_lossage ("invalid %%p value"); output_operand_lossage ("invalid %%p value");
fprintf (file, "%d", value); else
fprintf (file, "%d", value);
} }
else if (letter == 'Z') else if (letter == 'Z')
......
...@@ -509,7 +509,7 @@ typedef struct iq2000_args ...@@ -509,7 +509,7 @@ typedef struct iq2000_args
"%8", "%9", "%10", "%11", "%12", "%13", "%14", "%15", \ "%8", "%9", "%10", "%11", "%12", "%13", "%14", "%15", \
"%16", "%17", "%18", "%19", "%20", "%21", "%22", "%23", \ "%16", "%17", "%18", "%19", "%20", "%21", "%22", "%23", \
"%24", "%25", "%26", "%27", "%28", "%29", "%30", "%31", "%rap" \ "%24", "%25", "%26", "%27", "%28", "%29", "%30", "%31", "%rap" \
}; }
#define ADDITIONAL_REGISTER_NAMES \ #define ADDITIONAL_REGISTER_NAMES \
{ \ { \
...@@ -832,7 +832,7 @@ enum processor_type ...@@ -832,7 +832,7 @@ enum processor_type
(((regno) >= FIRST_PSEUDO_REGISTER) || (BASE_REG_P ((regno), (mode)))) (((regno) >= FIRST_PSEUDO_REGISTER) || (BASE_REG_P ((regno), (mode))))
#define REGNO_MODE_OK_FOR_BASE_P(regno, mode) \ #define REGNO_MODE_OK_FOR_BASE_P(regno, mode) \
GP_REG_OR_PSEUDO_STRICT_P ((regno), (mode)) GP_REG_OR_PSEUDO_STRICT_P ((int) (regno), (mode))
/* The macros REG_OK_FOR..._P assume that the arg is a REG rtx /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx
and check its validity for a certain class. and check its validity for a certain class.
......
...@@ -365,6 +365,8 @@ ...@@ -365,6 +365,8 @@
return \"andoi\\t%0,%1,%x2\"; return \"andoi\\t%0,%1,%x2\";
} }
} }
else
gcc_unreachable ();
}" }"
[(set_attr "type" "arith") [(set_attr "type" "arith")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
...@@ -889,6 +891,8 @@ ...@@ -889,6 +891,8 @@
return \"lw\\t%0,%1\"; return \"lw\\t%0,%1\";
else if (which_alternative == 2) else if (which_alternative == 2)
return \"sw\\t%1,%0\"; return \"sw\\t%1,%0\";
else
gcc_unreachable ();
}" }"
[(set_attr "length" "4,4,4") [(set_attr "length" "4,4,4")
(set_attr "type" "arith,load,store")] (set_attr "type" "arith,load,store")]
...@@ -1340,7 +1344,7 @@ ...@@ -1340,7 +1344,7 @@
if (!(Pmode == DImode)) if (!(Pmode == DImode))
emit_jump_insn (gen_indirect_jump_internal1 (operands[0])); emit_jump_insn (gen_indirect_jump_internal1 (operands[0]));
else else
emit_jump_insn (gen_indirect_jump_internal2 (operands[0])); internal_error (\"unimplemented functionality\");
DONE; DONE;
} }
...@@ -1367,7 +1371,7 @@ ...@@ -1367,7 +1371,7 @@
if (!(Pmode == DImode)) if (!(Pmode == DImode))
emit_jump_insn (gen_tablejump_internal1 (operands[0], operands[1])); emit_jump_insn (gen_tablejump_internal1 (operands[0], operands[1]));
else else
emit_jump_insn (gen_tablejump_internal2 (operands[0], operands[1])); internal_error (\"unimplemented functionality\");
DONE; DONE;
} }
......
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