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.selva...@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;