libFirm 1.20
|
Code Generation (backend) produces machine-code. More...
Data Structures | |
struct | backend_params |
This structure contains parameters that should be propagated to the libFirm parameter set. More... | |
Typedefs | |
typedef ir_node *( | create_trampoline_fkt )(ir_node *block, ir_node *mem, ir_node *trampoline, ir_node *env, ir_node *callee) |
Build a Trampoline for the closure. | |
typedef struct arch_irn_ops_t | arch_irn_ops_t |
Target Architecture specific node operations. | |
Enumerations | |
enum | asm_constraint_flags_t { ASM_CONSTRAINT_FLAG_NONE = 0, ASM_CONSTRAINT_FLAG_SUPPORTS_REGISTER = 1u << 0, ASM_CONSTRAINT_FLAG_SUPPORTS_MEMOP = 1u << 1, ASM_CONSTRAINT_FLAG_SUPPORTS_IMMEDIATE = 1u << 2, ASM_CONSTRAINT_FLAG_NO_SUPPORT = 1u << 3, ASM_CONSTRAINT_FLAG_MODIFIER_WRITE = 1u << 4, ASM_CONSTRAINT_FLAG_MODIFIER_NO_WRITE = 1u << 5, ASM_CONSTRAINT_FLAG_MODIFIER_READ = 1u << 6, ASM_CONSTRAINT_FLAG_MODIFIER_NO_READ = 1u << 7, ASM_CONSTRAINT_FLAG_MODIFIER_EARLYCLOBBER = 1u << 8, ASM_CONSTRAINT_FLAG_MODIFIER_COMMUTATIVE = 1u << 9, ASM_CONSTRAINT_FLAG_INVALID = 1u << 10 } |
flags categorizing assembler constraint specifications More... | |
Functions | |
int | be_parse_arg (const char *arg) |
Parse one backend argument. | |
const backend_params * | be_get_backend_param (void) |
Returns the backend configuration parameter. | |
void | be_lower_for_target (void) |
Lowers current program for the target architecture. | |
ir_prog_pass_t * | lower_for_target_pass (const char *name) |
Creates an ir_prog pass which performs lowerings necessary for the target architecture. | |
void | be_main (FILE *output, const char *compilation_unit_name) |
Main interface to the frontend. | |
asm_constraint_flags_t | be_parse_asm_constraints (const char *constraints) |
parse assembler constraint strings and returns flags (so the frontend knows which operands are inputs/outputs and whether memory is required) | |
int | be_is_valid_clobber (const char *clobber) |
tests whether a string is a valid clobber in an ASM instruction |
Code Generation (backend) produces machine-code.
typedef struct arch_irn_ops_t arch_irn_ops_t |
Target Architecture specific node operations.
Definition at line 107 of file firm_types.h.
flags categorizing assembler constraint specifications
const backend_params* be_get_backend_param | ( | void | ) |
Returns the backend configuration parameter.
int be_is_valid_clobber | ( | const char * | clobber | ) |
tests whether a string is a valid clobber in an ASM instruction
void be_lower_for_target | ( | void | ) |
Lowers current program for the target architecture.
This must be run once before using be_main. The idea here is that the backend can perform lowerings like doubleword-lowering, ABI adjustments or implementation of boolean values, if-conversion, with target specific settings. The resulting graph is still a "normal" firm-graph on which you can and should perform further architecture-neutral optimisations before be_main.
void be_main | ( | FILE * | output, |
const char * | compilation_unit_name | ||
) |
Main interface to the frontend.
int be_parse_arg | ( | const char * | arg | ) |
Parse one backend argument.
asm_constraint_flags_t be_parse_asm_constraints | ( | const char * | constraints | ) |
parse assembler constraint strings and returns flags (so the frontend knows which operands are inputs/outputs and whether memory is required)
ir_prog_pass_t* lower_for_target_pass | ( | const char * | name | ) |
Creates an ir_prog pass which performs lowerings necessary for the target architecture.
(Calling backend_params->lower_for_target)