Generate statepoints for given code

Hi All,

I am currently working on evaluating the support of the LLVM GC framework in order to design a garbage collector.

I have followed the below docs.
https://releases.llvm.org/11.0.0/docs/GarbageCollection.html

https://releases.llvm.org/11.0.0/docs/Statepoints.html

https://releases.llvm.org/11.0.0/docs/StackMaps.html

I am trying to generate the llvm IR with safepoints for the given C code. This repository contains relevant source files.
https://github.com/KavinduZoysa/test-GCs/tree/master/statepoints

I generated statepoints for main.ll file I used the command opt-11 --rewrite-statepoints-for-gc main.ll -S -o main-statepoints.ll

I want to know the way I followed to generate statepoints is correct? If not the what is the best practice of generating statepoints(for give LLVM IR) for a garbage collector?

Thank you,
Kavindu

Hi,

It’s not clear what you’re actually trying to do. Are you trying to write a garbage collector for C? That’s unlikely to benefit from the statepoint work because it’s designed for accurate GCs, whereas C intrinsically requires conservative GC (or some compiler or hardware changes to track pointer provenance through integer casts).

David

Hi David,

The only use of C code is to generate the LLVM IR using -emit-llvm flags. Because I need to generate an LLVM IR. My actual use case is to implement accurate GC for LLVM. So I want to know how to generate statepoints for given LLVM IR?