http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56621



--- Comment #2 from auc42 at yahoo dot com 2013-03-14 20:00:56 UTC ---

Ah, I had forgotten to change "tmp" back to a long in the code snippet

provided.  I was experimenting to see variations of the generated assembly

while using different types.  The failure is present with both the 8-byte long

and 4-byte int, in this case.



I accept your explanation about the clobbered registers, though.  I apparently

misunderstood how clobber declarations worked (and in re-reading the manual,

either I'm still missing something or the text isn't very clear).  Placing the

variables directly in the S and d registers and skipping the movX instructions

eliminates the problem.  I suppose that the sequence only worked by

happenstance in earlier versions of gcc.



(As for the reason of doing it this way: the original code was avoiding use of

the C standard library and/or any include files, as a personal learning

exercise toward a later program.)

Reply via email to