-
Bug
-
Resolution: Cannot Reproduce
-
Medium
-
Code Generation Tools
-
CODEGEN-7479
-
-
default
-
No test case provided showing wrong results.
The attached source file has this line ...
MaskData = RawData & ~(0x00001000 | 0x00000100 | 0x00000010);
All variables are of type long. Build it ...
% cl2000 -@options.txt try1.c "try1.c", line 4: warning #552-D: variable "MaskData" was set but never used
The key assembly instructions emitted are ...
AND AL,#61167 ; [CPU_ALU] |7| MOVL *-SP[4],ACC ; [CPU_ALU] |7|
The AND instruction needs to operate on all 32-bits of the accumulator. I think this one only operates on the lower 16-bits, and clears the upper 32-bits.