[PATCH] bswap: Handle bswapping of pointers [PR96573]

Richard Biener rguenther@suse.de
Tue Apr 6 10:35:09 GMT 2021


On Tue, 6 Apr 2021, Jakub Jelinek wrote:

> On Thu, Apr 01, 2021 at 02:16:55PM +0100, Alex Coplan via Gcc-patches wrote:
> > FYI, I'm seeing the new test failing on aarch64:
> > 
> > PASS: gcc.dg/pr96573.c (test for excess errors)
> > FAIL: gcc.dg/pr96573.c scan-tree-dump optimized "__builtin_bswap"
> 
> The vectorizer in the aarch64 case manages to emit a VEC_PERM_EXPR instead
> (which is just as efficient).
> 
> So, do we want to go for the following (and/or perhaps also restrict the test to
> a couple of targets where it works?  In my last distro build it failed only
> on aarch64-linux, while armv7hl-linux-gnueabi and
> {i686,x86_64,powerpc64le,s390x}-linux were fine)?

Works for me.

> 2021-04-06  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR tree-optimization/96573
> 	* gcc.dg/pr96573.c: Instead of __builtin_bswap accept also
> 	VEC_PERM_EXPR with bswapping permutation.
> 
> --- gcc/testsuite/gcc.dg/pr96573.c.jj	2021-04-01 10:50:56.238629197 +0200
> +++ gcc/testsuite/gcc.dg/pr96573.c	2021-04-06 12:20:16.314520746 +0200
> @@ -2,7 +2,7 @@
>  /* { dg-do compile { target { lp64 || ilp32 } } } */
>  /* { dg-require-effective-target bswap } */
>  /* { dg-options "-O3 -fdump-tree-optimized" } */
> -/* { dg-final { scan-tree-dump "__builtin_bswap" "optimized" } } */
> +/* { dg-final { scan-tree-dump "__builtin_bswap\|VEC_PERM_EXPR\[^\n\r]*7, 6, 5, 4, 3, 2, 1, 0" "optimized" } } */
>  
>  typedef __SIZE_TYPE__ size_t;
>  
> 
> 
> 	Jakub
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)


More information about the Gcc-patches mailing list