We just generate the WHIRL according to what is given to us in GNU tree/spin. So it is GNU's C front-end that has this discrepancy.
Fred On 10/06/2010 01:34 AM, "C. Bergström" wrote: > 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 > ------------------------------------------------------------------------------ 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