Gollvm, some questions

148 views
Skip to first unread message

sider...@gmail.com

unread,
Apr 21, 2020, 7:19:44 PM4/21/20
to golang-nuts
I am interesting in gollvm project and would like to ask some questions about gollvm.
1) Are there any special blog or news feed dedicated to gollvm?
2) How to choose version of llvm for gollvm? For example, is it possible to take llvm-9.0 for current version of gollvm? What is the algorithm of version's selection?
3) What are the immediate plans in gollvm? What users of gollvm can expect? Will be this projects developed in long term?

Ian Lance Taylor

unread,
Apr 21, 2020, 7:43:06 PM4/21/20
to sider...@gmail.com, Than McIntosh, Cherry Zhang, golang-nuts
[ +Than McIntosh +Cherry Zhang ]
> --
> 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/81bf1c16-b832-42c8-b153-0c4381e64c2c%40googlegroups.com.

Than McIntosh

unread,
Apr 22, 2020, 10:34:14 AM4/22/20
to Ian Lance Taylor, sider...@gmail.com, Cherry Zhang, golang-nuts
Hi,

Thanks for your note.

The big picture is that gollvm is still very much an experimental version of Go; we take care of it and keep it operating at a basic level, but it can be unstable at times. Worth adding that development activity on Gollvm is mostly paused at the moment while Cherry and I are working on other things; depending on how things go we may "un-pause" at some point in the future, but it's hard to predict.

Your questions in particular:


>1) Are there any special blog or news feed dedicated to gollvm?

We don't have a separate blog/newsfeed; for questions and discussion we just use the regular go-nuts mailing list.


2) How to choose version of llvm for gollvm? For example, is it possible to take llvm-9.0 for current version of gollvm? What is the algorithm of version's selection?

There isn't a version selection algorithm per se. At any given point in time, gollvm "tip of master branch" is intended to work with LLVM tip of master branch. There will occasionally be changes made to the LLVM apis that will break the gollvm build; when we notice this happening we try to check in fixes to sync up.  


>3) What are the immediate plans in gollvm? What users of gollvm can expect? Will be this projects developed in long term?

There aren't any immediate plans, and as mentioned previously things are still in an experimental mode-- sorry I can't be more specific.

While gollvm is in a reasonably useable state, there are still a lot of cool things that we could be doing with it but haven't (since we haven't had the time). For example, it would be interesting to get AutoFDO and/or Thin LTO working with gollvm, or work figuring out how to integrate it with the LLVM JIT, that sort of thing. 

Hope this helps--

Cheers, Than

Sid Sid

unread,
Apr 22, 2020, 12:40:05 PM4/22/20
to golang-nuts
Thanks for your detailed answers!
Mr. Than, can you also shed some light on the calling conventions (CC)?
I got the impression CC might be a serious obstacle for some projects using LLVM as backend (Mono, llilc).
What is situation with go-CC in gollvm? Is it easy to use standart llvm solutions for (non c/c++) CC?

Could inline asm features be a simple solutions?
 void foo( void)
 {
    asm( /*read formal or extended parameters*/);
    ...;
    asm( /*write formal or extended parameters*/);
    return;
 }

Or can some new llvm-intrinsics (with MachineCode stage expanding) or something also to simplify a CC-task?

Ian Lance Taylor

unread,
Apr 22, 2020, 3:25:13 PM4/22/20
to Sid Sid, golang-nuts, Than McIntosh
On Wed, Apr 22, 2020 at 9:40 AM Sid Sid <sider...@gmail.com> wrote:
>
> Thanks for your detailed answers!
> Mr. Than, can you also shed some light on the calling conventions (CC)?
> I got the impression CC might be a serious obstacle for some projects using LLVM as backend (Mono, llilc).
> What is situation with go-CC in gollvm? Is it easy to use standart llvm solutions for (non c/c++) CC?

Go code compiled by GoLLVM uses the same calling convention as C or
C++ code compiled by GoLLVM.

If you are asking a different question, could you clarify what you are
asking? Thanks.

Ian
Reply all
Reply to author
Forward
0 new messages