I'm forwarding this question.. ELSE block removed to shorten the example.. ----------
when I have code like this: int i = rand(); printf("i = %i\n", i); if (i) printf("i = %i\n", i); (a subset of ) the generated whirl code is: U8LDA 0 <1,44,(8_bytes)_"i_=_%i\n\000"> T<50,anon_ptr.,8> U8PARM 2 T<44,anon_ptr.,8> # by_value I4I4LDID 0 <2,3,i> T<4,.predef_I4,4> I4PARM 2 T<4,.predef_I4,4> # by_value VCALL 126 <1,43,printf> # flags 0x7e IF I4I4LDID 0 <2,3,i> T<4,.predef_I4,4> I4INTCONST 0 (0x0) I4I4NE THEN BLOCK BLOCK U8LDA 0 <1,44,(8_bytes)_"i_=_%i\n\000"> T<50,anon_ptr.,8> U8PARM 2 T<44,anon_ptr.,8> # by_value I4I4LDID 0 <2,3,i> T<4,.predef_I4,4> I4PARM 2 T<4,.predef_I4,4> # by_value I4CALL 126 <1,43,printf> # flags 0x7e END_BLOCK I4I4LDID -1 <1,40,.preg_return_val> T<4,.predef_I4,4> I4COMMA EVAL END_BLOCK What I don't understand is why there is a difference between the first and second printf calls. The second call is loading the return value of the function being called while the second one ignores that. It also enforces evaluation via eval node. Why? What is the difference between plain printf() and printf() in if-block ? --------- Thanks ./C ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel