A wild guess. The code needs the return value of second printf as its return value, if 2nd printf is the last statement.
2010/10/6 Fred Chow <frdc...@gmail.com>: > 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 > -- Thanks. Handong ------------------------------------------------------------------------------ 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