Cthulhu  0.2.10
Cthulhu compiler collection
common.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include "cthulhu/ssa/ssa.h"
6 
7 typedef struct fs_t fs_t;
8 
9 typedef struct names_t
10 {
11  size_t counter;
12  map_t *names;
13 } names_t;
14 
15 typedef struct emit_t
16 {
17  arena_t *arena;
19 
22 
24 } emit_t;
25 
26 char *begin_module(emit_t *emit, fs_t *fs, const ssa_module_t *mod);
27 void end_module(emit_t *emit);
28 
29 names_t names_new(size_t size, arena_t *arena);
30 void counter_reset(emit_t *emit);
31 
32 char *get_step_name(emit_t *emit, const ssa_step_t *step);
33 char *get_block_name(emit_t *emit, const ssa_block_t *block);
34 char *get_step_from_block(emit_t *emit, const ssa_block_t *block, size_t index);
35 
36 const char *type_to_string(const ssa_type_t *type, arena_t *arena);
CT_NODISCARD size_t size
Definition: scan.h:128
an allocator object
Definition: arena.h:86
target code emitter options
Definition: common.h:16
arena_t * arena
arena to use
Definition: common.h:17
logger_t * reports
Definition: common.h:18
names_t block_names
Definition: common.h:20
vector_t * files
Definition: common.h:23
names_t vreg_names
Definition: common.h:21
Definition: common.h:72
a logging sink
Definition: notify.c:14
an unordered hash map
Definition: map.h:38
Definition: common.h:10
map_t * names
Definition: common.h:12
size_t counter
Definition: common.h:11
a generic vector of pointers
Definition: vector.c:16
CT_LOCAL char * get_block_name(emit_t *emit, const ssa_block_t *block)
Definition: common.c:77
CT_LOCAL char * get_step_name(emit_t *emit, const ssa_step_t *step)
Definition: common.c:72
CT_LOCAL char * get_step_from_block(emit_t *emit, const ssa_block_t *block, size_t index)
Definition: common.c:103
CT_LOCAL const char * type_to_string(const ssa_type_t *type, arena_t *arena)
Definition: common.c:176
CT_LOCAL names_t names_new(size_t size, arena_t *arena)
Definition: common.c:39
CT_LOCAL void end_module(emit_t *emit)
CT_LOCAL void counter_reset(emit_t *emit)
Definition: common.c:49
CT_LOCAL char * begin_module(emit_t *emit, fs_t *fs, const ssa_module_t *mod)
Definition: common.c:17