libFirm
Loading...
Searching...
No Matches
Code Generation

Topics

 Just in Time Compilation
 
 

Typedefs

typedef void(* after_transform_func) (ir_graph *irg, const char *name)
 

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_SUPPORTS_ANY = ASM_CONSTRAINT_FLAG_SUPPORTS_IMMEDIATE | ASM_CONSTRAINT_FLAG_SUPPORTS_MEMOP | ASM_CONSTRAINT_FLAG_SUPPORTS_REGISTER , ASM_CONSTRAINT_FLAG_NO_SUPPORT = 1u << 3 , ASM_CONSTRAINT_FLAG_MODIFIER_WRITE = 1u << 4 , ASM_CONSTRAINT_FLAG_MODIFIER_READ = 1u << 5 ,
  ASM_CONSTRAINT_FLAG_MODIFIER_EARLYCLOBBER = 1u << 6 , ASM_CONSTRAINT_FLAG_MODIFIER_COMMUTATIVE = 1u << 7 , ASM_CONSTRAINT_FLAG_INVALID = 1u << 8
}
 flags categorizing assembler constraint specifications More...
 
enum  dwarf_source_language {
  DW_LANG_C89 = 0x0001 , DW_LANG_C = 0x0002 , DW_LANG_Ada83 = 0x0003 , DW_LANG_C_plus_plus = 0x0004 ,
  DW_LANG_Cobol74 = 0x0005 , DW_LANG_Cobol85 = 0x0006 , DW_LANG_Fortran77 = 0x0007 , DW_LANG_Fortran90 = 0x0008 ,
  DW_LANG_Pascal83 = 0x0009 , DW_LANG_Modula2 = 0x000a , DW_LANG_Java = 0x000b , DW_LANG_C99 = 0x000c ,
  DW_LANG_Ada95 = 0x000d , DW_LANG_Fortran95 = 0x000e , DW_LANG_PLI = 0x000f , DW_LANG_ObjC = 0x0010 ,
  DW_LANG_ObjC_plus_plus = 0x0011 , DW_LANG_UPC = 0x0012 , DW_LANG_D = 0x0013 , DW_LANG_Python = 0x0014 ,
  DW_LANG_Go = 0x0016
}
 Dwarf source language codes. More...
 

Functions

void be_lower_for_target (void)
 Lowers current program for the target architecture.
 
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().
 
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
 
void be_dwarf_set_source_language (dwarf_source_language language)
 Sets source language for dwarf debug information.
 
void be_dwarf_set_compilation_directory (const char *directory)
 Sets working directory of the compiler (or directory where the compiler searched for sources) for dwarf debug information.
 

Detailed Description

Code Generation (backend) produces machine-code.

Typedef Documentation

◆ after_transform_func

typedef void(* after_transform_func) (ir_graph *irg, const char *name)

Definition at line 92 of file be.h.

Enumeration Type Documentation

◆ asm_constraint_flags_t

flags categorizing assembler constraint specifications

Enumerator
ASM_CONSTRAINT_FLAG_NONE 

no constraints

ASM_CONSTRAINT_FLAG_SUPPORTS_REGISTER 

input/output can be in a register

ASM_CONSTRAINT_FLAG_SUPPORTS_MEMOP 

input/output can be read/written to/from a memory address

ASM_CONSTRAINT_FLAG_SUPPORTS_IMMEDIATE 

input can be encoded as an immediate number

ASM_CONSTRAINT_FLAG_SUPPORTS_ANY 

input/output can be in a register, in memory or an immediate

ASM_CONSTRAINT_FLAG_NO_SUPPORT 

the constraint is not supported yet by libFirm (but valid in gcc)

ASM_CONSTRAINT_FLAG_MODIFIER_WRITE 

The input is also written to.

ASM_CONSTRAINT_FLAG_MODIFIER_READ 

the input is read

ASM_CONSTRAINT_FLAG_MODIFIER_EARLYCLOBBER 

the value is modified before all inputs to the asm block are handled.

ASM_CONSTRAINT_FLAG_MODIFIER_COMMUTATIVE 

This operand and the following operand are commutative.

ASM_CONSTRAINT_FLAG_INVALID 

invalid constraint (due to parse error)

Definition at line 30 of file be.h.

◆ dwarf_source_language

Dwarf source language codes.

Enumerator
DW_LANG_C89 
DW_LANG_C 
DW_LANG_Ada83 
DW_LANG_C_plus_plus 
DW_LANG_Cobol74 
DW_LANG_Cobol85 
DW_LANG_Fortran77 
DW_LANG_Fortran90 
DW_LANG_Pascal83 
DW_LANG_Modula2 
DW_LANG_Java 
DW_LANG_C99 
DW_LANG_Ada95 
DW_LANG_Fortran95 
DW_LANG_PLI 
DW_LANG_ObjC 
DW_LANG_ObjC_plus_plus 
DW_LANG_UPC 
DW_LANG_D 
DW_LANG_Python 
DW_LANG_Go 

Definition at line 57 of file be.h.

Function Documentation

◆ be_dwarf_set_compilation_directory()

void be_dwarf_set_compilation_directory ( const char * directory)

Sets working directory of the compiler (or directory where the compiler searched for sources) for dwarf debug information.

◆ be_dwarf_set_source_language()

void be_dwarf_set_source_language ( dwarf_source_language language)

Sets source language for dwarf debug information.

◆ be_is_valid_clobber()

int be_is_valid_clobber ( const char * clobber)

tests whether a string is a valid clobber in an ASM instruction

◆ be_lower_for_target()

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 optimizations before be_main.

◆ be_main()

void be_main ( FILE * output,
const char * compilation_unit_name )

Main interface to the frontend.

◆ be_parse_asm_constraints()

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)

◆ be_set_after_transform_func()

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().

This is typically used to run dump & verify steps to help debugging.