Merge ix86_maybe_switch_abi with ix86_set_current_function
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 7 Oct 2015 10:30:12 +0000 (10:30 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 7 Oct 2015 10:30:12 +0000 (03:30 -0700)
ix86_maybe_switch_abi is called to late during RTL expansion and we
use the stale information from compilation of the previous function.
aggregate_value_p uses call_used_regs.  aggregate_value_p is used by
IPA and return value optimization, which are called before
ix86_maybe_switch_abi is called.  This patch merges ix86_maybe_switch_abi
with ix86_set_current_function.

PR target/67850
* config/i386/i386.c (ix86_maybe_switch_abi): Merged with ...
(ix86_set_current_function): This.
(TARGET_EXPAND_TO_RTL_HOOK): Removed.

From-SVN: r228565

gcc/ChangeLog
gcc/config/i386/i386.c

index bcbbde486f3c84c1c1d4a0323863ddef35232210..23560024d0f4b81df80d10ad9b5b1b2287372204 100644 (file)
@@ -1,3 +1,10 @@
+2015-10-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/67850
+       * config/i386/i386.c (ix86_maybe_switch_abi): Merged with ...
+       (ix86_set_current_function): This.
+       (TARGET_EXPAND_TO_RTL_HOOK): Removed.
+
 2015-10-07  Richard Biener  <rguenther@suse.de>
 
        * tree-vectorizer.h (stmt_vec_info_vec): Use vec<stmt_vec_info>.
index 38953ddc4aec4c2ee7b8d847dda725deacc8d367..c44f0af9528c1843924514bf2e45a5edf6297845 100644 (file)
@@ -6367,6 +6367,14 @@ ix86_set_current_function (tree fndecl)
        TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts ();
     }
   ix86_previous_fndecl = fndecl;
+
+  /* 64-bit MS and SYSV ABI have different set of call used registers.
+     Avoid expensive re-initialization of init_regs each time we switch
+     function context.  */
+  if (TARGET_64BIT
+      && (call_used_regs[SI_REG]
+         == (cfun->machine->call_abi == MS_ABI)))
+    reinit_regs ();
 }
 
 \f
@@ -7502,17 +7510,6 @@ ix86_call_abi_override (const_tree fndecl)
   cfun->machine->call_abi = ix86_function_abi (fndecl);
 }
 
-/* 64-bit MS and SYSV ABI have different set of call used registers.  Avoid
-   expensive re-initialization of init_regs each time we switch function context
-   since this is needed only during RTL expansion.  */
-static void
-ix86_maybe_switch_abi (void)
-{
-  if (TARGET_64BIT &&
-      call_used_regs[SI_REG] == (cfun->machine->call_abi == MS_ABI))
-    reinit_regs ();
-}
-
 /* Return 1 if pseudo register should be created and used to hold
    GOT address for PIC code.  */
 bool
@@ -53911,9 +53908,6 @@ ix86_operands_ok_for_move_multiple (rtx *operands, bool load,
 #undef TARGET_CAN_INLINE_P
 #define TARGET_CAN_INLINE_P ix86_can_inline_p
 
-#undef TARGET_EXPAND_TO_RTL_HOOK
-#define TARGET_EXPAND_TO_RTL_HOOK ix86_maybe_switch_abi
-
 #undef TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P ix86_legitimate_address_p