From patchwork Thu Sep 8 19:32:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 1102 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5044:0:0:0:0:0 with SMTP id h4csp405710wrt; Thu, 8 Sep 2022 12:32:49 -0700 (PDT) X-Google-Smtp-Source: AA6agR6DEsJkJ17T9fO6tEjAxFD5FvCSw1teTQSoDEs3yOiPlUFF2augC3N8vpvWz4jf64x0j/KD X-Received: by 2002:a05:6402:191:b0:445:cf66:25c5 with SMTP id r17-20020a056402019100b00445cf6625c5mr8712311edv.58.1662665569319; Thu, 08 Sep 2022 12:32:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662665569; cv=none; d=google.com; s=arc-20160816; b=FAEvZD4TmtXz3WcoSTiflqhx66s7phfyuTQ81b6eiZksqUhzfjlw9lxsKOVoz36s9F IIsXn/LrgUkt95HrwgsAwP8iLDe3dUPp11ecP/fbg79g8pqHivLg0WB/5xUlsQJXRj7B 0P8bET3B24YcBkiZQxU91Zt/CRmF/pQZ5NUWQJBcORXHj/e/H4SVSRqeNpu3Frp1DMbA HWsNRz3D8Aagszzxaz1MggU9q6zOclTqbc+OoyQuIm1t0sFkh0ll+Is+M6UpahSUu1/S whVyKOLcYt+yftgvlSsfh4iZnG+n1tM8O3qGfYuTOpCczqhnlPJG+LlVQEO6Qy63s7ZT JjdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:user-agent :message-id:subject:to:from:date:ironport-sdr:dmarc-filter :delivered-to; bh=lsWO1ehxm9frUDxntBVgZSK37ZSOPlyT3QLNGaqFDOk=; b=IvJdK7wxSTTL+U94prkJrpkuyvbhc02uPg4ITwBuz4YyTJiSYFQTfb0evtPUOq4g/r YjtBMAaxHe/K08i0yp1wIC459+sYDHFKvPzr5fe9t2TVWRu7kebg3yzL7wLVHk6xBNqv j/htdTz5OkUVdQ7ZUQ76EBnA0/B/eZzucjcskB5NcBp1Ua49+QoB57TgTy3NE+CTrQjn eNjfgGxRB4WM6mFWwdRlTWhHwUIiMIPFre+89es3b9qJf1D6+waVlRVbgPk2Odj/l6F6 QPpi/YD2X8nvfxo/IjXzzE32fad4S8rV/0lWfcxHGlVC5NQwasW+uZce1kc8z50WDX2A mFnA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id z6-20020a05640235c600b00448d4580bfbsi17733573edc.425.2022.09.08.12.32.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Sep 2022 12:32:49 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 35DA438582B7 for ; Thu, 8 Sep 2022 19:32:41 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 1747E3858C2D for ; Thu, 8 Sep 2022 19:32:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1747E3858C2D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,300,1654588800"; d="scan'208";a="85447315" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 08 Sep 2022 11:32:15 -0800 IronPort-SDR: 7Agt+LC465eF37mCXcxhiv9JaGWqAxe6U8sjfBaO4l6G0+ELfjalKC107RXSbqAdovPAqVaD/a dGOOcEmo5ptfKsAyNsIvxnC+qHiWd8Rjkzermji82CFDoqDEiESpghrInOVfpje0b8K35v6wgj NA8HinZvyPNyUX4xeacDdeaQDMY8NcCr5eDjwXhx/1G7KNGGRiPwLIKlvJZu7bS2AvxkxbOu1E E5lWLLvcbiOPP60DjFa3IN1Hk9/5xe4+vrT063Dhl58I9LxHtyQYX3pFIfjB8w+yMwPD6b7EFX UEE= Date: Thu, 8 Sep 2022 19:32:11 +0000 From: Joseph Myers X-X-Sender: jsm28@digraph.polyomino.org.uk To: Subject: stddef.h: Add C2x unreachable macro Message-ID: User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-3117.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1743431211982455092?= X-GMAIL-MSGID: =?utf-8?q?1743431211982455092?= 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? 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); +}