This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR54219
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Guenther <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 10 Aug 2012 18:09:55 +0200
- Subject: Re: [PATCH] Fix PR54219
- References: <alpine.LNX.2.00.1208101305360.28649@zhemvz.fhfr.qr>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Fri, Aug 10, 2012 at 01:07:33PM +0200, Richard Guenther wrote:
> This fixes an error I introduced when making the VECTOR_CST representation
> changes.
>
> Bootstrap and regtest pending on x86_64-unknown-linux-gnu.
The test fails on i686-linux and guess many other targets, passing vector
types as parameters/return values is generating various ABI warnings.
The testcase fails/works the same if the vectors are passed through memory.
Ok for trunk?
2012-08-10 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/torture/vector-shuffle1.c (f): Pass vectors indirectly
to avoid warnings.
--- gcc/testsuite/gcc.dg/torture/vector-shuffle1.c.jj 2012-08-10 18:00:26.000000000 +0200
+++ gcc/testsuite/gcc.dg/torture/vector-shuffle1.c 2012-08-10 18:03:03.765134911 +0200
@@ -5,15 +5,16 @@ extern void abort (void);
typedef int v2si __attribute__((vector_size(2*sizeof(int))));
-v2si f(v2si x)
+void f(v2si *x)
{
/* This requires canonicalization of the mask to { 1, 0 }. */
- return __builtin_shuffle(x,x, (v2si) { 5, 0 });
+ *x = __builtin_shuffle(*x, *x, (v2si) { 5, 0 });
}
int main()
{
- v2si y = f((v2si) { 1, 2 });
+ v2si y = { 1, 2 };
+ f(&y);
if (y[0] != 2 || y[1] != 1)
abort ();
return 0;
Jakub