Disable accumulate-outgoing-args for Generic and Buldozers

Jakub Jelinek jakub@redhat.com
Fri Feb 7 23:57:00 GMT 2014


On Thu, Feb 06, 2014 at 06:25:16PM +0100, Jan Hubicka wrote:
> > The expr.[ch]/function.h/tree-tailcall.c bits are ok.
> > I see your changes clash with my PR60077 fix, does your patch make them
> > obsolete and you take care of using proper alignment info?
> > If so, at least the two tests from that PR's patch should be added,
> > but I can do that as a follow-up.
> 
> Yes, this patch was made to fix gcc.target/i386/pr35767-5.c
> by obtaining correct alignment (and also alias) info on the store.
> Sorry for making you to duplicate the effort - seems I should have pinged it
> earlier.

I've committed the two testcases I had in my patch now.

2014-02-08  Jakub Jelinek  <jakub@redhat.com>

	PR target/60077
	* gcc.target/i386/pr60077-1.c: New test.
	* gcc.target/i386/pr60077-2.c: New test.

--- gcc/testsuite/gcc.target/i386/pr60077-1.c.jj	2014-02-06 11:46:56.772700220 +0100
+++ gcc/testsuite/gcc.target/i386/pr60077-1.c	2014-02-06 11:44:52.000000000 +0100
@@ -0,0 +1,18 @@
+/* Test that we generate aligned load when memory is aligned.  */
+/* { dg-do compile } */
+/* { dg-options "-O -mavx -mtune=generic" } */
+/* { dg-final { scan-assembler-not "movups" } } */
+/* { dg-final { scan-assembler "movaps" } } */
+
+typedef float v8sf __attribute__ ((__vector_size__ (32)));
+
+extern void foo (v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf);
+
+int
+test (void)
+{
+  v8sf x = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 };
+
+  foo (x, x, x, x, x, x, x, x, x);
+  return 0;
+}
--- gcc/testsuite/gcc.target/i386/pr60077-2.c.jj	2014-02-06 11:46:59.986683676 +0100
+++ gcc/testsuite/gcc.target/i386/pr60077-2.c	2014-02-06 11:45:04.000000000 +0100
@@ -0,0 +1,18 @@
+/* Test that we generate aligned load when memory is aligned.  */
+/* { dg-do compile } */
+/* { dg-options "-O -mavx -mtune=generic" } */
+/* { dg-final { scan-assembler-not "movups" } } */
+/* { dg-final { scan-assembler "movaps" } } */
+
+typedef float v8sf __attribute__ ((__vector_size__ (32)));
+
+extern void foo (int, int, int, int, int, int, int, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf, v8sf);
+
+int
+test (void)
+{
+  v8sf x = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 };
+
+  foo (1, 2, 3, 4, 5, 6, 7, x, x, x, x, x, x, x, x, x);
+  return 0;
+}


	Jakub



More information about the Gcc-patches mailing list