Can't Box Token inside BasicValue
hero-clashes opened this issue · 2 comments
Describe the Bug
I am trying to add coroutines inside my compiler and I wanted to use the llvm.coro.id
intrinsic
but when I tried to call it, it is panicking since in the build_call_help function it checks for the function return type but in that function is tries to box the Token type in BasicTypeEnum which doesn't support the token type
Expected Behavior
creating a call inst successfully
for now I will call it manually by just copying the code for the build_call_help and removing the void return check
LLVM Version (please complete the following information):
- LLVM Version: 17
- inkwell = { version = "0.4.0", features = ["llvm17-0-prefer-dynamic","target-x86"],default-features = false}
Desktop (please complete the following information):
- OS: Windows 10
Add to that I can't box the id too, so every call that uses it I need to do it manually
Do you have any examples of how token usage might look like? Inkwell pseudo code or llvm sys. Relevant llvm sys functions would help too
the thing their use aren't different from normal values, but they always used with intrinsic as args, for exmaple I call llvm.coro.alloc
with a token just like normal call let need_alloc = manual_call(llvm_coro_alloc, vec![id.as_value_ref()], "need_alloc".to_owned());
the manual_call func is the same function as direct call just without the void type return check, and with using the value ref directly, and the id is a token returned from llvm.coro.id
call