aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2015-05-06 14:23:57 +0000
committerYvan Roux <yroux@gcc.gnu.org>2015-05-06 14:23:57 +0000
commit93e956161e843aecdd9ad07574132efb3616d549 (patch)
tree510bed1523286c1e8633a33bd64c882ca91ed130 /gcc
parent2149da1b264e7b11d5da6dda6426b53ca5ae739f (diff)
downloadgcc-93e956161e843aecdd9ad07574132efb3616d549.zip
gcc-93e956161e843aecdd9ad07574132efb3616d549.tar.gz
gcc-93e956161e843aecdd9ad07574132efb3616d549.tar.bz2
re PR target/64208 ([iwmmxt] ICE: internal compiler error: Max. number of generated reload insns per insn is achieved (90))
gcc/ 2015-05-06 Yvan Roux <yvan.roux@linaro.org> PR target/64208 * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Cleanup redundant alternatives. gcc/testsuite/ 2015-05-06 Yvan Roux <yvan.roux@linaro.org> PR target/64208 * gcc.target/arm/pr64208.c: New test. From-SVN: r222853
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/iwmmxt.md4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/pr64208.c25
4 files changed, 38 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8ed93d5..f7188b2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-05-06 Yvan Roux <yvan.roux@linaro.org>
+
+ PR target/64208
+ * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Cleanup redundant
+ alternatives.
+
2015-05-06 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config/aarch64/geniterators.sh: Use standard BRE in sed.
diff --git a/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md
index fda3c2c..d1a60ff 100644
--- a/gcc/config/arm/iwmmxt.md
+++ b/gcc/config/arm/iwmmxt.md
@@ -107,8 +107,8 @@
)
(define_insn "*iwmmxt_arm_movdi"
- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,yr,y,yrUy,*w, r,*w,*w, *Uv")
- (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,yr,y,yrUy,y, r,*w,*w,*Uvi,*w"))]
+ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,r, y,Uy,*w, r,*w,*w, *Uv")
+ (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r,y,r,y,Uy,y, r,*w,*w,*Uvi,*w"))]
"TARGET_REALLY_IWMMXT
&& ( register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2b92daf..7c4781c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-06 Yvan Roux <yvan.roux@linaro.org>
+
+ PR target/64208
+ * gcc.target/arm/pr64208.c: New test.
+
2015-05-06 Alan Modra <amodra@gmail.com>
PR target/66020
diff --git a/gcc/testsuite/gcc.target/arm/pr64208.c b/gcc/testsuite/gcc.target/arm/pr64208.c
new file mode 100644
index 0000000..96fd56d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr64208.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
+/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
+/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
+/* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
+/* { dg-require-effective-target arm32 } */
+/* { dg-require-effective-target arm_iwmmxt_ok } */
+/* { dg-options "-O1 -mcpu=iwmmxt" } */
+
+long long x6(void);
+void x7(long long, long long);
+void x8(long long);
+
+int x0;
+long long *x1;
+
+void x2(void) {
+ long long *x3 = x1;
+ while (x1) {
+ long long x4 = x0, x5 = x6();
+ x7(x4, x5);
+ x8(x5);
+ *x3 = 0;
+ }
+}