https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92394
Bug ID: 92394
Summary: operand_equal_p should compare as base+offset when
comparing addresses
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: hubicka at gcc dot gnu.org
CC: marxin at gcc dot gnu.org
Target Milestone: ---
Compiling firefox one gets many of:
false returned: '' in operand_equal_p at ../../gcc/ipa-icf-gimple.c:259
false returned: 'operand_equal_p failed' in compare_operand at
../../gcc/ipa-icf-gimple.c:303
false returned: 'memory operands are different' in compare_gimple_assign at
../../gcc/ipa-icf-gimple.c:621
different statement for code: GIMPLE_ASSIGN (compare_bb:468):
_6 = &self_5->D.1557805.D.1541362.D.1218628.D.20474;
_6 = &self_5->D.1593155;
false returned: '' in equals_private at ../../gcc/ipa-icf.c:885
Equals called for: _finalize/10691342:_finalize/10809461 with result: false
here operand_equal_p seems overly conservative (assuming that base+offset
match). When comparing stuff in ADDR_EXPR it does not need to care about actual
access path.