libFirm
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
be.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5 
11 #ifndef FIRM_BE_H
12 #define FIRM_BE_H
13 
14 #include <stdio.h>
15 #include "iroptimize.h"
16 #include "irmode.h"
17 #include "begin.h"
18 
29 typedef enum asm_constraint_flags_t {
53 ENUM_BITSET(asm_constraint_flags_t)
54 
55 
56 typedef enum {
57  DW_LANG_C89 = 0x0001,
58  DW_LANG_C = 0x0002,
59  DW_LANG_Ada83 = 0x0003,
61  DW_LANG_Cobol74 = 0x0005,
62  DW_LANG_Cobol85 = 0x0006,
65  DW_LANG_Pascal83 = 0x0009,
66  DW_LANG_Modula2 = 0x000a,
67  DW_LANG_Java = 0x000b,
68  DW_LANG_C99 = 0x000c,
69  DW_LANG_Ada95 = 0x000d,
71  DW_LANG_PLI = 0x000f,
72  DW_LANG_ObjC = 0x0010,
74  DW_LANG_UPC = 0x0012,
75  DW_LANG_D = 0x0013,
76  DW_LANG_Python = 0x0014,
77  DW_LANG_Go = 0x0016,
79 
89 FIRM_API void be_lower_for_target(void);
90 
91 typedef void (*after_transform_func)(ir_graph *irg, const char *name);
92 
99 
103 FIRM_API void be_main(FILE *output, const char *compilation_unit_name);
104 
109 FIRM_API asm_constraint_flags_t be_parse_asm_constraints(const char *constraints);
110 
114 FIRM_API int be_is_valid_clobber(const char *clobber);
115 
120 
125 FIRM_API void be_dwarf_set_compilation_directory(const char *directory);
126 
129 #include "end.h"
130 
131 #endif
no constraints
Definition: be.h:30
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...
Definition: be.h:57
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...
dwarf_source_language
Dwarf source language codes.
Definition: be.h:56
the input is read
Definition: be.h:44
int be_is_valid_clobber(const char *clobber)
tests whether a string is a valid clobber in an ASM instruction
Definition: be.h:71
void(* after_transform_func)(ir_graph *irg, const char *name)
Definition: be.h:91
the value is modified before all inputs to the asm block are handled.
Definition: be.h:47
Definition: be.h:74
void be_dwarf_set_source_language(dwarf_source_language language)
Sets source language for dwarf debug information.
input/output can be in a register, in memory or an immediate
Definition: be.h:38
struct ir_graph ir_graph
Procedure Graph.
Definition: firm_types.h:74
input can be encoded as an immediate number
Definition: be.h:36
Definition: be.h:68
input/output can be read/written to/from a memory address
Definition: be.h:34
This operand and the following operand are commutative.
Definition: be.h:49
the constraint is not supported yet by libFirm (but valid in gcc)
Definition: be.h:40
Definition: be.h:75
invalid constraint (due to parse error)
Definition: be.h:51
Definition: be.h:58
asm_constraint_flags_t
flags categorizing assembler constraint specifications
Definition: be.h:29
Definition: be.h:77
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.
input/output can be in a register
Definition: be.h:32
void be_lower_for_target(void)
Lowers current program for the target architecture.
The input is also written to.
Definition: be.h:42