https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92535
--- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Current mainline with 1) fix to COMPONENT_REFs described above 2) improvement of ODR type having for THIS pointers 3) gimple_clobber fix (already approved) 4) compare_ao_refs fix for volatile accesses 5) compare_decs change so it does not test type compatibility of automatic vars (since these types have little meaning) 1 false returned: '' in compare_decl at ../../gcc/ipa-icf-gimple.c:163 1 false returned: 'replaceable operator flags are different' in compare_referenced_symbol_properties at ../../gcc/ipa-icf.c:359 4 false returned: '' in compare_bb at ../../gcc/ipa-icf-gimple.c:606 7 false returned: 'Mismatched number of parameters' in equals_wpa at ../../gcc/ipa-icf.c:651 9 false returned: '' in compare_variable_decl at ../../gcc/ipa-icf-gimple.c:447 9 false returned: '' in operand_equal_p at ../../gcc/ipa-icf-gimple.c:312 10 false returned: 'INTEGER_CST precision mismatch' in equals at ../../gcc/ipa-icf.c:1807 11 false returned: 'case low values are different' in compare_gimple_switch at ../../gcc/ipa-icf-gimple.c:808 23 false returned: '' in operand_equal_p at ../../gcc/ipa-icf-gimple.c:303 23 false returned: 'one type is not polymorphic' in compatible_polymorphic_types_p at ../../gcc/ipa-icf-gimple.c:208 23 false returned: 'THIS pointer ODR type mismatch' in equals_wpa at ../../gcc/ipa-icf.c:678 29 false returned: 'ASM strings are different' in compare_gimple_asm at ../../gcc/ipa-icf-gimple.c:909 46 false returned: 'GIMPLE call operands are different' in compare_gimple_call at ../../gcc/ipa-icf-gimple.c:681 141 false returned: 'Declaration mismatch' in equals at ../../gcc/ipa-icf.c:1803 169 false returned: '' in compare_decl at ../../gcc/ipa-icf-gimple.c:175 182 false returned: 'DECL_CXX_DESTRUCTOR mismatch' in equals_wpa at ../../gcc/ipa-icf.c:565 246 false returned: 'final flag mismatch' in compare_referenced_symbol_properties at ../../gcc/ipa-icf.c:401 391 false returned: '' in compare_phi_node at ../../gcc/ipa-icf.c:1581 391 false returned: 'PHI node comparison returns false' in equals_private at ../../gcc/ipa-icf.c:922 571 false returned: 'compare_ao_refs failed (dependence clique difference)' in compare_operand at ../../gcc/ipa-icf-gimple.c:373 676 false returned: 'compare_ao_refs failed (semantic difference)' in compare_operand at ../../gcc/ipa-icf-gimple.c:361 676 false returned: 'METHOD_TYPE and FUNCTION_TYPE mismatch' in equals_wpa at ../../gcc/ipa-icf.c:674 707 false returned: 'operand_equal_p failed' in compare_operand at ../../gcc/ipa-icf-gimple.c:381 957 false returned: 'different references' in compare_symbol_references at ../../gcc/ipa-icf.c:465 961 false returned: 'size mismatch' in equals_wpa at ../../gcc/ipa-icf.c:1652 1125 false returned: 'variables types are different' in equals at ../../gcc/ipa-icf.c:1698 1171 false returned: 'DECL_CXX_CONSTRUCTOR mismatch' in equals_wpa at ../../gcc/ipa-icf.c:562 1321 false returned: 'GIMPLE assignment operands are different' in compare_gimple_assign at ../../gcc/ipa-icf-gimple.c:724 2209 false returned: 'different decl attributes' in equals_wpa at ../../gcc/ipa-icf.c:663 4643 false returned: 'GIMPLE LHS type mismatch' in compare_gimple_assign at ../../gcc/ipa-icf-gimple.c:720 8400 false returned: 'parameter type is not compatible' in compatible_parm_types_p at ../../gcc/ipa-icf.c:512 10187 false returned: 'inline attributes are different' in compare_referenced_symbol_properties at ../../gcc/ipa-icf.c:350 16210 false returned: 'parameter types are not compatible' in equals_wpa at ../../gcc/ipa-icf.c:640 26071 false returned: 'references to virtual tables cannot be merged' in compare_referenced_symbol_properties at ../../gcc/ipa-icf.c:373 28810 false returned: 'decl_or_type flags are different' in equals_wpa at ../../gcc/ipa-icf.c:572 32971 false returned: 'different tree types' in compatible_types_p at ../../gcc/ipa-icf-gimple.c:219 61665 false returned: 'call function types are not compatible' in compare_gimple_call at ../../gcc/ipa-icf-gimple.c:660 96652 false returned: '' in equals_private at ../../gcc/ipa-icf.c:887 101194 false returned: 'types are not compatible' in compatible_types_p at ../../gcc/ipa-icf-gimple.c:225 119996 false returned: 'result types are different' in equals_wpa at ../../gcc/ipa-icf.c:622 many of call function types are not compatible are indirect calls with mismatched number of parameters. This is because we hash SSA_NAME as nothing. That is easy to fix.