From: Joern Rennecke Date: Wed, 28 Nov 2012 13:18:25 +0000 (+0000) Subject: epiphany.h (HARD_REGNO_RENAME_OK): Define. X-Git-Tag: releases/gcc-4.8.0~1735 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ffcc7caf89f32a76f39fd293c0e97df2b5cf5288;p=thirdparty%2Fgcc.git epiphany.h (HARD_REGNO_RENAME_OK): Define. * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 128062da83fe..538eb020ad21 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-11-28 Joern Rennecke + + * 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 PR tree-optimization/54547 diff --git a/gcc/config/epiphany/epiphany-protos.h b/gcc/config/epiphany/epiphany-protos.h index 2e787da85799..4400580e3300 100644 --- a/gcc/config/epiphany/epiphany-protos.h +++ b/gcc/config/epiphany/epiphany-protos.h @@ -54,3 +54,4 @@ extern bool epiphany_is_interrupt_p (tree); 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); diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index 4279a146e042..88079d22f8be 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -1879,6 +1879,19 @@ epiphany_initial_elimination_offset (int from, int to) 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) { diff --git a/gcc/config/epiphany/epiphany.h b/gcc/config/epiphany/epiphany.h index b1b5e8b956b4..07d0909c96da 100644 --- a/gcc/config/epiphany/epiphany.h +++ b/gcc/config/epiphany/epiphany.h @@ -291,6 +291,8 @@ along with GCC; see the file COPYING3. If not see 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