Luma 0.1.0
A low-level compiled alternative to C, C++, and more!
Loading...
Searching...
No Matches
Classes | Macros | Functions
llvm.c File Reference
#include "../llvm.h"
#include <llvm-c/Linker.h>
#include <llvm-c/TargetMachine.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/stat.h>
Include dependency graph for llvm.c:

Classes

struct  ModuleCompileTask
 

Macros

#define DEFAULT_COMPILE_THREADS   4
 
#define MAX_COMPILE_THREADS   64
 
#define MAX_PATH_LENGTH   512
 

Functions

bool generate_module_object_file (ModuleCompilationUnit *module, const char *output_path, bool is_debug)
 
bool compile_modules_to_objects (CodeGenContext *ctx, const char *output_dir)
 
ModuleCompilationUnitcreate_module_unit (CodeGenContext *ctx, const char *module_name)
 
ModuleCompilationUnitfind_module (CodeGenContext *ctx, const char *module_name)
 
void set_current_module (CodeGenContext *ctx, ModuleCompilationUnit *module)
 
void add_symbol_to_module (ModuleCompilationUnit *module, const char *name, LLVMValueRef value, LLVMTypeRef type, bool is_function)
 
LLVM_Symbolfind_symbol_in_module (ModuleCompilationUnit *module, const char *name)
 
LLVM_Symbolfind_symbol_global (CodeGenContext *ctx, const char *name, const char *module_name)
 
void add_symbol (CodeGenContext *ctx, const char *name, LLVMValueRef value, LLVMTypeRef type, bool is_function)
 
LLVM_Symbolfind_symbol (CodeGenContext *ctx, const char *name)
 
void generate_external_declarations (CodeGenContext *ctx, ModuleCompilationUnit *target_module)
 
CodeGenContextinit_codegen_context (ArenaAllocator *arena)
 
void cleanup_codegen_context (CodeGenContext *ctx)
 
bool generate_program_modules (CodeGenContext *ctx, AstNode *ast_root, const char *output_dir)
 
char * print_llvm_ir (CodeGenContext *ctx)
 
bool generate_object_file (CodeGenContext *ctx, const char *object_filename)
 
bool generate_assembly_file (CodeGenContext *ctx, const char *asm_filename, bool is_debug)
 
LLVMLinkage get_function_linkage (AstNode *node)
 
char * process_escape_sequences (const char *input)
 
void setup_module_debug_info (CodeGenContext *ctx, ModuleCompilationUnit *unit, const char *filename)
 
void finalize_module_debug_info (ModuleCompilationUnit *unit)
 
void finalize_all_debug_info (CodeGenContext *ctx)
 
void set_debug_location (CodeGenContext *ctx, unsigned line, unsigned column)
 

Macro Definition Documentation

◆ DEFAULT_COMPILE_THREADS

#define DEFAULT_COMPILE_THREADS   4

◆ MAX_COMPILE_THREADS

#define MAX_COMPILE_THREADS   64

◆ MAX_PATH_LENGTH

#define MAX_PATH_LENGTH   512

Function Documentation

◆ add_symbol()

void add_symbol ( CodeGenContext ctx,
const char *  name,
LLVMValueRef  value,
LLVMTypeRef  type,
bool  is_function 
)

◆ add_symbol_to_module()

void add_symbol_to_module ( ModuleCompilationUnit module,
const char *  name,
LLVMValueRef  value,
LLVMTypeRef  type,
bool  is_function 
)

◆ cleanup_codegen_context()

void cleanup_codegen_context ( CodeGenContext ctx)

◆ compile_modules_to_objects()

bool compile_modules_to_objects ( CodeGenContext ctx,
const char *  output_dir 
)

◆ create_module_unit()

ModuleCompilationUnit * create_module_unit ( CodeGenContext ctx,
const char *  module_name 
)

◆ finalize_all_debug_info()

void finalize_all_debug_info ( CodeGenContext ctx)

◆ finalize_module_debug_info()

void finalize_module_debug_info ( ModuleCompilationUnit unit)

◆ find_module()

ModuleCompilationUnit * find_module ( CodeGenContext ctx,
const char *  module_name 
)

◆ find_symbol()

LLVM_Symbol * find_symbol ( CodeGenContext ctx,
const char *  name 
)

◆ find_symbol_global()

LLVM_Symbol * find_symbol_global ( CodeGenContext ctx,
const char *  name,
const char *  module_name 
)

◆ find_symbol_in_module()

LLVM_Symbol * find_symbol_in_module ( ModuleCompilationUnit module,
const char *  name 
)

◆ generate_assembly_file()

bool generate_assembly_file ( CodeGenContext ctx,
const char *  asm_filename,
bool  is_debug 
)

◆ generate_external_declarations()

void generate_external_declarations ( CodeGenContext ctx,
ModuleCompilationUnit target_module 
)

◆ generate_module_object_file()

bool generate_module_object_file ( ModuleCompilationUnit module,
const char *  output_path,
bool  is_debug 
)

◆ generate_object_file()

bool generate_object_file ( CodeGenContext ctx,
const char *  object_filename 
)

◆ generate_program_modules()

bool generate_program_modules ( CodeGenContext ctx,
AstNode ast_root,
const char *  output_dir 
)

◆ get_function_linkage()

LLVMLinkage get_function_linkage ( AstNode node)

◆ init_codegen_context()

CodeGenContext * init_codegen_context ( ArenaAllocator arena)

◆ print_llvm_ir()

char * print_llvm_ir ( CodeGenContext ctx)

◆ process_escape_sequences()

char * process_escape_sequences ( const char *  input)

◆ set_current_module()

void set_current_module ( CodeGenContext ctx,
ModuleCompilationUnit module 
)

◆ set_debug_location()

void set_debug_location ( CodeGenContext ctx,
unsigned  line,
unsigned  column 
)

◆ setup_module_debug_info()

void setup_module_debug_info ( CodeGenContext ctx,
ModuleCompilationUnit unit,
const char *  filename 
)