[Open64-devel] WHIRL question

2010-09-29 Thread C. Bergström
(forwarding this question)

This code
j = --i + i--;

Is transformed into this (pseudo)WHIRL:

STID(i) - ADD - LDID(i) ; this is the side
  \ INTCONST(-1); effect of the --i expression

STID(preg_I4) - LDID(i) ; storage of the previous
; i value

STID(i) - ADD - LDID(i) ; this is the side
  \ INTCONST(-1); effect of the i-- expression

STID(j) - ADD - LDID(preg_I4)   ; the actual
  \ LDID(i) ; j =  expression

what is the advantage of this WHIRL instead of

STID(i) - ADD - LDID(i) ; this is the side
  \ INTCONST(-1); effect of the --i expression

STID(j) - ADD - LDID(i) ; the actual
  \ LDID(i) ; j =  expression

STID(i) - ADD - LDID(i) ; this is the side
  \ INTCONST(-1); effect of the --i expression


the first version just uses one more WHIRL node and one more variable.
why is it used? is it because it's easier to rewrite C - WHIRL in that way?


--
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
___
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel


Re: [Open64-devel] WHIRL question

2010-09-29 Thread Gilmore, Doug
I suspect that the translation is done in a way that that ensures correctness.

The temp is not needed in your example, but it is needed for:

j = i-- + i--

Doug
 -Original Message-
 From: C. Bergström [mailto:cbergst...@pathscale.com]
 Sent: Wednesday, September 29, 2010 7:15 AM
 To: open64-devel
 Subject: [Open64-devel] WHIRL question
 
 (forwarding this question)
 
 This code
 j = --i + i--;
 
 Is transformed into this (pseudo)WHIRL:
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 STID(preg_I4) - LDID(i)   ; storage of the 
 previous
   ; i value
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the i--
 expression
 
 STID(j) - ADD - LDID(preg_I4)   ; the actual
   \ LDID(i) ; j =  expression
 
 what is the advantage of this WHIRL instead of
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 STID(j) - ADD - LDID(i) ; the actual
   \ LDID(i) ; j =  expression
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 
 the first version just uses one more WHIRL node and one more variable.
 why is it used? is it because it's easier to rewrite C - WHIRL in that
 way?
 
 
 ---
 ---
 Start uncovering the many advantages of virtual appliances
 and start using them to simplify application deployment and
 accelerate your shift to cloud computing.
 http://p.sf.net/sfu/novell-sfdev2dev
 ___
 Open64-devel mailing list
 Open64-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/open64-devel



--
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
___
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel


Re: [Open64-devel] WHIRL question

2010-09-29 Thread Chandrasekhar Murthy
I think it might have been done to handle the case where i is volatile.
It might also be needed for code dealing with auto decrement coupled with 
pointer dereferencing and the computing of pointer involves an expression 
having side effects.

Murthy

-Original Message-
From: Gilmore, Doug [mailto:doug.gilm...@amd.com] 
Sent: Wednesday, September 29, 2010 10:39 AM
To: C. Bergström; open64-devel
Subject: Re: [Open64-devel] WHIRL question

I suspect that the translation is done in a way that that ensures correctness.

The temp is not needed in your example, but it is needed for:

j = i-- + i--

Doug
 -Original Message-
 From: C. Bergström [mailto:cbergst...@pathscale.com]
 Sent: Wednesday, September 29, 2010 7:15 AM
 To: open64-devel
 Subject: [Open64-devel] WHIRL question
 
 (forwarding this question)
 
 This code
 j = --i + i--;
 
 Is transformed into this (pseudo)WHIRL:
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 STID(preg_I4) - LDID(i)   ; storage of the 
 previous
   ; i value
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the i--
 expression
 
 STID(j) - ADD - LDID(preg_I4)   ; the actual
   \ LDID(i) ; j =  expression
 
 what is the advantage of this WHIRL instead of
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 STID(j) - ADD - LDID(i) ; the actual
   \ LDID(i) ; j =  expression
 
 STID(i) - ADD - LDID(i) ; this is the side
   \ INTCONST(-1); effect of the --i
 expression
 
 
 the first version just uses one more WHIRL node and one more variable.
 why is it used? is it because it's easier to rewrite C - WHIRL in that
 way?
 
 
 ---
 ---
 Start uncovering the many advantages of virtual appliances
 and start using them to simplify application deployment and
 accelerate your shift to cloud computing.
 http://p.sf.net/sfu/novell-sfdev2dev
 ___
 Open64-devel mailing list
 Open64-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/open64-devel



--
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
___
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

--
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
___
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel