Hi Than, Thank you a lot for sharing this valuable information. It helps me a lot to understand this.
Thank you, Kavindu On Wednesday, 7 July 2021 at 20:31:12 UTC+5:30 th...@google.com wrote: > Hi again, > > Sorry for the delay, I have been offline for a while. > > > You wrote: > >Regarding address spaces, I saw that there is a pass to remove address > space casts. But if I generate IR using `llvm-goc -dump-ir -enable-gc=1 > test.go` for the following go file, I still can see the addrspacecast > instruction. What is the reason to see that addrspacecast? I feel that pass > is not running. Can you help me to understand this problem? > > A couple of things on this. > > First, the "-dump-ir" option to llvm-goc shows the LLVM IR after the front > end and bridge are done with creating it -- at this point no LLVM passes > will have been run, so you would not expect to see any address space casts > removed. Probably what you want here is "-emit-llvm", which will show LLVM > IR after all the various module and function passes have run (before the > switch to machine-dependent IR). Example: > > $ llvm-goc -S -emit-llvm -enable-gc=1 test.go > $ cat test.ll > ... > $ > > A second thing is that the cast-removal pass you mention isn't removing > every cast, only casts on initialized global variables fed with constants. > If you look at this source code > > > https://go.googlesource.com/gollvm/+/38bada572789a19cf881201c923e6b56ed32ae53/passes/RemoveAddrSpace.cpp#95 > > you can see that it's visiting only initialized globals. If you want to > examples of cast removal, try running your compile on a larger and more > interesting test case, like > > https://golang.org/test/method5.go > > In general if you are unsure about whether a pass is running and/or what > the effects of the pass are, there are developer options you can try (note: > available only in a pure debug build) that can show you more. Example: > > # Dump LLVM IR before a pass > $ ./bin/llvm-goc -O2 -c -emit-llvm -S -enable-gc=1 -mllvm > -print-before=remove-addrspacecast test.go 1> before.dump.txt 2>&1 > > # Dump LLVM IR after a pass > $ ./bin/llvm-goc -O2 -c -emit-llvm -S -enable-gc=1 -mllvm > -print-after=remove-addrspacecast test.go 1> after.dump.txt 2>&1 > > Hope this helps. > > Thanks, Than > > On Mon, Jul 5, 2021 at 3:08 AM Kavindu Gimhan Zoysa <kavin...@gmail.com> > wrote: > >> Hi, >> >> Regarding address spaces, I saw that there is a pass to remove address >> space casts. But if I generate IR using `*llvm-goc -dump-ir -enable-gc=1 >> test.go*` for the following go file, I still can see the *addrspacecast* >> instruction. What is the reason to see that *addrspacecast? *I feel that >> pass is not running. Can you help me to understand this problem? >> >> >> *package main* >> >> *func main() {* >> * _ = stackIt2()* >> *}* >> *//go:noinline* >> *func stackIt2() *int {* >> * y := 2* >> * res := y * 2* >> * return &res* >> *}* >> >> Thank you, >> Kavindu >> On Tuesday, 29 June 2021 at 18:22:14 UTC+5:30 th...@google.com wrote: >> >>> See https://llvm.org/docs/Statepoints.html for more on this. >>> >>> Thanks, Than >>> >>> >>> On Mon, Jun 28, 2021 at 5:40 AM Kavindu Gimhan Zoysa <kavin...@gmail.com> >>> wrote: >>> >>>> Hi all, >>>> >>>> Can you please explain the reason to use different address space when >>>> GC is enabled as shown in the below line? >>>> >>>> >>>> https://go.googlesource.com/gollvm/+/refs/heads/master/driver/CompileGo.cpp#559 >>>> >>>> Thank you, >>>> Kavindu >>>> >>>> -- >>>> 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...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/golang-nuts/d95934ca-4488-4071-8c07-bb33122be387n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/golang-nuts/d95934ca-4488-4071-8c07-bb33122be387n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >> 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...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/c26ff4b9-84a9-4aa2-a450-5d1796aba1c0n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/c26ff4b9-84a9-4aa2-a450-5d1796aba1c0n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/caf6b5b1-1ab0-4a22-a0e8-0426ad17ae71n%40googlegroups.com.