OSDN Git Service

PR debug/43516
[pf3gnuchains/gcc-fork.git] / gcc / mode-switching.c
index e6fd61d..fa119d0 100644 (file)
@@ -1,6 +1,6 @@
 /* CPU mode switching
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
+   2009 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -22,11 +22,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#include "target.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "flags.h"
-#include "real.h"
 #include "insn-config.h"
 #include "recog.h"
 #include "basic-block.h"
@@ -262,7 +262,7 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
                      case USE:
                        /* Skip __builtin_apply pattern.  */
                        if (GET_CODE (XEXP (return_copy_pat, 0)) == REG
-                           && (FUNCTION_VALUE_REGNO_P
+                           && (targetm.calls.function_value_regno_p
                                (REGNO (XEXP (return_copy_pat, 0)))))
                          {
                            maybe_builtin_apply = 1;
@@ -359,7 +359,8 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
                        && copy_start + copy_num <= ret_end)
                      nregs -= copy_num;
                    else if (!maybe_builtin_apply
-                            || !FUNCTION_VALUE_REGNO_P (copy_start))
+                            || !targetm.calls.function_value_regno_p
+                                (copy_start))
                      break;
                    last_insn = return_copy;
                  }
@@ -377,7 +378,7 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
                last_insn = return_copy;
              }
            while (nregs);
-           
+
            /* If we didn't see a full return value copy, verify that there
               is a plausible reason for this.  If some, but not all of the
               return register is likely spilled, we can expect that there
@@ -397,7 +398,7 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
                           failures, so let it pass.  */
                        || (GET_MODE_CLASS (GET_MODE (ret_reg)) != MODE_INT
                            && nregs != 1));
-           
+
            if (INSN_P (last_insn))
              {
                before_return_copy
@@ -760,7 +761,7 @@ struct rtl_opt_pass pass_mode_switching =
 {
  {
   RTL_PASS,
-  "mode-sw",                            /* name */
+  "mode_sw",                            /* name */
   gate_mode_switching,                  /* gate */
   rest_of_handle_mode_switching,        /* execute */
   NULL,                                 /* sub */