16 #include "iroptimize.h"
228 FIRM_API
void be_main(FILE *output,
const char *compilation_unit_name);
ir_type * va_list_type
Which type is to be used for va_list.
struct ir_type ir_type
Type.
ir_type * be_get_type_long_double(void)
Returns type used for long double or NULL if none available.
int be_parse_arg(const char *arg)
Parse one backend argument.
void be_dwarf_set_compilation_directory(const char *directory)
Sets working directory of the compiler (or directory where the compiler searched for sources) for dwa...
const ir_settings_arch_dep_t * dep_param
Settings for architecture dependent optimizations.
int be_is_big_endian(void)
Returns 1 if the backend uses big-endian byte ordering and 0 for little-endian.
ir_type * type_long_double
type used for long double or NULL if none available.
struct ir_graph ir_graph
Procedure Graph.
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...
void be_set_after_transform_func(after_transform_func func)
Sets a callback that is called after each transformation step in be_lower_for_target().
unsigned modulo_shift
Shifts on this architecture only read some bits of the shift value.
unsigned stack_param_align
Alignment of stack parameters.
invalid constraint (due to parse error)
input can be encoded as an immediate number
ir_mode * be_get_mode_float_arithmetic(void)
Returns supported float arithmetic mode or NULL if mode_D and mode_F are supported natively...
ir_type * be_get_type_long_long(void)
Returns type used for long long or NULL if none available.
float_int_conversion_overflow_style_t be_get_float_int_overflow(void)
Returns the backend behaviour on float to integer conversion overflow.
void be_dwarf_set_source_language(dwarf_source_language language)
Sets source language for dwarf debug information.
unsigned pic_supported
1 if backend supports generation of position independent code (PIC)
float_int_conversion_overflow_style_t
Specifies what happens when a float value is converted to an integer and overflow happens...
unsigned unaligned_memaccess_supported
unaligned memory accesses are not supported natively (but the backend may break the access up into se...
asm_constraint_flags_t
flags categorizing assembler constraint specifications
input/output can be in a register, in memory or an immediate
void(* lower_func)(ir_node *)
dwarf_source_language
Dwarf source language codes.
vararg_params vararg
How this backend implements variadic functions.
ir_mode * mode_float_arithmetic
some backends like x87 can only do arithmetic in a specific float mode (load/store are still done in ...
void be_lower_for_target(void)
Lowers current program for the target architecture.
input/output can be in a register
unsigned be_get_machine_size(void)
Returns size of machine words.
int be_is_valid_clobber(const char *clobber)
tests whether a string is a valid clobber in an ASM instruction
The input is also written to.
input/output can be read/written to/from a memory address
This operand and the following operand are commutative.
void(* after_transform_func)(ir_graph *irg, const char *name)
int(* arch_allow_ifconv_func)(ir_node *sel, ir_node *mux_false, ir_node *mux_true)
This function is called to evaluate, if a mux(sel, mux_false, mux_true) should be built for the curre...
lower_func lower_va_arg
The function to lower a call to the va_arg macro.
unsigned machine_size
size of machine word in bits.
void be_main(FILE *output, const char *compilation_unit_name)
Main interface to the frontend.
ir_type * type_long_long
type used for long long or NULL if none available.
unsigned byte_order_big_endian
the backend uses big-endian byte ordering if set, else little endian
the value is modified before all inputs to the asm block are handled.
ir_type * be_get_type_unsigned_long_long(void)
Returns type used for unsigned long long or NULL if none available.
ir_type * type_unsigned_long_long
type used for unsigned long long or NULL if none available
struct ir_mode ir_mode
SSA Value mode.
struct ir_node ir_node
Procedure Graph Node.
arch_allow_ifconv_func allow_ifconv
Backend settings for if-conversion.
the constraint is not supported yet by libFirm (but valid in gcc)
float_int_conversion_overflow_style_t float_int_overflow
Semantic on float->int conversion overflow.
This structure holds the information on how the backend implements variadic functions.
This structure contains parameters that should be propagated to the libFirm parameter set...
const backend_params * be_get_backend_param(void)
Returns the backend configuration parameter.
struct ir_settings_arch_dep_t ir_settings_arch_dep_t