public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning
@ 2022-04-04 3:02 rl.alt.accnt at gmail dot com
2022-04-06 14:48 ` [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument ppalka at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: rl.alt.accnt at gmail dot com @ 2022-04-04 3:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
Bug ID: 105143
Summary: ICE when trying to emit a [[nodiscard]] warning
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: rl.alt.accnt at gmail dot com
Target Milestone: ---
I'm getting an internal compiler error when I try to compile the code below:
```
#include <algorithm>
#include <type_traits>
#include <string>
template <size_t sz>
struct str_lit {
char data[sz]{};
constexpr str_lit(const char (&_data)[sz]) { std::copy_n(_data, sz, data);
}
template <typename str>
constexpr bool operator==(const str& s) const {
return sizeof data == sizeof s.data && __builtin_strcmp(data, s.data)
== 0;
}
};
template <str_lit _name, typename _type = std::string>
struct option {
using type = _type;
static constexpr inline decltype(_name) name = _name;
};
template <typename... opts>
struct command_line_options {
template <str_lit s, typename... options> struct type_of;
template <str_lit s, typename option, typename option2>
struct type_of<s, option, option2> {
using type = std::conditional_t<s == option::name,
typename option::type,
typename option2::type>;
};
template <str_lit s, typename option, typename... options>
struct type_of<s, option, options...> {
using type = std::conditional_t<sizeof...(options) == 0 || s ==
option::name,
typename option::type,
typename type_of<s, options...>::type>;
};
template <str_lit s>
using type_of_t = typename type_of<s, opts...>::type;
struct parsed_options {
template <str_lit s>
[[nodiscard]] type_of_t<s> get() { return {}; }
};
};
using options = command_line_options<
option<"--filename">,
option<"--size", int64_t>>;
int main() {
options::parsed_options opts;
opts.get<"--filename">();
// (void) opts.get<"--filename">(); // Doing this instead works
}
```
It seems that this happens while it is trying to emit a warning about the
unused return value of `opts.get<"--filename">()` since when I do use it or
cast it to (void) it compiles just fine. The same problem also occurs with
`[[gnu::warn_unused_result]]` instead of `[[nodiscard]]`.
Here's the backtrace:
```
'
Internal compiler error: Error reporting routines re-entered.
0xf3d164 warning(int, char const*, ...)
???:0
0x1190cb1 tsubst(tree_node*, tree_node*, int, tree_node*)
???:0
0x1479e26 pp_format(pretty_printer*, text_info*)
???:0
0xf3d5cf diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*)
???:0
0xf953af warning_at(unsigned int, int, char const*, ...)
???:0
0x10fa93c convert_to_void(tree_node*, impl_conv_void, int)
???:0
0x10f9d03 finish_expr_stmt(tree_node*)
???:0
0x14e7873 c_parse_file()
???:0
0x14c9d9e c_common_parse_file()
???:0
```
I'm running gcc 11.2.0 on x86_64 Arch Linux, but I've also tested this with
several versions of GCC on compiler explorer including trunk and I ran into
much the same problem. Here's a link to that: https://godbolt.org/z/qPY4ccPfr.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
@ 2022-04-06 14:48 ` ppalka at gcc dot gnu.org
2022-04-06 15:46 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-04-06 14:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
CC| |ppalka at gcc dot gnu.org
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Last reconfirmed| |2022-04-06
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Confirmed.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
2022-04-06 14:48 ` [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument ppalka at gcc dot gnu.org
@ 2022-04-06 15:46 ` cvs-commit at gcc dot gnu.org
2022-04-06 15:48 ` ppalka at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-04-06 15:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppalka@gcc.gnu.org>:
https://gcc.gnu.org/g:e58484a019c57b1085bbbcc1654f1944feddfe73
commit r12-8028-ge58484a019c57b1085bbbcc1654f1944feddfe73
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Apr 6 11:46:25 2022 -0400
c++: make -Wctad-maybe-unsupported respect complain [PR105143]
We were attempting to issue a -Wctad-maybe-unsupported warning even when
complain=tf_none, which led to a crash in the first testcase below and a
bogus error during overload resolution in the second testcase.
PR c++/105143
gcc/cp/ChangeLog:
* pt.cc (do_class_deduction): Check complain before attempting
to issue a -Wctad-maybe-unsupported warning.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/nodiscard1.C: New test.
* g++.dg/warn/Wctad-maybe-unsupported4.C: New test.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
2022-04-06 14:48 ` [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument ppalka at gcc dot gnu.org
2022-04-06 15:46 ` cvs-commit at gcc dot gnu.org
@ 2022-04-06 15:48 ` ppalka at gcc dot gnu.org
2022-04-07 19:19 ` cvs-commit at gcc dot gnu.org
2022-04-07 19:28 ` ppalka at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-04-06 15:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |11.3
--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Fixed for GCC 12 so far, backport to the 11 branch (for 11.3) to follow.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
` (2 preceding siblings ...)
2022-04-06 15:48 ` ppalka at gcc dot gnu.org
@ 2022-04-07 19:19 ` cvs-commit at gcc dot gnu.org
2022-04-07 19:28 ` ppalka at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-04-07 19:19 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Patrick Palka
<ppalka@gcc.gnu.org>:
https://gcc.gnu.org/g:4e47b450b72f082de6fba7a060c3a751954e6c17
commit r11-9797-g4e47b450b72f082de6fba7a060c3a751954e6c17
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Apr 6 11:46:25 2022 -0400
c++: make -Wctad-maybe-unsupported respect complain [PR105143]
We were attempting to issue a -Wctad-maybe-unsupported warning even when
complain=tf_none, which led to a crash in the first testcase below and a
bogus error during overload resolution in the second testcase.
PR c++/105143
gcc/cp/ChangeLog:
* pt.c (do_class_deduction): Check complain before attempting
to issue a -Wctad-maybe-unsupported warning.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/nodiscard1.C: New test.
* g++.dg/warn/Wctad-maybe-unsupported4.C: New test.
(cherry picked from commit e58484a019c57b1085bbbcc1654f1944feddfe73)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
` (3 preceding siblings ...)
2022-04-07 19:19 ` cvs-commit at gcc dot gnu.org
@ 2022-04-07 19:28 ` ppalka at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-04-07 19:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105143
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #5 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Fixed for GCC 11.3/12, thanks for the bug report.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-04-07 19:28 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-04 3:02 [Bug c++/105143] New: ICE when trying to emit a [[nodiscard]] warning rl.alt.accnt at gmail dot com
2022-04-06 14:48 ` [Bug c++/105143] c++20: ICE when trying to emit a [[nodiscard]] warning and non-type template arugument ppalka at gcc dot gnu.org
2022-04-06 15:46 ` cvs-commit at gcc dot gnu.org
2022-04-06 15:48 ` ppalka at gcc dot gnu.org
2022-04-07 19:19 ` cvs-commit at gcc dot gnu.org
2022-04-07 19:28 ` ppalka at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).