The following invalid code snippet triggers an ICE on mainline:
===========================================
bool foo();
void bar()
{
__builtin_expect(foo(), 1) ? 0i : 0;
}
===========================================
bug.cc: In function 'void bar()':
bug.cc:5: error: could not convert '0' to 'int __complex__'
bug.cc:5: internal compiler error: tree check: expected class 'type', have
'exceptional' (error_mark) in tree_ssa_useless_type_conversion_1, at
tree-ssa.c:900
Please submit a full bug report, [etc.]
--
Summary: [4.3 regression] ICE with incompatible types for ?:
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: ice-on-invalid-code, error-recovery, monitored
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31780