From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cagney To: Michael Snyder Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] pseudo-register un-optimization Date: Fri, 10 Aug 2001 16:52:00 -0000 Message-id: <3B7473C0.5020702@cygnus.com> References: <3B7456F6.5596AE84@cygnus.com> X-SW-Source: 2001-08/msg00119.html > > > 2001-08-10 Michael Snyder > > * regcache.c (legacy_write_register_gen): Don't 'optimize out' > a write_register to a pseudo-reg. Target_store_pseudo_register > needs to get called, because these regs may be computed and may > have side-effects. Michael, can you expand a little? This is legacy code, so as long as this change is to keep an old target working, I'm not too fussed. However, if this is for a new target then it should really be looking at gdbarch_register_{read,write} and bypassing the legacy mess entirely. Andrew > Index: regcache.c > =================================================================== > RCS file: /cvs/src/src/gdb/regcache.c,v > retrieving revision 1.24 > diff -c -3 -p -r1.24 regcache.c > *** regcache.c 2001/06/15 23:50:46 1.24 > --- regcache.c 2001/08/10 21:49:23 > *************** legacy_write_register_gen (int regnum, c > *** 334,348 **** > > size = REGISTER_RAW_SIZE (regnum); > > - /* If we have a valid copy of the register, and new value == old value, > - then don't bother doing the actual store. */ > - > - if (register_cached (regnum) > - && memcmp (register_buffer (regnum), myaddr, size) == 0) > - return; > - > if (real_register (regnum)) > ! target_prepare_to_store (); > > memcpy (register_buffer (regnum), myaddr, size); > > --- 334,349 ---- > > size = REGISTER_RAW_SIZE (regnum); > > if (real_register (regnum)) > ! { > ! /* If we have a valid copy of the register, and new value == old > ! value, then don't bother doing the actual store. */ > ! if (register_cached (regnum) > ! && memcmp (register_buffer (regnum), myaddr, size) == 0) > ! return; > ! else > ! target_prepare_to_store (); > ! } > > memcpy (register_buffer (regnum), myaddr, size); > >