I want to perform math compares using constants so that we test that the compare operation performs correctly. The compiler obviously recognizes that the compare operation produces a true result with the constants given so it doesn't generate any code for it. What can I specify to the compiler to tell it to generate code for what it sees and not perform any optimization? Here is an example piece of the code:
BOOL BoolResult = FALSE; /*--------------------------------------------------- * integer compare operations *---------------------------------------------------*/ if ( (10000 < 20000) && (20000 <= 30000) && (30000 > 25000) && (25000 >= 20000) && (20000 == 20000) && (20000 != 20001) ) { BoolResult = TRUE; }
Not true:
"Each higher optimization level contains all of the characteristics of the preceding lower optimization level"
http://www.keil.com/support/man/docs/c51/c51_optimize.htm
So level-2 includes everything from levels 0 & 1; viz:
Constant Folding; Simple Access Optimizing; Jump Optimizing; Dead Code Elimination; Jump Negation.