This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: CSE fold_rtx subreg patch


  In message <199807040436.AAA00938@jwlab.FEITH.COM>you write:
  > This patch allows gcc to produce better assembly code in some situations
  > when configured for i386.  For example:
  > 
  >   unsigned char c;
  > 
  >   int
  >   func(unsigned char a)
  >     {
  >     unsigned char b;
  >  
  >     b = a;
  >     c = b;
  > 
  >     return b;
  >     }
  > 
  > compiles better with this patch installed.
  > 
  > ChangeLog:
  > 
  > Fri Jul  3 23:44:00 EDT 1998  John Wehle  (john@feith.com)
  > 
  > 	* cse.c (fold_rtx): Try using an equivalent subreg if
  > 	it isn't more expensive than the current reg.
I note that "mode_arg" is used outside the switch statement -- do we
need to fix it, or is its value correct?

I'm also a little worried about the < to <= changes, particularly for
SUBREGS since they are not optimized as well as REGs in other passes
and thus "cost more".  Presumably you added it because the cases you
tried had equal cost.

You might consider changing RTX_COSTS for the x86 to make SUBREGS
which narrow an expression cheaper than the inner expression since
narrowing may allow byte/half sized instructions to be used.


jeff



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]