aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <clyon@gcc.gnu.org>2013-12-19 17:32:04 +0100
committerChristophe Lyon <clyon@gcc.gnu.org>2013-12-19 17:32:04 +0100
commit315d7bd411a074259fd9b66e04f9737b70588cbf (patch)
tree226b332068aa9bbe95a6e12777d4c838679930e4
parentfa33bba7b02d19b9b41f670074777d5134d21714 (diff)
downloadgcc-315d7bd411a074259fd9b66e04f9737b70588cbf.zip
gcc-315d7bd411a074259fd9b66e04f9737b70588cbf.tar.gz
gcc-315d7bd411a074259fd9b66e04f9737b70588cbf.tar.bz2
re PR target/59142 (internal compiler error while compiling OpenCV 2.4.7)
2013-12-19 Charles Baylis <charles.baylis@linaro.org> PR target/59142 * config/arm/predicates.md (vfp_hard_register_operand): New predicate. * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use vfp_hard_register_operand. From-SVN: r206123
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/arm/arm.md2
-rw-r--r--gcc/config/arm/predicates.md6
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 47dfb73..7ff9d7c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,11 @@
-o2013-12-19 Tejas Belagod <tejas.belagod@arm.com>
+2013-12-19 Charles Baylis <charles.baylis@linaro.org>
+
+ PR target/59142
+ * config/arm/predicates.md (vfp_hard_register_operand): New predicate.
+ * config/arm/arm.md (vfp_pop_multiple_with_writeback): Use
+ vfp_hard_register_operand.
+
+2013-12-19 Tejas Belagod <tejas.belagod@arm.com>
* config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
Define builtin types for poly64_t poly128_t.
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index c474ff16..6e1b47d 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -12253,7 +12253,7 @@
[(set (match_operand:SI 1 "s_register_operand" "+rk")
(plus:SI (match_dup 1)
(match_operand:SI 2 "const_int_operand" "I")))
- (set (match_operand:DF 3 "arm_hard_register_operand" "")
+ (set (match_operand:DF 3 "vfp_hard_register_operand" "")
(mem:DF (match_dup 1)))])]
"TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP"
"*
diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
index 29e1e5c..24f0548 100644
--- a/gcc/config/arm/predicates.md
+++ b/gcc/config/arm/predicates.md
@@ -98,6 +98,12 @@
&& REGNO_REG_CLASS (REGNO (op)) == VFP_REGS)));
})
+(define_predicate "vfp_hard_register_operand"
+ (match_code "reg")
+{
+ return (IS_VFP_REGNUM (REGNO (op)));
+})
+
(define_predicate "zero_operand"
(and (match_code "const_int,const_double,const_vector")
(match_test "op == CONST0_RTX (mode)")))