Thanks, fixed. please update and recompile gcc. ~d
On Mon, 5 Aug 2002 11:34:55 +0300 "Oleg Skidan" <[email protected]> wrote: > Hello, All ! > During use of mspgcc (build 2002-07-25) I noticed a very > strange things: > > Consider the following fragment of code: > > int b(long long k) > { > if(k & 0xffff!=0)return 1; > } > > The compiler emits: > > .global b > .type b,@function > /*********************** > * Function `b' > ***********************/ > b: > /* prologue: frame size = 0; addenum 0; alloca:0, varargs:0 , fpr:0*/ > .L__FrameSize_b=0x0 > .L__FrameOffset_b=0x0 > /* prologue end (size=0) */ > and #llo(2), r12 ;<<<<<<<<???????????? > and #llo(0), r13 > and #llo(52), r14 ;<<<<<<<<???????????? > and #llo(0), r15 > tst r12 > jeq .L2 > mov #llo(1), r15 > ret > .L2: > mov #llo(0), r15 > .L1: > /* epilogue: frame size=0 */ > ret > /* epilogue end (size=1) */ > /* function b size 20 (19) */ > .Lfe1: > .size b,.Lfe1-b > /********* End of function ******/ > > Now lets make a minor changes: > > int b(long long k) > { > if(k & 0xffff)return 1; > return 0; > } > > The compiler emits: > > .global b > .type b,@function > /*********************** > * Function `b' > ***********************/ > b: > /* prologue: frame size = 0; addenum 0; alloca:0, varargs:0 , fpr:0*/ > .L__FrameSize_b=0x0 > .L__FrameOffset_b=0x2 > push r11 > /* prologue end (size=1) */ > and #llo(19744), r12 ;<<<<<???? > and #llo(137), r13 > and #llo(46), r14 > and #llo(8192), r15 > mov r12, r11 > bis r13, r11 > bis r14, r11 > bis r15, r11 > tst r11 > jeq .L2 > mov #llo(1), r15 > jmp .L1 > .L2: > mov #llo(0), r15 > .L1: > /* epilogue: frame size=0 */ > pop r11 > ret > /* epilogue end (size=2) */ > > I think we have a BUG :-(. > The code is good and correct if argument type is long instead of long long. > > All the best, Oleg. > /******************************************************************** ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) Enterprise Information Sys (_Y_.)' ._ ) `._ `. ``-..-' Nevsky prospekt, 20 / 44 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 3468202, 5585314 ********************************************************************/
