> > + if (!operand_equal_p (DECL_FIELD_OFFSET (field0), > > + DECL_FIELD_OFFSET (field1), > > + flags & ~OEP_ADDRESS_OF) > > + || !operand_equal_p (DECL_FIELD_BIT_OFFSET (field0), > > + DECL_FIELD_BIT_OFFSET (field1), > > + flags & ~OEP_ADDRESS_OF)) > > If it is an address, why do you need to handle > DECL_BIT_FIELD_REPRESENTATIVE? Taking address of a bit-field is not allowed. > Perhaps just return false if the fields are bit-fields (or assert they > aren't), and just compare DECL_FIELD*OFFSET of the fields themselves?
I took the code from nonoverlapping_component_refs_p_1, however in compare_ao_refs i call compare_operands on OEP_ADDRESS for memory operands, so it would be useful there. I think it makes sense in that context - in order to match memory acesses for equivalence we want to first compare that they access same memory location... Honza > > Jakub >