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.

Reply via email to