re PR target/64208 ([iwmmxt] ICE: internal compiler error: Max. number of generated...
authorYvan Roux <yvan.roux@linaro.org>
Wed, 6 May 2015 14:23:57 +0000 (14:23 +0000)
committerYvan Roux <yroux@gcc.gnu.org>
Wed, 6 May 2015 14:23:57 +0000 (14:23 +0000)
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

gcc/ChangeLog
gcc/config/arm/iwmmxt.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr64208.c [new file with mode: 0644]

index 8ed93d5e1df24769e0a0ad201ff0744a9725b31e..f7188b2649637e2ad8514bb800474fc29ea69593 100644 (file)
@@ -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.
index fda3c2c53b686f7a88cf926766ce35237e2a8b08..d1a60ff9caf35eeb1610a7b08baeb4da6dea856e 100644 (file)
 )
 
 (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))"
index 2b92dafc82093684c1452bd02aed698aa11de9c2..7c4781c2aa858ac27dac5beb2edfcb1080e1ff8a 100644 (file)
@@ -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 (file)
index 0000000..96fd56d
--- /dev/null
@@ -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;
+  }
+}