Commit 556618c1 by Joern Rennecke Committed by Joern Rennecke

re PR target/46623 (microblaze --enable-werror-always build fails)

	PR target/46623
	* config/microblaze/microblaze.c (microblaze_block_move_straight):
	Use XALLOCAVEC.
	(microblaze_option_override): Don't use C++ style comments.
	(save_restore_insns): Remove unused variable base_offset.
	(microblaze_expand_prologue): Remove unused variable insn.
	(microblaze_secondary_reload): Adjust type to match target.h .
	(microblaze_elf_in_small_data_p): Move declarations to start of block.
	(microblaze_expand_move): Likewise.
	* config/microblaze/microblaze.h (LARGE_INT):
	Avoid signed / unsigned comparisons.
	(ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
	(ASM_FORMAT_PRIVATE_NAME): Make format specifier match printed data.
	(ASM_FINISH_DECLARE_OBJECT): Likewise.  Constify name.

From-SVN: r167186
parent 3ffcc54f
2010-11-26 Joern Rennecke <amylaar@spamcop.net>
PR target/46623
* config/microblaze/microblaze.c (microblaze_block_move_straight):
Use XALLOCAVEC.
(microblaze_option_override): Don't use C++ style comments.
(save_restore_insns): Remove unused variable base_offset.
(microblaze_expand_prologue): Remove unused variable insn.
(microblaze_secondary_reload): Adjust type to match target.h .
(microblaze_elf_in_small_data_p): Move declarations to start of block.
(microblaze_expand_move): Likewise.
* config/microblaze/microblaze.h (LARGE_INT):
Avoid signed / unsigned comparisons.
(ASM_OUTPUT_ALIGNED_COMMON, ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
(ASM_FORMAT_PRIVATE_NAME): Make format specifier match printed data.
(ASM_FINISH_DECLARE_OBJECT): Likewise. Constify name.
2010-11-26 Michael Matz <matz@suse.de> 2010-11-26 Michael Matz <matz@suse.de>
* tree-ssa-copy.c (fini_copy_prop): Don't DCE when we have loops. * tree-ssa-copy.c (fini_copy_prop): Don't DCE when we have loops.
...@@ -729,7 +729,7 @@ microblaze_block_move_straight (rtx dest, rtx src, HOST_WIDE_INT length) ...@@ -729,7 +729,7 @@ microblaze_block_move_straight (rtx dest, rtx src, HOST_WIDE_INT length)
delta = bits / BITS_PER_UNIT; delta = bits / BITS_PER_UNIT;
/* Allocate a buffer for the temporary registers. */ /* Allocate a buffer for the temporary registers. */
regs = alloca (sizeof (rtx) * length / delta); regs = XALLOCAVEC (rtx, length / delta);
/* Load as many BITS-sized chunks as possible. Use a normal load if /* Load as many BITS-sized chunks as possible. Use a normal load if
the source has enough alignment, otherwise use left/right pairs. */ the source has enough alignment, otherwise use left/right pairs. */
...@@ -1317,7 +1317,9 @@ microblaze_option_override (void) ...@@ -1317,7 +1317,9 @@ microblaze_option_override (void)
if (ver < 0) if (ver < 0)
{ {
/* No hardware exceptions in earlier versions. So no worries. */ /* No hardware exceptions in earlier versions. So no worries. */
// microblaze_select_flags &= ~(MICROBLAZE_MASK_NO_UNSAFE_DELAY); #if 0
microblaze_select_flags &= ~(MICROBLAZE_MASK_NO_UNSAFE_DELAY);
#endif
microblaze_no_unsafe_delay = 0; microblaze_no_unsafe_delay = 0;
microblaze_pipe = MICROBLAZE_PIPE_3; microblaze_pipe = MICROBLAZE_PIPE_3;
} }
...@@ -1325,7 +1327,9 @@ microblaze_option_override (void) ...@@ -1325,7 +1327,9 @@ microblaze_option_override (void)
|| (MICROBLAZE_VERSION_COMPARE (microblaze_select_cpu, "v4.00.b") || (MICROBLAZE_VERSION_COMPARE (microblaze_select_cpu, "v4.00.b")
== 0)) == 0))
{ {
// microblaze_select_flags |= (MICROBLAZE_MASK_NO_UNSAFE_DELAY); #if 0
microblaze_select_flags |= (MICROBLAZE_MASK_NO_UNSAFE_DELAY);
#endif
microblaze_no_unsafe_delay = 1; microblaze_no_unsafe_delay = 1;
microblaze_pipe = MICROBLAZE_PIPE_3; microblaze_pipe = MICROBLAZE_PIPE_3;
} }
...@@ -1333,7 +1337,9 @@ microblaze_option_override (void) ...@@ -1333,7 +1337,9 @@ microblaze_option_override (void)
{ {
/* We agree to use 5 pipe-stage model even on area optimized 3 /* We agree to use 5 pipe-stage model even on area optimized 3
pipe-stage variants. */ pipe-stage variants. */
// microblaze_select_flags &= ~(MICROBLAZE_MASK_NO_UNSAFE_DELAY); #if 0
microblaze_select_flags &= ~(MICROBLAZE_MASK_NO_UNSAFE_DELAY);
#endif
microblaze_no_unsafe_delay = 0; microblaze_no_unsafe_delay = 0;
microblaze_pipe = MICROBLAZE_PIPE_5; microblaze_pipe = MICROBLAZE_PIPE_5;
if (MICROBLAZE_VERSION_COMPARE (microblaze_select_cpu, "v5.00.a") == 0 if (MICROBLAZE_VERSION_COMPARE (microblaze_select_cpu, "v5.00.a") == 0
...@@ -1362,7 +1368,9 @@ microblaze_option_override (void) ...@@ -1362,7 +1368,9 @@ microblaze_option_override (void)
/* Always use DFA scheduler. */ /* Always use DFA scheduler. */
microblaze_sched_use_dfa = 1; microblaze_sched_use_dfa = 1;
// microblaze_abicalls = MICROBLAZE_ABICALLS_NO; #if 0
microblaze_abicalls = MICROBLAZE_ABICALLS_NO;
#endif
/* Initialize the high, low values for legit floating point constants. */ /* Initialize the high, low values for legit floating point constants. */
real_maxval (&dfhigh, 0, DFmode); real_maxval (&dfhigh, 0, DFmode);
...@@ -2068,7 +2076,7 @@ save_restore_insns (int prologue) ...@@ -2068,7 +2076,7 @@ save_restore_insns (int prologue)
0, isr_mem_rtx = 0; 0, isr_mem_rtx = 0;
rtx isr_msr_rtx = 0, insn; rtx isr_msr_rtx = 0, insn;
long mask = current_frame_info.mask; long mask = current_frame_info.mask;
HOST_WIDE_INT base_offset, gp_offset; HOST_WIDE_INT gp_offset;
int regno; int regno;
if (frame_pointer_needed if (frame_pointer_needed
...@@ -2094,7 +2102,6 @@ save_restore_insns (int prologue) ...@@ -2094,7 +2102,6 @@ save_restore_insns (int prologue)
gcc_assert (gp_offset > 0); gcc_assert (gp_offset > 0);
base_reg_rtx = stack_pointer_rtx; base_reg_rtx = stack_pointer_rtx;
base_offset = 0;
/* For interrupt_handlers, need to save/restore the MSR. */ /* For interrupt_handlers, need to save/restore the MSR. */
if (interrupt_handler) if (interrupt_handler)
...@@ -2391,9 +2398,8 @@ microblaze_expand_prologue (void) ...@@ -2391,9 +2398,8 @@ microblaze_expand_prologue (void)
if (flag_pic == 2 && df_regs_ever_live_p (MB_ABI_PIC_ADDR_REGNUM)) if (flag_pic == 2 && df_regs_ever_live_p (MB_ABI_PIC_ADDR_REGNUM))
{ {
rtx insn;
SET_REGNO (pic_offset_table_rtx, MB_ABI_PIC_ADDR_REGNUM); SET_REGNO (pic_offset_table_rtx, MB_ABI_PIC_ADDR_REGNUM);
insn = emit_insn (gen_set_got (pic_offset_table_rtx)); /* setting GOT. */ emit_insn (gen_set_got (pic_offset_table_rtx)); /* setting GOT. */
} }
/* If we are profiling, make sure no instructions are scheduled before /* If we are profiling, make sure no instructions are scheduled before
...@@ -2518,9 +2524,9 @@ microblaze_can_use_return_insn (void) ...@@ -2518,9 +2524,9 @@ microblaze_can_use_return_insn (void)
/* Implement TARGET_SECONDARY_RELOAD. */ /* Implement TARGET_SECONDARY_RELOAD. */
static enum reg_class static reg_class_t
microblaze_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x ATTRIBUTE_UNUSED, microblaze_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x ATTRIBUTE_UNUSED,
enum reg_class rclass, enum machine_mode mode ATTRIBUTE_UNUSED, reg_class_t rclass, enum machine_mode mode ATTRIBUTE_UNUSED,
secondary_reload_info *sri ATTRIBUTE_UNUSED) secondary_reload_info *sri ATTRIBUTE_UNUSED)
{ {
if (rclass == ST_REGS) if (rclass == ST_REGS)
...@@ -2546,6 +2552,8 @@ microblaze_globalize_label (FILE * stream, const char *name) ...@@ -2546,6 +2552,8 @@ microblaze_globalize_label (FILE * stream, const char *name)
static bool static bool
microblaze_elf_in_small_data_p (const_tree decl) microblaze_elf_in_small_data_p (const_tree decl)
{ {
HOST_WIDE_INT size;
if (!TARGET_XLGPOPT) if (!TARGET_XLGPOPT)
return false; return false;
...@@ -2567,7 +2575,7 @@ microblaze_elf_in_small_data_p (const_tree decl) ...@@ -2567,7 +2575,7 @@ microblaze_elf_in_small_data_p (const_tree decl)
return true; return true;
} }
HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl)); size = int_size_in_bytes (TREE_TYPE (decl));
return (size > 0 && size <= microblaze_section_threshold); return (size > 0 && size <= microblaze_section_threshold);
} }
...@@ -2624,11 +2632,11 @@ microblaze_expand_move (enum machine_mode mode, rtx operands[]) ...@@ -2624,11 +2632,11 @@ microblaze_expand_move (enum machine_mode mode, rtx operands[])
rtx addr = XEXP (operands[0], 0); rtx addr = XEXP (operands[0], 0);
if (GET_CODE (addr) == SYMBOL_REF) if (GET_CODE (addr) == SYMBOL_REF)
{ {
rtx ptr_reg, result;
if (reload_in_progress) if (reload_in_progress)
df_set_regs_ever_live (PIC_OFFSET_TABLE_REGNUM, true); df_set_regs_ever_live (PIC_OFFSET_TABLE_REGNUM, true);
rtx ptr_reg, result;
addr = expand_pic_symbol_ref (mode, addr); addr = expand_pic_symbol_ref (mode, addr);
ptr_reg = gen_reg_rtx (Pmode); ptr_reg = gen_reg_rtx (Pmode);
emit_move_insn (ptr_reg, addr); emit_move_insn (ptr_reg, addr);
......
...@@ -369,7 +369,8 @@ extern enum reg_class microblaze_regno_to_class[]; ...@@ -369,7 +369,8 @@ extern enum reg_class microblaze_regno_to_class[];
/* REGISTER AND CONSTANT CLASSES */ /* REGISTER AND CONSTANT CLASSES */
#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000) #define SMALL_INT(X) ((unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000)
#define LARGE_INT(X) (INTVAL (X) >= 0x80000000 && INTVAL (X) <= 0xffffffff) #define LARGE_INT(X) \
(INTVAL (X) > 0 && UINTVAL (X) >= 0x80000000 && UINTVAL (X) <= 0xffffffff)
#define PLT_ADDR_P(X) (GET_CODE (X) == UNSPEC && XINT (X,1) == UNSPEC_PLT) #define PLT_ADDR_P(X) (GET_CODE (X) == UNSPEC && XINT (X,1) == UNSPEC_PLT)
/* Test for a valid operand for a call instruction. /* Test for a valid operand for a call instruction.
Don't allow the arg pointer register or virtual regs Don't allow the arg pointer register or virtual regs
...@@ -647,8 +648,9 @@ typedef struct microblaze_args ...@@ -647,8 +648,9 @@ typedef struct microblaze_args
#undef ASM_OUTPUT_ALIGNED_COMMON #undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
do { \ do { \
if (SIZE > 0 && SIZE <= microblaze_section_threshold \ if ((SIZE) > 0 && (SIZE) <= INT_MAX \
&& TARGET_XLGPOPT) \ && (int) (SIZE) <= microblaze_section_threshold \
&& TARGET_XLGPOPT) \
{ \ { \
switch_to_section (sbss_section); \ switch_to_section (sbss_section); \
} \ } \
...@@ -666,8 +668,9 @@ do { \ ...@@ -666,8 +668,9 @@ do { \
#undef ASM_OUTPUT_ALIGNED_LOCAL #undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { \ do { \
if (SIZE > 0 && SIZE <= microblaze_section_threshold \ if ((SIZE) > 0 && (SIZE) <= INT_MAX \
&& TARGET_XLGPOPT) \ && (int) (SIZE) <= microblaze_section_threshold \
&& TARGET_XLGPOPT) \
{ \ { \
switch_to_section (sbss_section); \ switch_to_section (sbss_section); \
} \ } \
...@@ -736,7 +739,7 @@ do { \ ...@@ -736,7 +739,7 @@ do { \
LABELNO is an integer which is different for each call. */ LABELNO is an integer which is different for each call. */
#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \ #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \ ( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), \
sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO))) sprintf ((OUTPUT), "%s.%lu", (NAME), (unsigned long)(LABELNO)))
/* How to start an assembler comment. /* How to start an assembler comment.
The leading space is important (the microblaze assembler requires it). */ The leading space is important (the microblaze assembler requires it). */
...@@ -817,7 +820,8 @@ extern int save_volatiles; ...@@ -817,7 +820,8 @@ extern int save_volatiles;
size_directive_output = 1; \ size_directive_output = 1; \
fprintf (FILE, "%s", SIZE_ASM_OP); \ fprintf (FILE, "%s", SIZE_ASM_OP); \
assemble_name (FILE, NAME); \ assemble_name (FILE, NAME); \
fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL))); \ fprintf (FILE, "," HOST_WIDE_INT_PRINT_DEC "\n", \
int_size_in_bytes (TREE_TYPE (DECL))); \
} \ } \
microblaze_declare_object (FILE, NAME, "", ":\n", 0); \ microblaze_declare_object (FILE, NAME, "", ":\n", 0); \
} while (0) } while (0)
...@@ -825,7 +829,7 @@ extern int save_volatiles; ...@@ -825,7 +829,7 @@ extern int save_volatiles;
#undef ASM_FINISH_DECLARE_OBJECT #undef ASM_FINISH_DECLARE_OBJECT
#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END) \ #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END) \
do { \ do { \
char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \ const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \
if (!flag_inhibit_size_directive && DECL_SIZE (DECL) \ if (!flag_inhibit_size_directive && DECL_SIZE (DECL) \
&& ! AT_END && TOP_LEVEL \ && ! AT_END && TOP_LEVEL \
&& DECL_INITIAL (DECL) == error_mark_node \ && DECL_INITIAL (DECL) == error_mark_node \
...@@ -834,7 +838,8 @@ do { \ ...@@ -834,7 +838,8 @@ do { \
size_directive_output = 1; \ size_directive_output = 1; \
fprintf (FILE, "%s", SIZE_ASM_OP); \ fprintf (FILE, "%s", SIZE_ASM_OP); \
assemble_name (FILE, name); \ assemble_name (FILE, name); \
fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL))); \ fprintf (FILE, "," HOST_WIDE_INT_PRINT_DEC "\n", \
int_size_in_bytes (TREE_TYPE (DECL))); \
} \ } \
} while (0) } while (0)
......
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