i guess...i reluctantly agree...you have got a point there...(@iMalc and @laserlight)

@vart...i dont know...i hav'nt really dug into this compiler stuff...i will though, soon ... for now all that i could comprehend was that the compiler "somehow"(maybe using DAG?) gets to know if the value of an expression changes or not...and if it does not change, the "common sub-expression elimination technique" is applied on the intermediate code generated by the compiler. so if the value changes,like by a thread(like you mentioned) , then this concept would not be applicable,(i guess)...

( but guess this probably shouldn't be applied to functions?) ...