[Patch, testsuite] Fix more failing tests for avr

Senthil Kumar Selvaraj senthilkumar.selvaraj@microchip.com
Tue Mar 28 12:01:00 GMT 2017


Hi,

  The below trivial patch fixes some more testsuite failures for the avr
  target. They fail for avr because they assume ints are 32 bits or
  wider. The patch uses explicit __{U}INT32_TYPE__ for targets with
  smaller int size.

  Committed as obvious.

Regards
Senthil

2017-03-28  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	* gcc.c-torture/execute/pr79121.c:Use __{U}INT32_TYPE__ for targets
	with sizeof(int) < 4.
	* gcc.c-torture/execute/pr79737-1.c (struct S): Likewise.
	* gcc.c-torture/execute/pr79737-2.c: Likewise.
	* gcc.dg/torture/pr79777.c: Likewise.
	* gcc.dg/torture/pr79910.c: Likewise.

Index: gcc.c-torture/execute/pr79121.c
===================================================================
--- gcc.c-torture/execute/pr79121.c	(revision 246528)
+++ gcc.c-torture/execute/pr79121.c	(working copy)
@@ -1,21 +1,29 @@
+#if __SIZEOF_INT__ < 4
+  __extension__ typedef __UINT32_TYPE__ uint32_t;
+  __extension__ typedef __INT32_TYPE__ int32_t;
+#else
+  typedef unsigned uint32_t;
+  typedef int int32_t;
+#endif
+
 extern void abort (void);
 
-__attribute__ ((noinline, noclone)) unsigned long long f1 (int x)
+__attribute__ ((noinline, noclone)) unsigned long long f1 (int32_t x)
 {
   return ((unsigned long long) x) << 4;
 }
 
-__attribute__ ((noinline, noclone)) long long f2 (unsigned x)
+__attribute__ ((noinline, noclone)) long long f2 (uint32_t x)
 {
   return ((long long) x) << 4;
 }
 
-__attribute__ ((noinline, noclone)) unsigned long long f3 (unsigned x)
+__attribute__ ((noinline, noclone)) unsigned long long f3 (uint32_t x)
 {
   return ((unsigned long long) x) << 4;
 }
 
-__attribute__ ((noinline, noclone)) long long f4 (int x)
+__attribute__ ((noinline, noclone)) long long f4 (int32_t x)
 {
   return ((long long) x) << 4;
 }
Index: gcc.c-torture/execute/pr79737-1.c
===================================================================
--- gcc.c-torture/execute/pr79737-1.c	(revision 246528)
+++ gcc.c-torture/execute/pr79737-1.c	(working copy)
@@ -1,13 +1,19 @@
 /* PR tree-optimization/79737 */
 
+#if __SIZEOF_INT__ < 4
+  __extension__ typedef __INT32_TYPE__ int32_t;
+#else
+  typedef int int32_t;
+#endif
+
 #pragma pack(1)
 struct S
 {
-  int b:18;
-  int c:1;
-  int d:24;
-  int e:15;
-  int f:14;
+  int32_t b:18;
+  int32_t c:1;
+  int32_t d:24;
+  int32_t e:15;
+  int32_t f:14;
 } i;
 int g, j, k;
 static struct S h;
Index: gcc.c-torture/execute/pr79737-2.c
===================================================================
--- gcc.c-torture/execute/pr79737-2.c	(revision 246528)
+++ gcc.c-torture/execute/pr79737-2.c	(working copy)
@@ -1,13 +1,19 @@
 /* PR tree-optimization/79737 */
 
+#if __SIZEOF_INT__ < 4
+  __extension__ typedef __INT32_TYPE__ int32_t;
+#else
+  typedef int int32_t;
+#endif
+
 #pragma pack(1)
 struct S
 {
-  int b:18;
-  int c:1;
-  int d:24;
-  int e:15;
-  int f:14;
+  int32_t b:18;
+  int32_t c:1;
+  int32_t d:24;
+  int32_t e:15;
+  int32_t f:14;
 } i, j;
 
 void
Index: gcc.dg/torture/pr79777.c
===================================================================
--- gcc.dg/torture/pr79777.c	(revision 246528)
+++ gcc.dg/torture/pr79777.c	(working copy)
@@ -1,9 +1,14 @@
 /* { dg-do compile } */
 
 typedef unsigned short __u16;
-typedef unsigned int __u32;
+#if __SIZEOF_INT__ < 4
+  __extension__ typedef __UINT32_TYPE__ __u32;
+  __extension__ typedef __UINT32_TYPE__ u32;
+#else
+  typedef unsigned int __u32;
+  typedef unsigned int u32;
+#endif
 typedef unsigned char u8;
-typedef unsigned int u32;
 typedef __u16 __le16;
 typedef __u32 __le32;
 typedef u32 secno;
Index: gcc.dg/torture/pr79910.c
===================================================================
--- gcc.dg/torture/pr79910.c	(revision 246528)
+++ gcc.dg/torture/pr79910.c	(working copy)
@@ -2,7 +2,11 @@
 /* { dg-additional-options "-fweb" } */
 
 typedef unsigned char u8;
-typedef unsigned int u32;
+#if __SIZEOF_INT__ < 4
+  __extension__ typedef __UINT32_TYPE__ u32;
+#else
+  typedef unsigned int u32;
+#endif
 typedef unsigned long long u64;
 int a;
 



More information about the Gcc-patches mailing list