push_reload question

Jeffrey A Law law@cygnus.com
Thu Oct 22 21:15:00 GMT 1998


  In message < 199810210102.SAA22204@dm.cobaltmicro.com >you write:
  > The comment above this conditional states:
  > 
  >      (However, if OUT is nonzero, we need to reload the reg *and*
  >      the subreg, so do nothing here, and let following statement handle it.)
  > 
  > Looking at the "out != 0" cases two conditionals down, I would say the
  > "SUBREG_WORD(in)==0" is a bug and should be removed.
  > 
  > This area of the compiler is an utter rats nest full of hidden
  > treasure, thanks for working on cleaning it up.  :-)
My only concern is that we're changing the behavior of the existing code, but
based on the comments earlier in the code, I think the check for SUBREG_WORD
is bogus.

The other thought I had was that maybe someone typo'd and the check should
have been SUBREG_WORD (out)?

It might be worth grunging through the RCS archives at the FSF to find out
where this change came from.  It might tell us something interesting.  Then
again, probably not.

An interesting test might be to leave the check in, but put a 
if (out != 0)  printf("yabbadabbado\n");

In the if arm code, just to see where it triggers.  Save the resulting
assembly for the trigger, then pull the SUBREG check out and diff recompile
and examine the results.

Or just remove it and hope that the change in behavior is correct :-)

jeff



More information about the Gcc mailing list