[pushed] testsuite: Unbreak pr110557.cc where long is 32-bit (was Re: Pushed: [PATCH v2] vect: Fix vectorized BIT_FIELD_REF for signed bit-fields [PR110557])
Checks
Commit Message
On Tue, 2023-07-11 at 13:04 +0530, Prathamesh Kulkarni wrote:
/* snip */
> Hi Xi,
> Your commit:
> https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=63ae6bc60c0f67fb2791991bf4b6e7e0a907d420,
>
> seems to cause following regressions on arm-linux-gnueabihf:
> FAIL: g++.dg/vect/pr110557.cc -std=c++98 (test for excess errors)
> FAIL: g++.dg/vect/pr110557.cc -std=c++14 (test for excess errors)
> FAIL: g++.dg/vect/pr110557.cc -std=c++17 (test for excess errors)
> FAIL: g++.dg/vect/pr110557.cc -std=c++20 (test for excess errors)
>
> Excess error:
> gcc/testsuite/g++.dg/vect/pr110557.cc:12:8: warning: width of
> 'Item::y' exceeds its type
Ah sorry, I didn't consider ports with 32-bit long.
The attached patch should fix the issue. It has been tested and pushed
r14-2427 and r13-7555.
From 312839653b8295599c63cae90278a87af528edad Mon Sep 17 00:00:00 2001
From: Xi Ruoyao <xry111@xry111.site>
Date: Tue, 11 Jul 2023 15:55:54 +0800
Subject: [PATCH] testsuite: Unbreak pr110557.cc where long is 32-bit
On ports with 32-bit long, the test produced excess errors:
gcc/testsuite/g++.dg/vect/pr110557.cc:12:8: warning: width of
'Item::y' exceeds its type
Reported-by: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
gcc/testsuite/ChangeLog:
* g++.dg/vect/pr110557.cc: Use long long instead of long for
64-bit type.
(test): Remove an unnecessary cast.
---
gcc/testsuite/g++.dg/vect/pr110557.cc | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
@@ -1,7 +1,9 @@
// { dg-additional-options "-mavx" { target { avx_runtime } } }
-static inline long
-min (long a, long b)
+typedef long long i64;
+
+static inline i64
+min (i64 a, i64 b)
{
return a < b ? a : b;
}
@@ -9,16 +11,16 @@ min (long a, long b)
struct Item
{
int x : 8;
- long y : 55;
+ i64 y : 55;
bool z : 1;
};
-__attribute__ ((noipa)) long
+__attribute__ ((noipa)) i64
test (Item *a, int cnt)
{
- long size = 0;
+ i64 size = 0;
for (int i = 0; i < cnt; i++)
- size = min ((long)a[i].y, size);
+ size = min (a[i].y, size);
return size;
}
--
2.41.0