Hi,

  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.

Regards
Senthil

gcc/testsuite/ChangeLog

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.



Index: gcc.dg/torture/pr69352.c
===================================================================
--- gcc.dg/torture/pr69352.c    (revision 238707)
+++ gcc.dg/torture/pr69352.c    (working copy)
@@ -1,5 +1,7 @@
 /* { dg-do compile } */
 
+#include <stdint.h>
+
 int a[10][14], b, c, d, e, f, g, h, i;
 void bar (void);
 int
@@ -13,7 +15,7 @@
   else
     m = 13;
   if (a[x][m])
-    l = (long) foo;
+    l = (intptr_t) foo;
   a[x][i] = l;
   while (c)
     {
Index: gcc.dg/torture/pr69771.c
===================================================================
--- gcc.dg/torture/pr69771.c    (revision 238707)
+++ gcc.dg/torture/pr69771.c    (working copy)
@@ -1,5 +1,6 @@
 /* PR rtl-optimization/69771 */
 /* { dg-do compile } */
+/* { dg-require-effective-target int32plus } */
 
 unsigned char a = 5, c;
 unsigned short b = 0;
Index: gcc.dg/torture/pr71866.c
===================================================================
--- gcc.dg/torture/pr71866.c    (revision 238707)
+++ gcc.dg/torture/pr71866.c    (working copy)
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-additional-options "-ftree-pre -fcode-hoisting" } */
 
+#include <stdint.h>
 typedef unsigned char u8;
 extern unsigned long pci_io_base;
 u8 in_8 (const volatile void *);
@@ -25,7 +26,7 @@
 static inline
 u8 inb (unsigned long port)
 {
-  return readb((volatile void *)pci_io_base + port);
+  return readb((volatile void *)(intptr_t)pci_io_base + port);
 }
 static inline
 void outb (u8 val, unsigned long port)

Reply via email to