temp
This commit is contained in:
parent
fed4bbe52b
commit
90e4c21f35
|
@ -1029,7 +1029,7 @@ pub fn gen_expr<'ctx, 'a, G: CodeGenerator>(
|
||||||
ctx.ctx,
|
ctx.ctx,
|
||||||
ctx.current_loc.row as u32,
|
ctx.current_loc.row as u32,
|
||||||
ctx.current_loc.column as u32,
|
ctx.current_loc.column as u32,
|
||||||
ctx.debug_info.2.as_debug_info_scope(),
|
ctx.debug_info.2,
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
ctx.builder.set_current_debug_location(ctx.ctx, loc);
|
ctx.builder.set_current_debug_location(ctx.ctx, loc);
|
||||||
|
|
|
@ -19,7 +19,7 @@ use inkwell::{
|
||||||
types::{AnyType, BasicType, BasicTypeEnum},
|
types::{AnyType, BasicType, BasicTypeEnum},
|
||||||
values::{BasicValueEnum, FunctionValue, PhiValue, PointerValue},
|
values::{BasicValueEnum, FunctionValue, PhiValue, PointerValue},
|
||||||
debug_info::{
|
debug_info::{
|
||||||
DebugInfoBuilder, DICompileUnit, DISubprogram, AsDIScope, DIFlagsConstants, DILexicalBlock
|
DebugInfoBuilder, DICompileUnit, DISubprogram, AsDIScope, DIFlagsConstants, DILexicalBlock, DIScope
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
@ -55,7 +55,7 @@ pub type VarValue<'ctx> = (PointerValue<'ctx>, Option<Arc<dyn StaticValue + Send
|
||||||
pub struct CodeGenContext<'ctx, 'a> {
|
pub struct CodeGenContext<'ctx, 'a> {
|
||||||
pub ctx: &'ctx Context,
|
pub ctx: &'ctx Context,
|
||||||
pub builder: Builder<'ctx>,
|
pub builder: Builder<'ctx>,
|
||||||
pub debug_info: (DebugInfoBuilder<'ctx>, DICompileUnit<'ctx>, DILexicalBlock<'ctx>),
|
pub debug_info: (DebugInfoBuilder<'ctx>, DICompileUnit<'ctx>, DIScope<'ctx>),
|
||||||
pub module: Module<'ctx>,
|
pub module: Module<'ctx>,
|
||||||
pub top_level: &'a TopLevelContext,
|
pub top_level: &'a TopLevelContext,
|
||||||
pub unifier: Unifier,
|
pub unifier: Unifier,
|
||||||
|
@ -608,28 +608,29 @@ pub fn gen_func_impl<'ctx, G: CodeGenerator, F: FnOnce(&mut G, &mut CodeGenConte
|
||||||
&[],
|
&[],
|
||||||
inkwell::debug_info::DIFlags::PUBLIC,
|
inkwell::debug_info::DIFlags::PUBLIC,
|
||||||
);
|
);
|
||||||
|
let (row, col) =
|
||||||
|
task.body.get(0).map_or_else(|| (0, 0), |b| (b.location.row, b.location.column));
|
||||||
let func_scope: DISubprogram<'_> = dibuilder.create_function(
|
let func_scope: DISubprogram<'_> = dibuilder.create_function(
|
||||||
/* scope */ compile_unit.as_debug_info_scope(),
|
/* scope */ compile_unit.as_debug_info_scope(),
|
||||||
/* func name */ symbol,
|
/* func name */ symbol,
|
||||||
/* linkage_name */ None,
|
/* linkage_name */ None,
|
||||||
/* file */ compile_unit.get_file(),
|
/* file */ compile_unit.get_file(),
|
||||||
/* line_no */ 0,
|
/* line_no */ row as u32,
|
||||||
/* DIType */ subroutine_type,
|
/* DIType */ subroutine_type,
|
||||||
/* is_local_to_unit */ true,
|
/* is_local_to_unit */ true,
|
||||||
/* is_definition */ true,
|
/* is_definition */ true,
|
||||||
/* scope_line */ 0,
|
/* scope_line */ row as u32,
|
||||||
/* flags */ inkwell::debug_info::DIFlags::PUBLIC,
|
/* flags */ inkwell::debug_info::DIFlags::PUBLIC,
|
||||||
/* is_optimized */ false,
|
/* is_optimized */ false,
|
||||||
);
|
);
|
||||||
fn_val.set_subprogram(func_scope);
|
fn_val.set_subprogram(func_scope);
|
||||||
let (row, col) =
|
|
||||||
task.body.get(0).map_or_else(|| (0, 0), |b| (b.location.row, b.location.column));
|
// let lexical_block = dibuilder.create_lexical_block(
|
||||||
let lexical_block = dibuilder.create_lexical_block(
|
// /* scope */ func_scope.as_debug_info_scope(),
|
||||||
/* scope */ func_scope.as_debug_info_scope(),
|
// /* file */ compile_unit.get_file(),
|
||||||
/* file */ compile_unit.get_file(),
|
// /* line_no */ row as u32,
|
||||||
/* line_no */ row as u32,
|
// /* column_no */ col as u32,
|
||||||
/* column_no */ col as u32,
|
// );
|
||||||
);
|
|
||||||
|
|
||||||
let mut code_gen_context = CodeGenContext {
|
let mut code_gen_context = CodeGenContext {
|
||||||
ctx: context,
|
ctx: context,
|
||||||
|
@ -653,14 +654,14 @@ pub fn gen_func_impl<'ctx, G: CodeGenerator, F: FnOnce(&mut G, &mut CodeGenConte
|
||||||
static_value_store,
|
static_value_store,
|
||||||
need_sret: has_sret,
|
need_sret: has_sret,
|
||||||
current_loc: Default::default(),
|
current_loc: Default::default(),
|
||||||
debug_info: (dibuilder, compile_unit, lexical_block),
|
debug_info: (dibuilder, compile_unit, func_scope.as_debug_info_scope()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let loc = code_gen_context.debug_info.0.create_debug_location(
|
let loc = code_gen_context.debug_info.0.create_debug_location(
|
||||||
context,
|
context,
|
||||||
row as u32,
|
row as u32,
|
||||||
col as u32,
|
col as u32,
|
||||||
lexical_block.as_debug_info_scope(),
|
func_scope.as_debug_info_scope(),
|
||||||
None
|
None
|
||||||
);
|
);
|
||||||
code_gen_context.builder.set_current_debug_location(context, loc);
|
code_gen_context.builder.set_current_debug_location(context, loc);
|
||||||
|
|
|
@ -995,7 +995,7 @@ pub fn gen_stmt<'ctx, 'a, G: CodeGenerator>(
|
||||||
ctx.ctx,
|
ctx.ctx,
|
||||||
ctx.current_loc.row as u32,
|
ctx.current_loc.row as u32,
|
||||||
ctx.current_loc.column as u32,
|
ctx.current_loc.column as u32,
|
||||||
ctx.debug_info.2.as_debug_info_scope(),
|
ctx.debug_info.2,
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
ctx.builder.set_current_debug_location(ctx.ctx, loc);
|
ctx.builder.set_current_debug_location(ctx.ctx, loc);
|
||||||
|
|
Loading…
Reference in New Issue