Ajit Agarwal <aagar...@linux.ibm.com> writes: > Hello Alex/Richard: > > All comments are addressed. > > Common infrastructure of load store pair fusion is divided into target > independent and target dependent changed code. > > Target independent code is the Generic code with pure virtual function > to interface between target independent and dependent code. > > Target dependent code is the implementation of pure virtual function for > aarch64 target and the call to target independent code. > > Bootstrapped and regtested on aarch64-linux-gnu. > > Thanks & Regards > Ajit > > > aarch64: Preparatory patch to place target independent and > dependent changed code in one file > > Common infrastructure of load store pair fusion is divided into target > independent and target dependent changed code. > > Target independent code is the Generic code with pure virtual function > to interface betwwen target independent and dependent code. > > Target dependent code is the implementation of pure virtual function for > aarch64 target and the call to target independent code. > > 2024-05-18 Ajit Kumar Agarwal <aagar...@linux.ibm.com> > > gcc/ChangeLog: > > * config/aarch64/aarch64-ldp-fusion.cc: Factor out a > target-independent interface and move it to the head of the file > --- > gcc/config/aarch64/aarch64-ldp-fusion.cc | 555 +++++++++++++++-------- > 1 file changed, 373 insertions(+), 182 deletions(-) > > diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc > b/gcc/config/aarch64/aarch64-ldp-fusion.cc > index 1d9caeab05d..e4e55b84f8b 100644 > --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc > +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc > @@ -138,6 +138,235 @@ struct alt_base > poly_int64 offset; > }; > > +// Virtual base class for load/store walkers used in alias analysis. > +struct alias_walker > +{ > + virtual bool conflict_p (int &budget) const = 0; > + virtual insn_info *insn () const = 0; > + virtual bool valid () const = 0; > + virtual void advance () = 0; > +}; > + > +// When querying should_handle_writeback, this enum is used to > +// qualify which opportunities we are asking about. > +enum class writeback { > + // Only those writeback opportunities that arise from existing > + // auto-increment accesses. > + EXISTING, > + > + // All writeback opportunities including those that involve folding > + // base register updates into a non-writeback pair.
This misses: > There should be a comma after "opportunities" from the previous review. I.e.: // All writeback opportunities, including those that involve folding // base register updates into a non-writeback pair. OK with that change, thanks. Richard