i386.h (MAYBE_NON_Q_CLASS_P): New.

* config/i386/i386.h (MAYBE_NON_Q_CLASS_P): New.
	* config/i386/i386.c (ix86_secondary_reload): Use INTEGER_CLASS_P and
	MAYBE_NON_Q_CLASS_P where appropriate.

From-SVN: r201415
This commit is contained in:
Uros Bizjak 2013-08-01 21:48:46 +02:00
parent fb23b69e14
commit 0bd729015c
3 changed files with 37 additions and 29 deletions

View File

@ -1,3 +1,9 @@
2013-08-01 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.h (MAYBE_NON_Q_CLASS_P): New.
* config/i386/i386.c (ix86_secondary_reload): Use INTEGER_CLASS_P and
MAYBE_NON_Q_CLASS_P where appropriate.
2013-08-01 Jan Hubicka <jh@suse.cz>
* cgraph.h (release_function_body): Declare.
@ -26,13 +32,16 @@
* tree-inline-transfrom.c (can_remove_node_now_p_1): Do not remove
symbols used as abstract origins.
* cgraphunit.c (analyze_functions): Update.
* ipa.c (symtab_remove_unreachable_nodes): Recompute used_as_abstract_origin.
* ipa.c (symtab_remove_unreachable_nodes): Recompute
used_as_abstract_origin.
* tree-inline.c (tree_function_versioning): Update
used_as_abstract_origin; be ready for DECL_RESULT and DECL_ARGUMENTS to be
NULL.
used_as_abstract_origin; be ready for DECL_RESULT and
DECL_ARGUMENTS to be NULL.
* lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes for abstract functions.
* cgraph.h (symtab_real_symbol_p): Abstract declarations are not real symbols.
* lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes
for abstract functions.
* cgraph.h (symtab_real_symbol_p): Abstract declarations are not
real symbols.
2013-08-01 Jan Hubicka <jh@suse.cz>
@ -74,8 +83,7 @@
(emit_fusion_gpr_load): Emit the instructions for power8 load
fusion to GPRs.
* config/rs6000/vsx.md (VSX_M2): New iterator for fusion
peepholes.
* config/rs6000/vsx.md (VSX_M2): New iterator for fusion peepholes.
(VSX load fusion peepholes): New peepholes to fuse together an
addi instruction with a VSX load instruction.
@ -92,21 +100,22 @@
(arm*-*-*): Add arm/aarch-common-protos.h to tm_p_file.
* config/arm/arm.c (arm_early_load_addr_dep): Move from here to ...
(arm_early_store_addr_dep): Likewise.
(arm_no_early_alu_shift_dep: Likewise.
(arm_no_early_alu_shift_value_dep: Likewise.
(arm_no_early_mul_dep: Likewise.
(arm_no_early_store_addr_dep: Likewise.
(arm_mac_accumulator_is_mul_result: Likewise.
(arm_mac_accumulator_is_result: Likewise.
(arm_no_early_alu_shift_dep): Likewise.
(arm_no_early_alu_shift_value_dep): Likewise.
(arm_no_early_mul_dep): Likewise.
(arm_no_early_store_addr_dep): Likewise.
(arm_mac_accumulator_is_mul_result): Likewise.
(arm_mac_accumulator_is_result): Likewise.
* config/arm/aarch-common.c: ... here. New file.
* config/arm/arm-protos.h (arm_early_load_addr_dep): Move from here to ...
* config/arm/arm-protos.h (arm_early_load_addr_dep): Move from
here to ...
(arm_early_store_addr_dep): Likewise.
(arm_no_early_alu_shift_dep: Likewise.
(arm_no_early_alu_shift_value_dep: Likewise.
(arm_no_early_mul_dep: Likewise.
(arm_no_early_store_addr_dep: Likewise.
(arm_mac_accumulator_is_mul_result: Likewise.
(arm_mac_accumulator_is_result: Likewise.
(arm_no_early_alu_shift_dep): Likewise.
(arm_no_early_alu_shift_value_dep): Likewise.
(arm_no_early_mul_dep): Likewise.
(arm_no_early_store_addr_dep): Likewise.
(arm_mac_accumulator_is_mul_result): Likewise.
(arm_mac_accumulator_is_result): Likewise.
* config/arm/aarch-common-protos.h: ... here. New file.
* config/arm/t-arm (aarch-common.o): Define.

View File

@ -33822,7 +33822,7 @@ ix86_secondary_reload (bool in_p, rtx x, reg_class_t rclass,
if (TARGET_64BIT
&& MEM_P (x)
&& GET_MODE_SIZE (mode) > UNITS_PER_WORD
&& rclass == GENERAL_REGS
&& INTEGER_CLASS_P (rclass)
&& !offsettable_memref_p (x))
{
sri->icode = (in_p
@ -33838,12 +33838,8 @@ ix86_secondary_reload (bool in_p, rtx x, reg_class_t rclass,
intermediate register on 32bit targets. */
if (!TARGET_64BIT
&& !in_p && mode == QImode
&& (rclass == GENERAL_REGS
|| rclass == LEGACY_REGS
|| rclass == NON_Q_REGS
|| rclass == SIREG
|| rclass == DIREG
|| rclass == INDEX_REGS))
&& INTEGER_CLASS_P (rclass)
&& MAYBE_NON_Q_CLASS_P (rclass))
{
int regno;

View File

@ -1288,13 +1288,16 @@ enum reg_class
#define MAYBE_FLOAT_CLASS_P(CLASS) \
reg_classes_intersect_p ((CLASS), FLOAT_REGS)
#define MAYBE_SSE_CLASS_P(CLASS) \
reg_classes_intersect_p (SSE_REGS, (CLASS))
reg_classes_intersect_p ((CLASS), SSE_REGS)
#define MAYBE_MMX_CLASS_P(CLASS) \
reg_classes_intersect_p (MMX_REGS, (CLASS))
reg_classes_intersect_p ((CLASS), MMX_REGS)
#define Q_CLASS_P(CLASS) \
reg_class_subset_p ((CLASS), Q_REGS)
#define MAYBE_NON_Q_CLASS_P(CLASS) \
reg_classes_intersect_p ((CLASS), NON_Q_REGS)
/* Give names of register classes as strings for dump file. */
#define REG_CLASS_NAMES \