aboutsummaryrefslogtreecommitdiff
path: root/src/all_types.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/all_types.hpp')
-rw-r--r--src/all_types.hpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/all_types.hpp b/src/all_types.hpp
index d2705d8ec6..63292dd8ec 100644
--- a/src/all_types.hpp
+++ b/src/all_types.hpp
@@ -63,6 +63,8 @@ struct IrExecutable {
IrInstruction *implicit_allocator_ptr;
IrBasicBlock *coro_early_final;
IrBasicBlock *coro_normal_final;
+ IrBasicBlock *coro_suspend_block;
+ IrBasicBlock *coro_final_cleanup_block;
};
enum OutType {
@@ -1631,6 +1633,7 @@ struct CodeGen {
LLVMValueRef coro_end_fn_val;
LLVMValueRef coro_free_fn_val;
LLVMValueRef coro_resume_fn_val;
+ LLVMValueRef coro_save_fn_val;
bool error_during_imports;
const char **clang_argv;
@@ -2000,6 +2003,7 @@ enum IrInstructionId {
IrInstructionIdCoroEnd,
IrInstructionIdCoroFree,
IrInstructionIdCoroResume,
+ IrInstructionIdCoroSave,
};
struct IrInstruction {
@@ -2902,6 +2906,12 @@ struct IrInstructionCoroResume {
IrInstruction *awaiter_handle;
};
+struct IrInstructionCoroSave {
+ IrInstruction base;
+
+ IrInstruction *coro_handle;
+};
+
static const size_t slice_ptr_index = 0;
static const size_t slice_len_index = 1;