diff mbox series

[committed] Add test for PR85770.

Message ID 6f5fb678-76c0-25c8-65b2-b6d3180fa054@redhat.com
State New
Headers show
Series [committed] Add test for PR85770. | expand

Commit Message

Jeff Law Dec. 6, 2018, 12:41 a.m. UTC
PR85770 is fixed by Segher's combiner patch to avoid combining hard
regs.  Presumably it helps because it gives the allocators more freedom.

I'm adding the testcase from the PR to the regression suite.

Jeff
commit 40fc691eac0ea9414f7908826c91afc70ff78617
Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Dec 6 00:40:08 2018 +0000

            PR rtl-optimization/85770
            * gcc.target/i386/pr85770.c: New test.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266839 138bc75d-0d04-0410-961f-82ee72b054a4

Comments

Jakub Jelinek Dec. 6, 2018, 11:40 p.m. UTC | #1
On Wed, Dec 05, 2018 at 05:41:49PM -0700, Jeff Law wrote:
> 
> PR85770 is fixed by Segher's combiner patch to avoid combining hard
> regs.  Presumably it helps because it gives the allocators more freedom.
> 
> I'm adding the testcase from the PR to the regression suite.
> 
> Jeff

> commit 40fc691eac0ea9414f7908826c91afc70ff78617
> Author: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date:   Thu Dec 6 00:40:08 2018 +0000
> 
>             PR rtl-optimization/85770
>             * gcc.target/i386/pr85770.c: New test.

The test FAILs on i686-linux, because __int128 is not supported on 32-bit
targets.

Fixed thusly, tested on x86_64-linux and i686-linux, committed as obvious to
trunk.

2018-12-07  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/85770
	* gcc.target/i386/pr85770.c: Require int128 effective target.

--- gcc/testsuite/gcc.target/i386/pr85770.c	(revision 266876)
+++ gcc/testsuite/gcc.target/i386/pr85770.c	(working copy)
@@ -1,4 +1,5 @@
-/* { dg-do compile } */
+/* PR rtl-optimization/85770 */
+/* { dg-do compile { target int128 } } */
 /* { dg-options "-O2 -march=nano-1000 -fnon-call-exceptions -fno-tree-coalesce-vars" } */
 
 unsigned a, b, c, d, e, f, g, h, i;
@@ -14,4 +15,3 @@ __int128 foo(char k, unsigned short l, u
   return k + l + m + n + o + a + b + c + d + j + l + e + f + q + 4294967295 +
          p + g + h + i;
 }
-


	Jakub
diff mbox series

Patch

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8bed4b455e0..cc5d556eeca 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@ 
+2018-12-05  Jeff Law  <law@redhat.com>
+
+	PR rtl-optimization/85770
+	* gcc.target/i386/pr85770.c: New test.
+
 2018-12-05  Martin Sebor  <msebor@redhat.com>
 
 	PR c/87028
diff --git a/gcc/testsuite/gcc.target/i386/pr85770.c b/gcc/testsuite/gcc.target/i386/pr85770.c
new file mode 100644
index 00000000000..dbb685fd83f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr85770.c
@@ -0,0 +1,17 @@ 
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=nano-1000 -fnon-call-exceptions -fno-tree-coalesce-vars" } */
+
+unsigned a, b, c, d, e, f, g, h, i;
+unsigned __int128 j;
+
+__int128 foo(char k, unsigned short l, unsigned m, unsigned n, __int128 o,
+             unsigned char p) {
+  long q;
+  p |= -k;
+  __builtin_add_overflow(p, m, &q);
+  m *= ~__builtin_clrsbll(0);
+  j = j >> (o & 127) | j << (o & 7);
+  return k + l + m + n + o + a + b + c + d + j + l + e + f + q + 4294967295 +
+         p + g + h + i;
+}
+