https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101292
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- Reduced test-case: --- /tmp/x.ii --- struct type_info { void operator==(type_info) { ((__name) || (0)); } char __name; }; enum byte : char; void operator>>(byte, int) { ((0)); } struct __class_type_info { enum __sub_kind { __contained_virtual_mask, __contained_mask, __contained_public }; struct __dyncast_result; }; __class_type_info::__sub_kind __do_dyncast_base_access; struct __vmi_class_type_info : __class_type_info { int __flags; enum { __non_diamond_repeat_mask, __diamond_shaped_mask }; bool __do_dyncast(__dyncast_result &) const; }; bool virtual_p(__class_type_info::__sub_kind access_path) { (access_path & __class_type_info::__contained_virtual_mask); ((access_path & __class_type_info::__contained_public) == __class_type_info::__contained_public); ((access_path & __class_type_info::__contained_public) == __class_type_info::__contained_mask); } struct __class_type_info::__dyncast_result { void *dst_ptr; int whole_details; __dyncast_result(int); }; bool __vmi_class_type_info::__do_dyncast(__dyncast_result &result) const { result = (0); (__do_dyncast_base_access | (__non_diamond_repeat_mask | __diamond_shaped_mask)); (__non_diamond_repeat_mask); (0) || (result.dst_ptr) || (0); (!(result.whole_details)); (0) && (0 || (__flags)) || (__flags & __diamond_shaped_mask); } $ gcc x.ii -c x.ii: In function ‘bool virtual_p(__class_type_info::__sub_kind)’: x.ii:27:1: warning: no return statement in function returning non-void [-Wreturn-type] 27 | } | ^ x.ii: In member function ‘bool __vmi_class_type_info::__do_dyncast(__class_type_info::__dyncast_result&) const’: x.ii:40:62: internal compiler error: in copy_warning, at warning-control.cc:194 40 | (0) && (0 || (__flags)) || (__flags & __diamond_shaped_mask); | ^ 0x1508cce void copy_warning<tree_node*, tree_node const*>(tree_node*, tree_node const*) /home/marxin/Programming/gcc/gcc/warning-control.cc:194 0x9e3467 cp_fold /home/marxin/Programming/gcc/gcc/cp/cp-gimplify.c:2718 0x9e53f0 cp_fold_maybe_rvalue(tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/cp-gimplify.c:2109 0x9ecebf cp_convert_and_check(tree_node*, tree_node*, int) /home/marxin/Programming/gcc/gcc/cp/cvt.c:666 0xbdd417 cp_build_binary_op(op_location_t const&, tree_code, tree_node*, tree_node*, int) /home/marxin/Programming/gcc/gcc/cp/typeck.c:5876 0x97efea build_new_op_1 /home/marxin/Programming/gcc/gcc/cp/call.c:6760 0x97fb81 build_new_op(op_location_t const&, tree_code, int, tree_node*, tree_node*, tree_node*, tree_node**, int) /home/marxin/Programming/gcc/gcc/cp/call.c:6806 0xbcf21f build_x_binary_op(op_location_t const&, tree_code, tree_node*, tree_code, tree_node*, tree_code, tree_node**, int) /home/marxin/Programming/gcc/gcc/cp/typeck.c:4330 0xae1c44 cp_parser_binary_expression /home/marxin/Programming/gcc/gcc/cp/parser.c:10023 0xae244c cp_parser_assignment_expression /home/marxin/Programming/gcc/gcc/cp/parser.c:10161 0xae3aea cp_parser_expression /home/marxin/Programming/gcc/gcc/cp/parser.c:10331 0xae7188 cp_parser_expression_statement /home/marxin/Programming/gcc/gcc/cp/parser.c:12075 0xaf34f6 cp_parser_statement /home/marxin/Programming/gcc/gcc/cp/parser.c:11871 0xaf453e cp_parser_statement_seq_opt /home/marxin/Programming/gcc/gcc/cp/parser.c:12223 0xaf4630 cp_parser_compound_statement /home/marxin/Programming/gcc/gcc/cp/parser.c:12172 0xb12ff7 cp_parser_function_body /home/marxin/Programming/gcc/gcc/cp/parser.c:24238 0xb12ff7 cp_parser_ctor_initializer_opt_and_function_body /home/marxin/Programming/gcc/gcc/cp/parser.c:24289 0xb14bea cp_parser_function_definition_after_declarator /home/marxin/Programming/gcc/gcc/cp/parser.c:30248 0xb1605d cp_parser_function_definition_from_specifiers_and_declarator /home/marxin/Programming/gcc/gcc/cp/parser.c:30164 0xb1605d cp_parser_init_declarator /home/marxin/Programming/gcc/gcc/cp/parser.c:21810 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.