]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/70098 (PowerPC64: eigen hits ICE following invalid register...
authorSegher Boessenkool <segher@kernel.crashing.org>
Tue, 12 Jul 2016 15:13:47 +0000 (17:13 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Tue, 12 Jul 2016 15:13:47 +0000 (17:13 +0200)
Backport from mainline
2016-07-06  Segher Boessenkool  <segher@kernel.crashing.org>

PR target/70098
PR target/71763
* config/rs6000/rs6000.md (*ctr<mode>_internal1, *ctr<mode>_internal2,
*ctr<mode>_internal5, *ctr<mode>_internal6): Add *wi to the output
constraint.

gcc/testsuite/
PR target/70098
PR target/71763
* gcc.target/powerpc/pr71763.c: New file.

From-SVN: r238251

gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr71763.c [new file with mode: 0644]

index 755d94362157ebf5566c2f52e5164799659c2070..3e640861e53704e6895f0636356dca29e150aa57 100644 (file)
@@ -1,3 +1,14 @@
+2016-07-12  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       Backport from mainline
+       2016-07-06  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/70098
+       PR target/71763
+       * config/rs6000/rs6000.md (*ctr<mode>_internal1, *ctr<mode>_internal2,
+       *ctr<mode>_internal5, *ctr<mode>_internal6): Add *wi to the output
+       constraint.
+
 2016-07-08  Martin Liska  <mliska@suse.cz>
 
        Backported from mainline
index 114bc96f7b0abdbd8612d00d8ef4350cc821f652..20580591a68aa623ae91741f31ecb667cf75d292 100644 (file)
                          (const_int 1))
                      (label_ref (match_operand 0 "" ""))
                      (pc)))
-   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
+   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
        (plus:P (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
                          (const_int 1))
                      (pc)
                      (label_ref (match_operand 0 "" ""))))
-   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
+   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
        (plus:P (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
                          (const_int 1))
                      (label_ref (match_operand 0 "" ""))
                      (pc)))
-   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
+   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
        (plus:P (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
                          (const_int 1))
                      (pc)
                      (label_ref (match_operand 0 "" ""))))
-   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*c*l")
+   (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l")
        (plus:P (match_dup 1)
                 (const_int -1)))
    (clobber (match_scratch:CC 3 "=X,&x,&x,&x"))
index 482fdbbe0a71a40239aaa6f51d02ebf4d8cd0984..2956de57444abc1fd429bcda0e60314005c3d900 100644 (file)
@@ -1,3 +1,12 @@
+2016-07-12  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       Backport from mainline
+       2016-07-06  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/70098
+       PR target/71763
+       * gcc.target/powerpc/pr71763.c: New file.
+
 2016-07-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        Backport from trunk:
diff --git a/gcc/testsuite/gcc.target/powerpc/pr71763.c b/gcc/testsuite/gcc.target/powerpc/pr71763.c
new file mode 100644 (file)
index 0000000..7910a90
--- /dev/null
@@ -0,0 +1,27 @@
+// PR target/71763
+// { dg-do compile }
+// { dg-options "-O1 -mvsx" }
+// { dg-xfail-if "PR70098" { lp64 && powerpc64_no_dm } }
+// { dg-prune-output ".*internal compiler error.*" }
+
+int a, b;
+float c;
+
+void fn2(void);
+
+void fn1(void)
+{
+        long d;
+
+        for (d = 3; d; d--) {
+                for (a = 0; a <= 1; a++) {
+                        b &= 1;
+                        if (b) {
+                                for (;;) {
+                                        fn2();
+                                        c = d;
+                                }
+                        }
+                }
+        }
+}