testsuite/95363 - fix gcc.dg/vect/bb-slp-pr95271.c for ilp32

Message ID nycvar.YFH.7.76.2005280946000.4397@zhemvz.fhfr.qr
State New
Headers show
Series
  • testsuite/95363 - fix gcc.dg/vect/bb-slp-pr95271.c for ilp32
Related show

Commit Message

Richard Biener May 28, 2020, 7:46 a.m.
This fixes the testcase to avoid out of bound shifts on ilp32 targets.

2020-05-28  Richard Biener  <rguenther@suse.de>

	PR testsuite/95363
	* gcc.dg/vect/bb-slp-pr95271.c: Fix on ilp32 targets.
---
 gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

-- 
2.26.1

Patch

diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
index 2f235980405..f6e266cce5c 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
@@ -1,19 +1,22 @@ 
 /* { dg-do compile } */
+/* { dg-require-effective-target stdint_types } */
 /* { dg-additional-options "-march=cooperlake" { target x86_64-*-* i?86-*-* } } */
 
+#include <stdint.h>
+
 int a;
 struct b c;
-long d;
+int64_t d;
 struct b {
-  unsigned long address;
-  unsigned long e;
+  uint64_t address;
+  uint64_t e;
 };
 void f()
 {
-  d = (long)(&a)[0] << 56 | (long)((unsigned char *)&a)[1] << 48 |
-      (long)((unsigned char *)&a)[2] << 40 |
-      (long)((unsigned char *)&a)[3] << 32 |
-      (long)((unsigned char *)&a)[4] << 24 | ((unsigned char *)&a)[5] << 16 |
+  d = (int64_t)(&a)[0] << 56 | (int64_t)((unsigned char *)&a)[1] << 48 |
+      (int64_t)((unsigned char *)&a)[2] << 40 |
+      (int64_t)((unsigned char *)&a)[3] << 32 |
+      (int64_t)((unsigned char *)&a)[4] << 24 | ((unsigned char *)&a)[5] << 16 |
       ((unsigned char *)&a)[6] << 8 | ((unsigned char *)&a)[7];
   c.address = c.e = d;
 }