[go-nuts] Re: Go Compiler Intermediate Representation

2017-02-24 Thread Arpit Aggarwal
Thank you very much adon...
Its very useful for my project.
Again, thanks a lot

Regards
Arpit

On Wednesday, February 22, 2017 at 2:13:25 PM UTC-8, adon...@google.com 
wrote:
>
> On Tuesday, 21 February 2017 12:23:44 UTC-5, Arpit Aggarwal wrote:
>>
>> I am doing a project in which I need Go compiler's intermediate 
>> representation(IR) (which is semantics preserving and I can get all all 
>> info like line number and data type and other features) (human readable) to 
>> convert to another IR of a tool.
>>
>
> The most convenient way to access the semantics of a Go program is to use 
> the golang.org/x/tools/go/ssa package, which builds a high-level 
> SSA-based intermediate representation.
>
> $ cat fib.go
> package fib
>
> func fib(x int) int {
> if x < 2 {
> return x
> }
> return fib(x-2) + fib(x-1)
> }
>
> $ go build golang.org/x/tools/cmd/ssadump
> $ ./ssadump -build=F fib.go
> # Name: fib.fib
> # Package: fib
> # Location: fib.go:3:6
> func fib(x int) int:
> 0:entry 
> P:0 S:2
> t0 = x < 2:int 
> bool
> if t0 goto 1 else 2
> 1:  if.then 
> P:1 S:0
> return x
> 2:  if.done 
> P:1 S:0
> t1 = x - 2:int 
>  int
> t2 = fib(t1)   
>  int
> t3 = x - 1:int 
>  int
> t4 = fib(t3)   
>  int
> t5 = t2 + t4   
>  int
> return t5
>
> # Name: fib.init
> # Package: fib
> # Synthetic: package initializer
> func init():
> 0:entry 
> P:0 S:2
> t0 = *init$guard   
> bool
> if t0 goto 2 else 1
> 1:   init.start 
> P:1 S:1
> *init$guard = true:bool
> jump 2
> 2:init.done 
> P:2 S:0
> return
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[go-nuts] Re: Go Compiler Intermediate Representation

2017-02-22 Thread adonovan via golang-nuts
On Tuesday, 21 February 2017 12:23:44 UTC-5, Arpit Aggarwal wrote:
>
> I am doing a project in which I need Go compiler's intermediate 
> representation(IR) (which is semantics preserving and I can get all all 
> info like line number and data type and other features) (human readable) to 
> convert to another IR of a tool.
>

The most convenient way to access the semantics of a Go program is to use 
the golang.org/x/tools/go/ssa package, which builds a high-level SSA-based 
intermediate representation.

$ cat fib.go
package fib

func fib(x int) int {
if x < 2 {
return x
}
return fib(x-2) + fib(x-1)
}

$ go build golang.org/x/tools/cmd/ssadump
$ ./ssadump -build=F fib.go
# Name: fib.fib
# Package: fib
# Location: fib.go:3:6
func fib(x int) int:
0:entry P:0 
S:2
t0 = x < 2:int 
bool
if t0 goto 1 else 2
1:  if.then P:1 
S:0
return x
2:  if.done P:1 
S:0
t1 = x - 2:int 
 int
t2 = fib(t1)   
 int
t3 = x - 1:int 
 int
t4 = fib(t3)   
 int
t5 = t2 + t4   
 int
return t5

# Name: fib.init
# Package: fib
# Synthetic: package initializer
func init():
0:entry P:0 
S:2
t0 = *init$guard   
bool
if t0 goto 2 else 1
1:   init.start P:1 
S:1
*init$guard = true:bool
jump 2
2:init.done P:2 
S:0
return

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.