epiphany.h (HARD_REGNO_RENAME_OK): Define.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Wed, 28 Nov 2012 13:18:25 +0000 (13:18 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 28 Nov 2012 13:18:25 +0000 (13:18 +0000)
        * 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

gcc/ChangeLog
gcc/config/epiphany/epiphany-protos.h
gcc/config/epiphany/epiphany.c
gcc/config/epiphany/epiphany.h

index 128062da83fedc7f1d5eb25fbe70c688379ed01a..538eb020ad2163f9ddadc43bdb9b857de8e2a6aa 100644 (file)
@@ -1,3 +1,9 @@
+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
index 2e787da857992964ae35cf5c103f6be293f9be16..4400580e33007a30a5e6d066ad5c65653cec80ab 100644 (file)
@@ -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);
index 4279a146e0427c013af0b5c5f8fd30ed40246dff..88079d22f8bec174bdf1a58ddd9d714d59cc48d6 100644 (file)
@@ -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)
 {
index b1b5e8b956b4c9daf0d38fed27be28bc53656e18..07d0909c96da97927fd2c74e64101538b890afab 100644 (file)
@@ -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