int foo (void);
int bar (void) __attribute__((const));
int
test (int x)
{
int a = (x == 10000 ? foo : bar) ();
int b = (x == 10000 ? foo : bar) ();
return a + b;
}
ICEs in mark_operand_necessary.
3.4.x works and so does 4.2 and trunk.
Related to in PR29382 described common_pointer_type, but perhaps not just that.
--
Summary: [4.1 Regression] ICE in mark_operand_necessary
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32139