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
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel