From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 2B52B3839430 for ; Fri, 1 Apr 2022 11:33:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2B52B3839430 Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-76-XCgOZOhPOr2ItOoerBT8pA-1; Fri, 01 Apr 2022 07:33:54 -0400 X-MC-Unique: XCgOZOhPOr2ItOoerBT8pA-1 Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-2ea05573995so23807377b3.8 for ; Fri, 01 Apr 2022 04:33:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GUy+NWGJwRxDst8LtOqaDD1RI5tS35H7KlNrBgvuXpM=; b=XDJh6gQZ8MNT8oSYBYBUCrctGC9tvIlWtGGizOCgkOYMoKqyiLhJxqheUvVEQ+Uj7Q wI3CriN7fYmxDkUi84y8t8HyjW48Gn4FtLwoS6A66CnryJBCY3wHDksUKaQXhKM8c8GF cAGwhC7uKpGMxtq5mthuUVBDXn7ycAW5LDjcBolKJf2ismUgQOOQYEkGBcMA9DU4cEl0 9JqdRFrdh2MOEp/EVQC4b+J2UhYBifmAyR0vhlU3vSyc0qoYT3WbzGdc8J9z4zNJBhQj r4bwEze1zQh+xV3FM/2aOQ1ad4IofRDEy/N/szGJ9NbkmJqK4QmsGQAYb+ncBPJe0CJG aALw== X-Gm-Message-State: AOAM530yR6HRfKmI7ISIlL14ODvlo17+0PE/EzjNz+cRDvlQXrNXcRpO V2aXwtRyvnZUp62XuNtcSa/1++e768eqEVdVaCaYcKSYua8BLv2EO2yRg71lpnfubL5DtdsvYq3 weQ/ofmpFSdbINVnXgeY4Xl+xWeiOY3E= X-Received: by 2002:a25:206:0:b0:633:b96e:560c with SMTP id 6-20020a250206000000b00633b96e560cmr7729270ybc.415.1648812834149; Fri, 01 Apr 2022 04:33:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJywDaxY3OYe2G0vQLKG5cMiDePETJUtTIVDLsbWtqYuzWmj4lDmqz8gDfZcJkiAS1qW0MjZ5CjkLRyN4b4MOhM= X-Received: by 2002:a25:206:0:b0:633:b96e:560c with SMTP id 6-20020a250206000000b00633b96e560cmr7729256ybc.415.1648812833914; Fri, 01 Apr 2022 04:33:53 -0700 (PDT) MIME-Version: 1.0 References: <20220331153029.1898244-1-jwakely@redhat.com> <3572914.e9J7NaK4W3@minbar> <48cc3e77-8f70-a4a7-ad16-22ba11d883b4@grove.saclay.inria.fr> <147e97d-41ab-98d-7721-a6cf2e0ddeb@hippo.saclay.inria.fr> In-Reply-To: <147e97d-41ab-98d-7721-a6cf2e0ddeb@hippo.saclay.inria.fr> From: Jonathan Wakely Date: Fri, 1 Apr 2022 12:33:42 +0100 Message-ID: Subject: Re: [PATCH] libstdc++: Implement std::unreachable() for C++23 (P0627R6) To: Marc Glisse Cc: "libstdc++" , Matthias Kretz , gcc Patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000044816605db962780" X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Apr 2022 11:34:06 -0000 --00000000000044816605db962780 Content-Type: text/plain; charset="UTF-8" On Thu, 31 Mar 2022 at 19:21, Marc Glisse wrote: > > On Thu, 31 Mar 2022, Jonathan Wakely wrote: > > > On Thu, 31 Mar 2022 at 17:03, Marc Glisse via Libstdc++ > > wrote: > >> > >> On Thu, 31 Mar 2022, Matthias Kretz via Gcc-patches wrote: > >> > >>> I like it. But I'd like it even more if we could have > >>> > >>> #elif defined _UBSAN > >>> __ubsan_invoke_ub("reached std::unreachable()"); > >>> > >>> But to my knowledge UBSAN has no hooks for the library like this (yet). > >> > >> -fsanitize=undefined already replaces __builtin_unreachable with its own > >> thing, so I was indeed going to ask if the assertion / trap provide a > >> better debugging experience compared to plain __builtin_unreachable, with > >> the possibility to get a stack trace (UBSAN_OPTIONS=print_stacktrace=1), > >> etc? Detecting if (the right subset of) ubsan is enabled sounds like a > >> good idea. > > > > Does UBsan define a macro that we can use to detect it? > > https://github.com/google/sanitizers/issues/765 seems to say no (it could > be outdated though), but they were asking for use cases to motivate adding > one. Apparently there is a macro for clang, although I don't think it is > fine-grained. > > Adding one to cppbuiltin.cc testing SANITIZE_UNREACHABLE looks easy, maybe > we can do just this one, we don't need to go overboard and define macros > for all possible suboptions of ubsan right now. Yes, we should only add what there's a use case for. > I don't think any of that prevents from pushing your patch as is for > gcc-12. Matthias didn't like my Princess Bride easter egg :-) Would the attached be better? --00000000000044816605db962780 Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1gckx9h0 Y29tbWl0IGUyYjJjZjYzMTk0MDZiYzljYjkzNjE5NjJjZjdjMzFiMTg0OGViZTgKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBGcmkgQXByIDEgMTI6 MjU6MDIgMjAyMgoKICAgIGxpYnN0ZGMrKzogSW1wbGVtZW50IHN0ZDo6dW5yZWFjaGFibGUoKSBm b3IgQysrMjMgKFAwNjI3UjYpCiAgICAKICAgIFRoaXMgZGVmaW5lcyBzdGQ6OnVucmVhY2hhYmxl IGFzIGFuIGFzc2VydGlvbiBmb3IgZGVidWcgbW9kZSwgYSB0cmFwCiAgICB3aGVuIF9HTElCQ1hY X0FTU0VSVElPTlMgaXMgZGVmaW5lZCwgYW5kIF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpCiAgICBv dGhlcndpc2UuCiAgICAKICAgIFRoZSByZWFzb24gZm9yIG9ubHkgdXNpbmcgX19idWlsdGluX3Ry YXAoKSBpbiB0aGUgc2Vjb25kIGNhc2UgaXMgdG8KICAgIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBz ZXR0aW5nIHVwIGEgY2FsbCB0byBfX2dsaWJjeHhfYXNzZXJ0X2ZhaWwgdGhhdAogICAgc2hvdWxk IG5ldmVyIGhhcHBlbi4KICAgIAogICAgVUJzYW4gY2FuIGRldGVjdCBpZiBfX2J1aWx0aW5fdW5y ZWFjaGFibGUoKSBpcyBleGVjdXRlZCwgc28gaWYgYSBmZWF0dXJlCiAgICB0ZXN0IG1hY3JvIGZv ciB0aGF0IHNhbml0aXplciBpcyBhZGRlZCwgd2UgY291bGQgY2hhbmdlIGp1c3QgdXNlCiAgICBf X2J1aWx0aW5fdW5yZWFjaGFibGUoKSB3aGVuIHRoZSBzYW5pdGl6ZXIgaXMgZW5hYmxlZC4KICAg IAogICAgV2hpbGUgdGhpbmtpbmcgYWJvdXQgd2hhdCB0aGUgZGVidWcgYXNzZXJ0aW9uIGZhaWx1 cmUgc2hvdWxkIHByaW50LCBJCiAgICBub3RpY2VkIHRoYXQgdGhlIF9fZ2xpYmN4eF9hc3NlcnRf ZmFpbCBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIGZvciBudWxsCiAgICBwb2ludGVycy4gVGhpcyBh ZGRzIGEgY2hlY2sgc28gd2UgZG9uJ3QgdHJ5IHRvIHByaW50IHRoZW0gaWYgbnVsbC4KICAgIAog ICAgbGlic3RkYysrLXYzL0NoYW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIGluY2x1ZGUvc3Rk L3V0aWxpdHkgKHVucmVhY2hhYmxlKTogRGVmaW5lIGZvciBDKysyMy4KICAgICAgICAgICAgKiBp bmNsdWRlL3N0ZC92ZXJzaW9uIChfX2NwcF9saWJfdW5yZWFjaGFibGUpOiBEZWZpbmUuCiAgICAg ICAgICAgICogc3JjL2MrKzExL2RlYnVnLmNjIChfX2dsaWJjeHhfYXNzZXJ0X2ZhaWwpOiBDaGVj ayBmb3IgdmFsaWQKICAgICAgICAgICAgYXJndW1lbnRzLiBIYW5kbGUgb25seSB0aGUgZnVuY3Rp b24gYmVpbmcgZ2l2ZW4uCiAgICAgICAgICAgICogdGVzdHN1aXRlLzIwX3V0aWwvdW5yZWFjaGFi bGUvMS5jYzogTmV3IHRlc3QuCiAgICAgICAgICAgICogdGVzdHN1aXRlLzIwX3V0aWwvdW5yZWFj aGFibGUvdmVyc2lvbi5jYzogTmV3IHRlc3QuCgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2lu Y2x1ZGUvc3RkL3V0aWxpdHkgYi9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvdXRpbGl0eQppbmRl eCAwZDdmODk1NGM1YS4uYWQ1ZmFhNTBmNTcgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNs dWRlL3N0ZC91dGlsaXR5CisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC91dGlsaXR5CkBA IC0xODYsNiArMTg2LDMyIEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAg Y29uc3RleHByIHVuZGVybHlpbmdfdHlwZV90PF9UcD4KICAgICB0b191bmRlcmx5aW5nKF9UcCBf X3ZhbHVlKSBub2V4Y2VwdAogICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuZGVybHlpbmdfdHlw ZV90PF9UcD4+KF9fdmFsdWUpOyB9CisKKyNkZWZpbmUgX19jcHBfbGliX3VucmVhY2hhYmxlIDIw MjIwMkwKKyAgLy8vIEluZm9ybXMgdGhlIGNvbXBpbGVyIHRoYXQgcHJvZ3JhbSBjb250cm9sIGZs b3cgbmV2ZXIgcmVhY2hlcyB0aGlzIHBvaW50LgorICAvKioKKyAgICogRXZhbHVhdGluZyBhIGNh bGwgdG8gdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvdXIuCisgICAq IFRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYXNzZXJ0aW9uIGluZm9ybWluZyB0aGUgY29tcGlsZXIg dGhhdCBjZXJ0YWluCisgICAqIGNvbmRpdGlvbnMgYXJlIGltcG9zc2libGUsIGZvciB3aGVuIHRo ZSBjb21waWxlciBpcyB1bmFibGUgdG8gZGV0ZXJtaW5lCisgICAqIHRoYXQgYnkgaXRzZWxmLgor ICAgKgorICAgKiBGb3IgZXhhbXBsZSwgaXQgY2FuIGJlIHVzZWQgdG8gcHJldmVudCB3YXJuaW5n cyBhYm91dCByZWFjaGluZyB0aGUKKyAgICogZW5kIG9mIGEgbm9uLXZvaWQgZnVuY3Rpb24gd2l0 aG91dCByZXR1cm5pbmcuCisgICAqCisgICAqIEBzaW5jZSBDKysyMworICAgKi8KKyAgW1tub3Jl dHVybixfX2dudV9fOjpfX2Fsd2F5c19pbmxpbmVfX11dCisgIGlubGluZSB2b2lkCisgIHVucmVh Y2hhYmxlKCkKKyAgeworI2lmZGVmIF9HTElCQ1hYX0RFQlVHCisgICAgc3RkOjpfX2dsaWJjeHhf YXNzZXJ0X2ZhaWwobnVsbHB0ciwgMCwgInN0ZDo6dW5yZWFjaGFibGUoKSIsIG51bGxwdHIpOwor I2VsaWYgZGVmaW5lZCBfR0xJQkNYWF9BU1NFUlRJT05TCisgICAgX19idWlsdGluX3RyYXAoKTsK KyNlbHNlCisgICAgX19idWlsdGluX3VucmVhY2hhYmxlKCk7CisjZW5kaWYKKyAgfQogI2VuZGlm IC8vIEMrKzIzCiAjZW5kaWYgLy8gQysrMjAKICNlbmRpZiAvLyBDKysxNwpkaWZmIC0tZ2l0IGEv bGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3ZlcnNpb24gYi9saWJzdGRjKystdjMvaW5jbHVkZS9z dGQvdmVyc2lvbgppbmRleCA0NGI4YTlmODhiNS4uNTFmMjExMGI2OGUgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9pbmNsdWRlL3N0ZC92ZXJzaW9uCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRl L3N0ZC92ZXJzaW9uCkBAIC0zMjYsNiArMzI2LDcgQEAKICMgZGVmaW5lIF9fY3BwX2xpYl9zdHJp bmdfcmVzaXplX2FuZF9vdmVyd3JpdGUgMjAyMTEwTAogI2VuZGlmCiAjZGVmaW5lIF9fY3BwX2xp Yl90b191bmRlcmx5aW5nIDIwMjEwMkwKKyNkZWZpbmUgX19jcHBfbGliX3VucmVhY2hhYmxlIDIw MjIwMkwKICNlbmRpZgogI2VuZGlmIC8vIEMrKzJiCiAjZW5kaWYgLy8gQysrMjAKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvZGVidWcuY2MgYi9saWJzdGRjKystdjMvc3JjL2Mr KzExL2RlYnVnLmNjCmluZGV4IDk4ZmUyZGNjMTUzLi40NzA2ZGVmZWRmMSAxMDA2NDQKLS0tIGEv bGlic3RkYysrLXYzL3NyYy9jKysxMS9kZWJ1Zy5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2Mr KzExL2RlYnVnLmNjCkBAIC01Miw4ICs1MiwxMSBAQCBuYW1lc3BhY2Ugc3RkCiAgIF9fZ2xpYmN4 eF9hc3NlcnRfZmFpbChjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKIAkJCWNvbnN0IGNoYXIq IGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBjb25kaXRpb24pIG5vZXhjZXB0CiAgIHsKLSAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiVkOiAlczogQXNzZXJ0aW9uICclcycgZmFpbGVkLlxuIiwKLQkJICAg ICAgZmlsZSwgbGluZSwgZnVuY3Rpb24sIGNvbmRpdGlvbik7CisgICAgaWYgKGZpbGUgJiYgZnVu Y3Rpb24gJiYgY29uZGl0aW9uKQorICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDogJXM6IEFz c2VydGlvbiAnJXMnIGZhaWxlZC5cbiIsCisJICAgICAgZmlsZSwgbGluZSwgZnVuY3Rpb24sIGNv bmRpdGlvbik7CisgICAgZWxzZSBpZiAoZnVuY3Rpb24pCisgICAgICBmcHJpbnRmKHN0ZGVyciwg IiVzOiBVbmRlZmluZWQgYmVoYXZpb3IgZGV0ZWN0ZWQuXG4iLCBmdW5jdGlvbik7CiAgICAgYWJv cnQoKTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGls L3VucmVhY2hhYmxlLzEuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwvdW5yZWFj aGFibGUvMS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGM0NjNk NTJhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIwX3V0aWwv dW5yZWFjaGFibGUvMS5jYwpAQCAtMCwwICsxLDE3IEBACisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9 Z251KysyMyIgfQorLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisjaW5j bHVkZSA8dXRpbGl0eT4KKworI2lmbmRlZiBfX2NwcF9saWJfdW5yZWFjaGFibGUKKyMgZXJyb3Ig IkZlYXR1cmUtdGVzdCBtYWNybyBmb3IgdW5yZWFjaGFibGUgbWlzc2luZyBpbiA8dXRpbGl0eT4i CisjZWxpZiBfX2NwcF9saWJfdW5yZWFjaGFibGUgIT0gMjAyMjAyTAorIyBlcnJvciAiRmVhdHVy ZS10ZXN0IG1hY3JvIGZvciB1bnJlYWNoYWJsZSBoYXMgd3JvbmcgdmFsdWUgaW4gPHV0aWxpdHk+ IgorI2VuZGlmCisKK2Jvb2wgdGVzdDAxKGludCBpKQoreworICBpZiAoaSA9PSA0KQorICAgIHJl dHVybiB0cnVlOworICBzdGQ6OnVucmVhY2hhYmxlKCk7Cit9IC8vIHsgZGctYm9ndXMgImNvbnRy b2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iIH0KZGlmZiAtLWdpdCBhL2xpYnN0 ZGMrKy12My90ZXN0c3VpdGUvMjBfdXRpbC91bnJlYWNoYWJsZS92ZXJzaW9uLmNjIGIvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3VucmVhY2hhYmxlL3ZlcnNpb24uY2MKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM3Nzk1OTAwYzMwCi0tLSAvZGV2L251bGwK KysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMF91dGlsL3VucmVhY2hhYmxlL3ZlcnNpb24u Y2MKQEAgLTAsMCArMSwxMCBAQAorLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMjMiIH0KKy8v IHsgZGctZG8gcHJlcHJvY2VzcyB7IHRhcmdldCBjKysyMyB9IH0KKworI2luY2x1ZGUgPHZlcnNp b24+CisKKyNpZm5kZWYgX19jcHBfbGliX3VucmVhY2hhYmxlCisjIGVycm9yICJGZWF0dXJlLXRl c3QgbWFjcm8gZm9yIHVucmVhY2hhYmxlIG1pc3NpbmcgaW4gPHZlcnNpb24+IgorI2VsaWYgX19j cHBfbGliX3VucmVhY2hhYmxlICE9IDIwMjIwMkwKKyMgZXJyb3IgIkZlYXR1cmUtdGVzdCBtYWNy byBmb3IgdW5yZWFjaGFibGUgaGFzIHdyb25nIHZhbHVlIGluIDx2ZXJzaW9uPiIKKyNlbmRpZgo= --00000000000044816605db962780--