Hi, > > No, I think if it turns out useful then we want a way to have such ref > represented by an ao_ref. Note that when we come from a > ref tree we know handled-components only will increase offset, > only the base MEM_REF can contain a pointer subtraction (but > the result of that is the base then).
Yep, that is why I introduced the parm_offset at first place - it can be negative or unknown... > > In what cases does parm_offset_known end up false? Is that > when seeing a POINTER_PLUS_EXPR with unknown offset? Yep, a typical example is a loop with pointer walking an array . > So yes, that's a case we cannot capture right now - the only > thing that remains is a pointer with a known points-to-set - a > similar problem as with the pure call PRE. You could in theory > allocate a scratch SSA name and attach points-to-info > to it. And when the call argument is &decl based then you could set > offset to zero. Hmm, I could try to do this, but possibly incrementally? Basically I want to have foo (&decl) decl = {} To be matched since even if I do not know the offset I know it is dead after end of lifetime of the decl. I am not quite sure PTA will give me that? > > It was my initial plan. However I was not sure how much I would get from > > that. > > > > The function starts with: > > > > /* Don't return early on *this_2(D) ={v} {CLOBBER}. */ > > if (gimple_has_volatile_ops (stmt) > > && (!gimple_clobber_p (stmt) > > || TREE_CODE (gimple_assign_lhs (stmt)) != MEM_REF)) > > return; > > > > ao_ref ref; > > if (!initialize_ao_ref_for_dse (stmt, &ref)) > > return; > > > > The check about clobber does not apply to calls and then it gives up on > > functions not returning aggregates (that is a common case). > > > > For functions returing aggregates it tries to prove that retval is dead > > and replace it. > > > > I guess I can simply call my analysis from the second return above and > > from the code removing dead LHS call instead of doing it from the main > > walker and drop the LHS handling? > > Yeah, something like that. OK, I will prepare updated patch, thanks! Honza > > Richard. > > > Thank you, > > Honza > > > > > > Thanks, > > > Richard. > > > > > > > + } > > > > else if (def_operand_p > > > > def_p = single_ssa_def_operand (stmt, SSA_OP_DEF)) > > > > {