At 15:58 2003-3-20 +0200, you wrote:
    I am very sorry to affirm this, but the CW compiler is totally
out-of-situation sometimes. I really multiply 2 WORD values and it is
generating __lmul__ jumps for that purpose :( I also turned off common
subexpression elimination but no help. I don't really know how to replace
this lines with something to work:

int nRoundScale;    //this is always less than 65536
int nDifference;       //any value
WORD nLow=(WORD)nDifference;
return ((WORD)nRoundScale)*nLow;

    Anybody having some suggestions, other than replacing the current
compiler with GCC? :)

Try reducing your optimization level to 2. I think there is a current bug at the IR optimizer level where it is promoting 16-bit multiplies to longer types.


In this code snippet, what is the type being returned? I'd like to setup a reproducable case that I can use to track down this problem better.

--
Ben Combee <[EMAIL PROTECTED]>
CodeWarrior for Palm OS technical lead
Palm OS programming help @ www.palmoswerks.com



-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/

Reply via email to