class Savi::Compiler::CodeGen::DebugInfo

Defined in:

savi/compiler/code_gen/debug_info.cr

Constant Summary

LANGUAGE_ID = 12

TODO pick a real DWARF language ID

Constructors

Instance Method Summary

Constructor Detail

def self.new(llvm : LLVM::Context, mod : LLVM::Module, builder : LLVM::Builder, target_data : LLVM::TargetData, runtime : PonyRT | VeronaRT) #

[View source]

Instance Method Detail

def clear_loc #

[View source]
def ctx : Context #

def ctx=(ctx : Context) #

[View source]
def ctx? : Context | Nil #

def declare_local(pos, name, t : Reach::Ref, storage : LLVM::Value) #

[View source]
def declare_local_inner(pos : Source::Pos, name : String, t : Reach::Ref, storage : LLVM::Value) #

[View source]
def declare_self_local(pos : Source::Pos, t : Reach::Ref, storage : LLVM::Value) #

[View source]
def di_create_basic_type(t : Reach::Ref | String, llvm_type : LLVM::Type, dwarf_type : LLVM::DwarfTypeEncoding) #

[View source]
def di_create_enum_type(t : Reach::Ref, llvm_type : LLVM::Type) #

[View source]
def di_create_fields_struct_type(t : Reach::Ref, llvm_type : LLVM::Type) #

[View source]
def di_create_object_struct_pointer_type(t : Reach::Ref, llvm_struct_type : LLVM::Type) #

[View source]
def di_create_object_struct_type(t : Reach::Ref, llvm_type : LLVM::Type) #

[View source]
def di_create_pointer_type(name : String, element_di_type : LibLLVM::MetadataRef) #

[View source]
def di_create_struct_type(name : String, llvm_type : LLVM::Type, member_infos : Hash(Int32, Tuple(String, LLVM::Type, LibLLVM::MetadataRef)), pos : Source::Pos | Nil = nil) #

This function is for cases where we are generating some internal struct type with no Reach::Ref, so the caller must supply the info directly.


[View source]
def di_file(source : Source) #

[View source]
def di_func_new(pos : Source::Pos, llvm_func : LLVM::Function) #

[View source]
def di_func_type(file : LibLLVM::MetadataRef) #

TODO build a real type description here.


[View source]
def di_opaque_object_pointer_type #

[View source]
def di_runtime_member_info #

[View source]
def di_type(t : Reach::Ref, llvm_type : LLVM::Type) #

[View source]
def finish #

[View source]
def func_end #

[View source]
def func_start(gfunc : GenFunc, llvm_func : LLVM::Function) #

[View source]
def func_start_raw(pos : Source::Pos, llvm_func : LLVM::Function) #

[View source]
def in_func? #

[View source]
def metadata(args) #

[View source]
def set_loc(node : AST::Node) #

[View source]
def set_loc(pos : Source::Pos) #

[View source]