aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2013-08-01 21:48:46 +0200
committerUros Bizjak <uros@gcc.gnu.org>2013-08-01 21:48:46 +0200
commit0bd729015ccfab7dd1d535fa7a7c17afbda28017 (patch)
tree963f817c280e41702711ebb78cae3ea64d7acfa7 /gcc
parentfb23b69e140ca2448ae7360fe4a71e81e6101aac (diff)
downloadgcc-0bd729015ccfab7dd1d535fa7a7c17afbda28017.zip
gcc-0bd729015ccfab7dd1d535fa7a7c17afbda28017.tar.gz
gcc-0bd729015ccfab7dd1d535fa7a7c17afbda28017.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog49
-rw-r--r--gcc/config/i386/i386.c10
-rw-r--r--gcc/config/i386/i386.h7
3 files changed, 37 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bd846a0..5dfbc6f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0c546af..df79eac 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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;
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 7d940f9..b618a91 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -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 \