From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fencepost.gnu.org (fencepost.gnu.org [IPv6:2001:470:142:3::e]) by sourceware.org (Postfix) with ESMTPS id 93AC93858CD1 for ; Fri, 8 Dec 2023 22:21:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 93AC93858CD1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 93AC93858CD1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702074114; cv=none; b=dOUFF5jFSjkiuiYDsSj8QgZm9rflyTuobnqYarmX5Atq1emN/tzJgAel2+lt4elHxXdMXJ32uIIKbsu0BKqoyrwV/MI/tLKdwOwKPcPQagRK4JfdJ0Utq9AvSiRSqDOw9MbwQJ9bS+/8mcfn5CKoWVNZ4X5ljZw/dzZPays7Yqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702074114; c=relaxed/simple; bh=ogGBW8T1iwpYoT1bgW6ecjhB6NOTaonlFG9jFYgZ5c8=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=FD8L0fTZzx/Ebvm8GI4iH2cp1xBG2q0XuiXmLZaYFWNdkGGxITpBe/iuygHKmX9J2GzDcd/4JhHgnKTn6PLCQ6AnDsNeXy2mLoRZ9zvtA6TBBGiJej5SbAR2dKKzC8og2svji70uD4pA6K+T9+8ja+10etc8CyVwOphqrePlMjU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:To:From:Subject:in-reply-to: references; bh=tbPCd4X5jkRFptK7SSeLuZotLBQyBKz8f4tI2CFrTlE=; b=KvJsSp6OzEYe/w RbNpsyORE/F3S2JRRSZDBJSK79TH9BdBBHU7JYzaSCDmeGPzqOYqRu32d+23seBbHAK63asNMb8nv 9P/yqlVzK3vfcLB+jXOa2+elJLWHiGzhyM9iSD+UQ4U765Uos6Shcj0rZ30cZFvZmyWJI+eeON9tB G76wgjxR5hxXPprHvjdWqy9RAcJzs6ffVTwsx46j2MY/X4uutQWkpZk8gPup/uxlXLxN2v2HlKAjw dBQVj9fYQ7HtG2vi9ddGj5vnRDMPldbQjR7akMZ3f6vdBgXwVgUlN57gC3R11dE5gcvBFIq6LBlZP mGTRKuanq91mnF8RgVfA==; Message-ID: Subject: GCC 12.3 ICE: format(printf...) failing in C++ with virtual inheritance From: Paul Smith Reply-To: psmith@gnu.org To: gcc@gcc.gnu.org Date: Fri, 08 Dec 2023 17:21:50 -0500 Autocrypt: addr=psmith@gnu.org; prefer-encrypt=mutual; keydata=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 Organization: GNU's Not UNIX! Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.1 (by Flathub.org) MIME-Version: 1.0 X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,WEIRD_PORT 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: I've tried this with both older versions as well as GCC 12.3 (latest I have access to). This is on GNU/Linux on x86_64. I have the following code: #include class Exception : public std::exception { public: Exception(const char* text, ...) __attribute__((format(printf, 2, 3))); }; void foo() { throw Exception("something bad"); } this works fine. However, due to some diamond inheritance I need to switch to virtual inheritance here: #include class Exception : public /**/ virtual /**/ std::exception { public: Exception(const char* text, ...) __attribute__((format(printf, 2, 3))); }; void foo() { throw Exception("something bad"); } this does not work AT ALL. First, the extra virtual infrastructure means that the offsets we use (note we need to add one to the format parameters anyway due to the this pointer I assume) are wrong: /tmp/virt.cpp:7:45: error: 'format' attribute argument 2 value '2' =20 refers to parameter type 'int' 7 | __attribute__((format(printf, 2, 3))); | ^ Just adding 1 to this, for 3, 4, doesn't help: /tmp/virt.cpp:7:45: error: 'format' attribute argument 2 value '3' =20 refers to parameter type 'const void**' 7 | __attribute__((format(printf, 3, 4))); | ^ And if I add 2 instead so it's 4,5 instead, I get an ICE: /tmp/virt.cpp: In function 'void foo()': /tmp/virt.cpp:12:36: error: 'format' attribute argument 2 value '4' exc= eeds the number of function parameters 2 [-Werror=3Dattributes] 12 | throw Exception("something bad"); | ^ /tmp/virt.cpp:12:36: internal compiler error: in get_constant, at c-famil= y/c-format.cc:323 0x7fba675a3082 __libc_start_main ../csu/libc-start.c:308 Please submit a full bug report, with preprocessed source (by using -frep= ort-bug). Please include the complete backtrace with any bug report. See for instructions. I'm assuming a bug should be filed for this ICE (can anyone repro it in the current release?), but does anyone know if there's any way to make it work in GCC 12.3?