Mike Stump writes:

> On Jul 25, 2016, at 5:00 AM, Senthil Kumar Selvaraj 
> <senthil_kumar.selva...@atmel.com> wrote:
>> 
>>  The below patch fixes tests that fail for the avr target, because they
>>  assume ints are atleast 32 bits wide and pointers and longs have the
>>  same size.
>> 
>>  I've required int32plus support for one test, and for the other two,
>>  I've introduced a cast to intptr_t to avoid the pointer <-> int size
>>  difference warning.
>> 
>>  Reg tested on avr and x86_64 with no regressions. Committed as
>>  obvious.
>
> Can you use __INTPTR_TYPE__ instead?  This way, you don't need to add any 
> include, and the test case will work in cross environments without any libc, 
> which is at times handy.  Thanks.
>
> See grep INTPTR gcc/gcc/testsuite/gcc.dg/*.c for how people use it, and for 
> the unsigned version.
>
>> 2016-07-25  Senthil Kumar Selvaraj  <senthil_kumar.selva...@atmel.com>
>> 
>>      * gcc.dg/torture/pr69352.c (foo): Cast to intptr_t instead of long.
>>      * gcc.dg/torture/pr69771.c: Require int32plus.
>>      * gcc.dg/torture/pr71866.c (inb): Add cast to intptr_t.

I'll keep that in mind, thanks.

Is the below patch ok? I used uintptr_t in the second test as the source
type is unsigned long.

Regards
Senthil

Index: pr69352.c
===================================================================
--- pr69352.c   (revision 238743)
+++ pr69352.c   (working copy)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 
-#include <stdint.h>
+__extension__ typedef __INTPTR_TYPE__ intptr_t;
 
 int a[10][14], b, c, d, e, f, g, h, i;
 void bar (void);
Index: pr71866.c
===================================================================
--- pr71866.c   (revision 238743)
+++ pr71866.c   (working copy)
@@ -1,7 +1,8 @@
 /* { dg-do compile } */
 /* { dg-additional-options "-ftree-pre -fcode-hoisting" } */
 
-#include <stdint.h>
+__extension__ typedef __UINTPTR_TYPE__ uintptr_t;
+
 typedef unsigned char u8;
 extern unsigned long pci_io_base;
 u8 in_8 (const volatile void *);
@@ -26,7 +27,7 @@
 static inline
 u8 inb (unsigned long port)
 {
-  return readb((volatile void *)(intptr_t)pci_io_base + port);
+  return readb((volatile void *)(uintptr_t)pci_io_base + port);
 }
 static inline
 void outb (u8 val, unsigned long port)

Reply via email to