* config/epiphany/epiphany.h (HARD_REGNO_RENAME_OK): Define.
* config/epiphany/epiphany-protos.h (epiphany_regno_rename_ok): Declare.
* config/epiphany/epiphany.c (epiphany_regno_rename_ok): New function.
From-SVN: r193889
+2012-11-28 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * config/epiphany/epiphany.h (HARD_REGNO_RENAME_OK): Define.
+ * config/epiphany/epiphany-protos.h (epiphany_regno_rename_ok): Declare.
+ * config/epiphany/epiphany.c (epiphany_regno_rename_ok): New function.
+
2012-11-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/54547
extern unsigned epiphany_special_round_type_align (tree, unsigned, unsigned);
extern unsigned epiphany_adjust_field_align (tree, unsigned);
extern void epiphany_start_function (FILE *f, const char *name, tree decl);
+extern bool epiphany_regno_rename_ok (unsigned src, unsigned dst);
gcc_unreachable ();
}
+bool
+epiphany_regno_rename_ok (unsigned, unsigned dst)
+{
+ enum epiphany_function_type fn_type;
+
+ fn_type = epiphany_compute_function_type (current_function_decl);
+ if (!EPIPHANY_INTERRUPT_P (fn_type))
+ return true;
+ if (df_regs_ever_live_p (dst))
+ return true;
+ return false;
+}
+
static int
epiphany_issue_rate (void)
{
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 \
}
+#define HARD_REGNO_RENAME_OK(SRC, DST) epiphany_regno_rename_ok (SRC, DST)
+
/* Return number of consecutive hard regs needed starting at reg REGNO
to hold something of mode MODE.
This is ordinarily the length in words of a value of mode MODE