https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93617
Bug ID: 93617 Summary: Ternary operator calling a noreturn function should not cause type errors Product: gcc Version: 9.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: whoffman at de dot ibm.com Target Milestone: --- Created attachment 47792 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47792&action=edit sample program Given a ternary operator that calls a function annotated with __attribute__((noreturn)) in one branch should not lead to type errors. At the moment, compiling the attached sample program fails with $ gcc foo.cpp foo.cpp: In function 'void foo()': foo.cpp:12:21: error: third operand to the conditional operator is of type 'void', but the second operand is neither a throw-expression nor of type 'void' 12 | int a = b ? 2 : throwError(); | ^