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.

Reply via email to