X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.h;h=e8d3217bdbdd43fbd015a4ba734b152b5033d211;hb=af64fb525b556cb9550c8ef9c209993dae294f01;hp=0692ac7a3958302f0950e5d1b9093d04632f29d1;hpb=63cb93aeb82cd6080b40c88c6caa27f72b4b5c9e;p=libfirm diff --git a/ir/common/firm.h b/ir/common/firm.h index 0692ac7a3..e8d3217bd 100644 --- a/ir/common/firm.h +++ b/ir/common/firm.h @@ -78,14 +78,26 @@ extern "C" { #include "ifconv.h" /* if conversion */ #include "funccall.h" /* real function call optimization */ #include "return.h" /* Return node normalizations */ +#include "scalar_replace.h" /* Scalar replacement */ +#include "proc_cloning.h" /* procedure cloning */ +#include "opt_confirms.h" /* Confirm based optimizations */ +#include "gvn_pre.h" /* global value numbering and partial redundancy elimination */ +#include "opt_frame.h" /* frame type optimization */ + +/* Lowering */ +#include "lower_calls.h" /* lowering of different calls */ +#include "lower_intrinsics.h" /* lowering of intrinsic calls */ /* Analyses */ #include "irouts.h" /* Graph reversal / out edges. */ +#include "trouts.h" /* Graph reversal / out edges for types. */ #include "irdom.h" /* Dominator analysis */ #include "cgana.h" /* Analysis to construct interprocedural graph */ /* including some optimizations */ #include "irloop.h" /* loop and backedge analysis */ #include "callgraph.h" /* Callgraph construction */ +#include "irconsconfirm.h" /* Confirm nodes */ +#include "analyze_irg_args.h" /* Simple pointer parameter analysis */ #include "interval_analysis.h" #include "field_temperature.h" #include "execution_frequency.h" @@ -99,14 +111,16 @@ extern "C" { #include "mangle.h" /* Support for mangling ident names. */ #include "tr_inheritance.h" /* Support to handle inheritance. */ -#include "irarch.h" /* architecture dependant optimizations */ -#include "archop.h" /* architecture dependant opcodes */ -//#include "modeconv.h" /* architecture dependant mode conversion */ +#include "irarch.h" /* architecture dependent optimizations */ +#include "archop.h" /* architecture dependent opcodes */ +//#include "modeconv.h" /* architecture dependent mode conversion */ #include "firmstat.h" /* statistics */ #include "irreflect.h" /* reflection */ +#include "seqnumbers.h" /* debug support */ + /* @@@ temporarily for jni builder until preprocessor works. Then it should be sufficient to include instead @@ -121,7 +135,7 @@ extern "C" { #include "iredges.h" -/* Makros that define the old function names we decided to rename. +/* Macros that define the old function names we decided to rename. Use for compatibility with old implementations. */ /*#include "old_fctnames.h"*/ @@ -144,8 +158,9 @@ struct _firm_parameter_t { /** * This function is called, whenever a local variable is - * used before definition. The function should either insert a default value, - * or raise a compiler error/warning. + * used before definition. The function should insert a default value, + * and/or raise a compiler error/warning. Note that returning + * an Unknown is allowed here. */ uninitialized_local_variable_func_t *initialize_local_func; @@ -163,21 +178,67 @@ struct _firm_parameter_t { ident_if_t *id_if; /** - * The architecture dependand opcode settings. - * If not set, no architecture dependand operations will be used. + * The architecture dependent opcode settings. + * If not set, no architecture dependent operations will be used. */ arch_ops_info *arch_op_settings; + + /** + * The default calling convention. + */ + unsigned cc_mask; + + /** + * The debug info that should be used for "builtin" objects. + */ + dbg_info *builtin_dbg; + + /** + * Prefix for the command line options. + * example: if the option is -ffirm-opt-bla, then the prefix is "-f" + * @note Only active, if libfirm is compiled with libcore. + */ + const char *arg_prefix; + + /** + * Number of arguments in the "command line". + * @note Only active, if libfirm is compiled with libcore. + */ + int argc; + + /** + * Array of arguments. + * @note Only active, if libfirm is compiled with libcore. + */ + const char **argv; + + /** + * Name of ini file which is initially read. + * @note Only active, if libfirm is compiled with libcore. + */ + const char *ini_file; }; typedef struct _firm_parameter_t firm_parameter_t; +#define libFirm_VERSION_MAJOR 0 +#define libFirm_VERSION_MINOR 4 + +/** + * The Firm version number. + */ +typedef struct _firm_version_t { + unsigned major; + unsigned minor; +} firm_version_t; + /** * Initialize the firm library. * * Initializes the firm library. Allocates default data structures. - * Initializes configurable behaviour of the library. + * Initializes configurable behavior of the library. * - * @param param A structure containing the parameters of the libFirm. + * @param params A structure containing the parameters of the libFirm. * * The parameter struct may be NULL. In that case, the original FIRM behavior * is conserved. @@ -189,6 +250,12 @@ void init_firm(const firm_parameter_t *params); */ void free_firm(void); +/** + * Returns the libFirm version number. + * If statically linked, always libFirm_VERSION_MAJOR, libFirm_VERSION_MINOR + */ +void firm_get_version(firm_version_t *version); + #ifdef __cplusplus } #endif