Dmitry Olshansky via llvm-dev
2016-Sep-12 13:51 UTC
[llvm-dev] Q about PlaceSafepoints pass
Hello list, I'm experimenting with proof of concept statepoint GC for LLVM and currently trying to follow some guidelines of http://llvm.org/docs/Statepoints.html Namely applying PlaceSafepoints should introduce statepoint intrinsics at the right spots in the IR. Following the given example http://llvm.org/docs/Statepoints.html#placesafepoints I did: dmitryolsh$ cat sp.ll declare void @foo() define void @test() gc "statepoint-example" { call void @foo() ret void } declare void @do_safepoint() define void @gc.safepoint_poll() { call void @do_safepoint() ret void } #Applying the place-safepoints: dmitryolsh$ opt -place-safepoints -S sp.ll ; ModuleID = 'sp.ll' source_filename = "sp.ll" declare void @foo() define void @test() gc "statepoint-example" { call void @do_safepoint() call void @foo() ret void } declare void @do_safepoint() define void @gc.safepoint_poll() { call void @do_safepoint() ret void } This is compared to the expected output with intrinsics: define void @test() gc "statepoint-example" { %safepoint_token = call token (i64, i32, void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @do_safepoint, i32 0, i32 0, i32 0, i32 0) %safepoint_token1 = call token (i64, i32, void ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 2882400000, i32 0, void ()* @foo, i32 0, i32 0, i32 0, i32 0) ret void } So it doesn't quite work as advertised. Am I missing something obvious or is it a bug in docs/pass ? --- Dmitry Olshansky -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160912/18ab32e7/attachment-0001.html>