summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-10-06 05:50:37 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-10-06 07:54:43 -0700
commite5c618c9f951d6b9e2c534d4ace9225c6c991c75 (patch)
tree70aa59f07bab28139657d0184ae6130066fa8cbc
parent4c9faaa4e8bf561b99223608a7e972b017779fa1 (diff)
downloadgcc-hjl/pr67850.tar.gz
Merge ix86_maybe_switch_abi with ix86_set_current_functionhjl/pr67850
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.
-rw-r--r--gcc/config/i386/i386.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 38953ddc4ae..c44f0af9528 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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 ();
}
@@ -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