[committed] openmp: Implement the error directive

Thomas Schwinge thomas@codesourcery.com
Fri Aug 20 13:16:36 GMT 2021


Hi!

On 2021-08-20T15:11:45+0200, I wrote:
> On 2021-08-20T11:45:29+0200, Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
>> --- libgomp/error.c.jj       2021-08-19 12:53:44.693106618 +0200
>> +++ libgomp/error.c  2021-08-19 17:58:55.633203432 +0200
>
>> +void
>> +GOMP_warning (const char *msg, size_t msglen)
>> +{
>> +  if (msg && msglen == (size_t) -1)
>> +    gomp_error ("error directive encountered: %s", msg);
>> +  else if (msg)
>> +    {
>> +      fputs ("\nlibgomp: error directive encountered: ", stderr);
>> +      fwrite (msg, 1, msglen, stderr);
>> +      fputc ('\n', stderr);
>> +    }
>> +  else
>> +    gomp_error ("error directive encountered");
>> +}
>> +
>> +void
>> +GOMP_error (const char *msg, size_t msglen)
>> +{
>> +  if (msg && msglen == (size_t) -1)
>> +    gomp_fatal ("fatal error: error directive encountered: %s", msg);
>> +  else if (msg)
>> +    {
>> +      fputs ("\nlibgomp: fatal error: error directive encountered: ", stderr);
>> +      fwrite (msg, 1, msglen, stderr);
>> +      fputc ('\n', stderr);
>> +      exit (EXIT_FAILURE);
>> +    }
>> +  else
>> +    gomp_fatal ("fatal error: error directive encountered");
>> +}
>
> At least for nvptx offloading, and at least given the newlib sources I'm
> using, the 'fputs'/'fwrite' calls here drag in 'isatty', which isn't
> provided by my nvptx newlib at present, so we get, for example:
>
>     [...]
>     FAIL: libgomp.c/../libgomp.c-c++-common/declare_target-1.c (test for excess errors)
>     Excess errors:
>     unresolved symbol isatty
>     mkoffload: fatal error: [...]/build-gcc/./gcc/x86_64-pc-linux-gnu-accel-nvptx-none-gcc returned 1 exit status
>     [...]
>
> ..., and many more.
>
> Now, there are many ways of addressing this...  The most simple one:
> conditionalize these 'GOMP_warning'/'GOMP_error' definitions on
> '#ifndef LIBGOMP_OFFLOADED_ONLY' is not possible here, because it's
> permissible to use the 'error' directive also inside 'target' regions, as
> far as I can tell?

Ah, I just re-discovered 'libgomp/config/nvptx/error.c' -- I'll cook
something up.


Grüße
 Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955


More information about the Gcc-patches mailing list