of course, hand-craften assembly is much better.
~d

On Wednesday 30 July 2003 02:47, Takahashi, Chris wrote:
> While looking at asm listings I keep running across instances where GCC
> 'juggles' its general purpose registers around for no apparent(to me)
> reason, creating lots of extra mov instructions and wasted code space.
> Attached is some source which has all the irrelevant (to this issue) code
> removed and its asm list.
>
> A pointer 'err' gets passed to the function through r12 then moved into r7
> (Which I believe to be unnecessary.)  Then r12 is used to alter *err. 
> Later r12 is used by another bit of code for something unrelated and then
> r7 is then used at the pointer to err.  Finally the function returns.
>
> Why cant the first move be avoided and the section of code that uses r12
> for something else use r7 instead?  Then at the last use of *err r7 could
> be replaced by r12.
>
> I am compiling with -Os so this probably shouldn't occur.
>
> Thanks for the help.
>
> -Chris Takahashi

-- 
/*****************************************************************
     ("`-''-/").___..--''"`-._     (\   Dimmy the Wild     UA1ACZ
      `6_ 6  )   `-.  (     ).`-.__.`)  State Polytechnical Univ.
      (_Y_.)'  ._   )  `._ `. ``-..-'   Radio-Physics Departament
    _..`--'_..-_/  /--'_.' ,'           Saint Petersburg,  Russia
   (il),-''  (li),'  ((!.-'             +7 (812) 5403923, 5585314
 *****************************************************************/


Reply via email to