I heard about compiler optimizations.
For example the one when:
while(myBool)
doStuff();
compiler knows you do not modify myBool inside a while loop, it just read myBool once and doesn't check it every time.
This can be affected by volatile
keyword right?
So I have tried to "trick" compiler, it thinks value was not changed.
int main()
{
struct st
{
int a;
int b; //I want to make difference by writing volatile here
}s;
s.b = 1;
while(s.b > 0)
{
*((&s.a)+1) = 0;
std::cout << "test" << std::endl;
}
}
But even with full optimizations turned on (vs2012), this does not trick the compiler. This is probably very lame trick :)
How can I trick it? Is it even possible?
My goal is to create simple single-threaded program, which prints "test" with volatile
keyword used and prints infinite-times "test" without the keyword.
EDIT: Unfortunately I am not good with assembler, so I really can not read if the memory reading was optimized out in the first place :)