diff mbox

[ptx] Fix sso tests

Message ID 5653740C.9010507@acm.org
State New
Headers show

Commit Message

Nathan Sidwell Nov. 23, 2015, 8:16 p.m. UTC
The gcc.dg/sso tests gratuitously fail on PTX because they use IO facilities 
that don't exist there.  This  patch changes the dumping to use the putchar 
function call (and not a macro), and not use fputs.

With this they all pass.

I'm not quite sure where the maintainer  boundaries lie for this kind of fix. 
Any objections?

nathan

Comments

Jeff Law Nov. 23, 2015, 8:41 p.m. UTC | #1
On 11/23/2015 01:16 PM, Nathan Sidwell wrote:
> The gcc.dg/sso tests gratuitously fail on PTX because they use IO
> facilities that don't exist there.  This  patch changes the dumping to
> use the putchar function call (and not a macro), and not use fputs.
>
> With this they all pass.
>
> I'm not quite sure where the maintainer  boundaries lie for this kind of
> fix. Any objections?
In the 'put' function, why not just make all targets go through putchar? 
  It's not like this is performance critical code and I don't think it 
compromises any of the tests, does it?

jeff
Nathan Sidwell Nov. 23, 2015, 8:54 p.m. UTC | #2
On 11/23/15 15:41, Jeff Law wrote:


> In the 'put' function, why not just make all targets go through putchar?  It's
> not like this is performance critical code and I don't think it compromises any
> of the tests, does it?

I contemplated that, but wondered if someone would complain.  I'm happy either way.

nathan
Jeff Law Nov. 24, 2015, 5:01 a.m. UTC | #3
On 11/23/2015 01:54 PM, Nathan Sidwell wrote:
> On 11/23/15 15:41, Jeff Law wrote:
>
>
>> In the 'put' function, why not just make all targets go through
>> putchar?  It's not like this is performance critical code and I
>> don't think it compromises any of the tests, does it?
>
> I contemplated that, but wondered if someone would complain.  I'm
> happy either way.
Let's go with a single codepath here.  The one that ought to work for 
all targets is putchar.

Thanks,
jeff
Thomas Schwinge Nov. 24, 2015, 8:08 a.m. UTC | #4
Hi!

On Mon, 23 Nov 2015 15:16:12 -0500, Nathan Sidwell <nathan@acm.org> wrote:
> The gcc.dg/sso tests gratuitously fail on PTX because they use IO facilities 
> that don't exist there.  This  patch changes the dumping to use the putchar 
> function call (and not a macro), and not use fputs.

>  void put (const char s[])
>  {
> +#ifdef  __nvptx__
> +  int i;
> +  for (i = 0; s[i]; i++)
> +    putchar (s[i]);
> +#else
>    fputs (s, stdout);
> +#endif
>  }

Doesn't __builtin_printf work?


More generally, I've been wondering before, whether we should improve the
I/O support in nvptx' newlib.  I suppose (but have not verified) that the
_stdout member of _REENT (struct _reent) will by default be initilized to
&__sf_fake_stdout (and similar for stderr), which we could detect in
nvptx I/O functions, and in such cases use the PTX printf function.  Or
something along these lines.


Grüße
 Thomas
diff mbox

Patch

2015-11-23  Nathan Sidwell  <nathan@acm.org>

	* gcc.dg/sso/dump.h: Force IO to be putchar function call on nvptx.

Index: gcc/testsuite/gcc.dg/sso/dump.h
===================================================================
--- gcc/testsuite/gcc.dg/sso/dump.h	(revision 230718)
+++ gcc/testsuite/gcc.dg/sso/dump.h	(working copy)
@@ -1,3 +1,9 @@ 
+#ifdef __nvptx__
+/* Force function call.  NVPTX's IO is extremely limited.  */
+#undef putchar
+#define putchar (putchar)
+#endif
+
 void dump (void *p, unsigned int len)
 {
   const char digits[17] = "0123456789abcdef";
@@ -14,7 +20,13 @@  void dump (void *p, unsigned int len)
 
 void put (const char s[])
 {
+#ifdef  __nvptx__
+  int i;
+  for (i = 0; s[i]; i++)
+    putchar (s[i]);
+#else
   fputs (s, stdout);
+#endif
 }
 
 void new_line (void)