[committed] openmp: Implement the error directive

Thomas Schwinge thomas@codesourcery.com
Fri Aug 20 13:11:45 GMT 2021


Hi!

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?


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