diff mbox

pr66345.c size_t assumption bug

Message ID 201506090058.t590wUgk007896@greed.delorie.com
State New
Headers show

Commit Message

DJ Delorie June 9, 2015, 12:58 a.m. UTC
The testcase for pr 66345 assumes size_t is "unsigned long" instead of
using the real type, which causes failures on some 16-bit targets.
Ok?

Also, I note that some tests check for __SIZE_TYPE__ as I do below,
and others use it unconditionally as a replacement for size_t.  Is
there a convention?

	* gcc.dg/torture/pr66345.c: Fix assumption about size_t type.
 
 2015-06-08  Tom de Vries  <tom@codesourcery.com>

Comments

Marc Glisse June 9, 2015, 5:36 a.m. UTC | #1
On Mon, 8 Jun 2015, DJ Delorie wrote:

> Also, I note that some tests check for __SIZE_TYPE__ as I do below,
> and others use it unconditionally as a replacement for size_t.  Is
> there a convention?

As far as I can tell, __SIZE_TYPE__ is always defined. The tests that 
check for it probably date from a time when it wasn't?
Jeff Law June 23, 2015, 7:29 p.m. UTC | #2
On 06/08/2015 06:58 PM, DJ Delorie wrote:
> The testcase for pr 66345 assumes size_t is "unsigned long" instead of
> using the real type, which causes failures on some 16-bit targets.
> Ok?

>
> Also, I note that some tests check for __SIZE_TYPE__ as I do below,
> and others use it unconditionally as a replacement for size_t.  Is
> there a convention?
I doubt there's a well defined convention.  Particularly for the torture 
tests, many of which are very very old.

>
> 	* gcc.dg/torture/pr66345.c: Fix assumption about size_t type.
OK.

jeff
DJ Delorie June 24, 2015, 9:18 p.m. UTC | #3
> OK.

Thanks, committed.
diff mbox

Patch

Index: gcc.dg/torture/pr66345.c
===================================================================
--- gcc.dg/torture/pr66345.c	(revision 224260)
+++ gcc.dg/torture/pr66345.c	(working copy)
@@ -1,9 +1,15 @@ 
 /* { dg-do compile } */
 
-extern int snprintf (char *, unsigned long, const char *, ...);
+#ifdef __SIZE_TYPE__
+typedef __SIZE_TYPE__ size_t;
+#else
+typedef unsigned int size_t;
+#endif
+
+extern int snprintf (char *, size_t, const char *, ...);
 const char a[] = "";
 int b;
 void
 get_bar ()
 {
   snprintf (0, 0, "%s", &a[b]);