From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by sourceware.org (Postfix) with ESMTPS id 399163858C2D for ; Fri, 9 Sep 2022 07:20:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 399163858C2D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x635.google.com with SMTP id r17so1923535ejy.9 for ; Fri, 09 Sep 2022 00:20:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=lZw1g8WJuUkTS19PenU7DXoh1RnwIYvoSVQaLFUcikg=; b=SoSQWJEHWqkRDjnqFQoMMT9H5EmEOdZp2rFn91Y7+3/vNDNkQz2CbmVnfw0qANoSqm mixpvTiyfCAKW2JLLsNk/y5ioC8YLOWa6Pnpqcv/UAjjSX9CvD7PLP9dqfffcckjpE83 JEMUr8zchOyXPvWxoJOSkUwxmKbRDgKlCRTVCgu8vDSw9eszPqmE0RXF8UByI+dVnXkX Qdasy7gOd0QkSLPg7mz6HHFgQyAJqv6cCIgHRb4sgRoDFheDQOfmUrH8brdOGfiQWwjc /j+3gsMPyaldFN86Y6jwTh1B5oURRcp4Nvh/mP/M8sYtPCxpgQcJBRoSoWD/xRnw8HZc wwmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=lZw1g8WJuUkTS19PenU7DXoh1RnwIYvoSVQaLFUcikg=; b=qDBR7m0aIhCtcxPumtPZR9nkxsJ9srBtDmPHnBZojCs0bSL4Xog7JOeNsqFlEkpnuw VdeqVJ3ZCjZmIa3cJi6CcZT/ALHNE2GXGfqzqeOHYtdzc5bK122I7e62YUoadHC3UhRO vR+Wspf/ya2ULG1tTC9N/gtCOD+L+/ia9zKbn4fQyLZKkNLQL7kJReck5wldQtUka0VV tXwmgqEveRTEY7DRmRVRQcNfoMJGl9bOtXDsgvcKyfe9014+6Cgx25GIrKYPqHaaVUJn dMDJMSi//2FQYr+b8HIr76IFudZCmGmglftwUDDOK9Um+L1/a2QVA3pkHJMEFppBSeEw jE4w== X-Gm-Message-State: ACgBeo17sXgIlXFALdAaI5MMoeqQlrHbeYhlOvGuhg7Q2fb3lCQkqjy5 rjjVipjczHx1EFOtWNge3n10vSiMMkTm0ntwP+4= X-Google-Smtp-Source: AA6agR74rEj8Kdipnjkzd8vzLDhMEMnjyKxHxiNEXgheeX5ENb9++Nry8sit+McGP/L7wDF4gUVoy89uzjmaHpWSKtQ= X-Received: by 2002:a17:907:271a:b0:770:8252:6904 with SMTP id w26-20020a170907271a00b0077082526904mr8235098ejk.511.1662708034848; Fri, 09 Sep 2022 00:20:34 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Biener Date: Fri, 9 Sep 2022 09:20:22 +0200 Message-ID: Subject: Re: stddef.h: Add C2x unreachable macro To: Joseph Myers Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Sep 8, 2022 at 9:32 PM Joseph Myers wrote: > > C2x adds a macro unreachable to stddef.h, with the same semantics as > __builtin_unreachable. Define this macro accordingly. > > Bootstrapped with no regressions for x86_64-pc-linux-gnu. OK to commit? OK. > gcc/ > * ginclude/stddef.h [__STDC_VERSION__ > 201710L] (unreachable): > New macro. > > gcc/testsuite/ > * gcc.dg/c11-unreachable-1.c, gcc.dg/c2x-unreachable-1.c: New > tests. > > diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h > index 315ff786694..3d29213e8f1 100644 > --- a/gcc/ginclude/stddef.h > +++ b/gcc/ginclude/stddef.h > @@ -451,6 +451,10 @@ typedef struct { > #endif > #endif /* C23. */ > > +#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L > +#define unreachable() (__builtin_unreachable ()) > +#endif > + > #endif /* _STDDEF_H was defined this time */ > > #endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__ > diff --git a/gcc/testsuite/gcc.dg/c11-unreachable-1.c b/gcc/testsuite/gcc.dg/c11-unreachable-1.c > new file mode 100644 > index 00000000000..28e48392ed1 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/c11-unreachable-1.c > @@ -0,0 +1,9 @@ > +/* Test unreachable not defined in for C11. */ > +/* { dg-do preprocess } */ > +/* { dg-options "-std=c11 -pedantic-errors" } */ > + > +#include > + > +#ifdef unreachable > +#error "unreachable defined" > +#endif > diff --git a/gcc/testsuite/gcc.dg/c2x-unreachable-1.c b/gcc/testsuite/gcc.dg/c2x-unreachable-1.c > new file mode 100644 > index 00000000000..468f1f87ebb > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/c2x-unreachable-1.c > @@ -0,0 +1,29 @@ > +/* Test unreachable in for C2x. */ > +/* { dg-do run } */ > +/* { dg-options "-std=c2x -pedantic-errors -O2" } */ > + > +#include > + > +#ifndef unreachable > +#error "unreachable not defined" > +#endif > + > +extern void *p; > +extern __typeof__ (unreachable ()) *p; > + > +volatile int x = 1; > + > +extern void not_defined (void); > + > +extern void exit (int); > + > +int > +main () > +{ > + if (x == 2) > + { > + unreachable (); > + not_defined (); > + } > + exit (0); > +} > > -- > Joseph S. Myers > joseph@codesourcery.com