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; }
Regardless of whether this test has any merit or not, the purpose of this thread is to find out if there is any way to tell the compiler to not do any optimization and generate code to perform the instructions as written.
You can try the compiler manual - maybe there is a #pragma for that...
That is a fundamental misconception of the nature of a high-level language!
You should not think of HLL source code as a sequence of instructions that the compiler simply transliterates into a sequence of machine instructions.
If you want to guarantee a specific set of machine instructions then, as already noted, you must write in assembler.