X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.h;h=f3cc21a1ab27fe846c41e464dbcea9c543e2419f;hb=002120b9325bd7e1da3ebb9dd258350011ad863c;hp=ff67024bbd34b90f89b756dafaf0bea1ddf4201f;hpb=f162f8cb1116894aca73aab33a1ae16b45216b8f;p=libfirm diff --git a/ir/common/firm.h b/ir/common/firm.h index ff67024bb..f3cc21a1a 100644 --- a/ir/common/firm.h +++ b/ir/common/firm.h @@ -56,6 +56,7 @@ extern "C" { /* The representations */ #include "firm_common.h" /* common type tags. */ #include "irprog.h" /* control flow and data of a program */ +#include "irgraph.h" /* graphs */ #include "type.h" /* type representation */ #include "entity.h" /* entity representation */ #include "tv.h" /* target values */ @@ -73,11 +74,24 @@ extern "C" { #include "cfopt.h" /* optimize control flow */ #include "tailrec.h" /* optimize tail-recursion calls */ #include "ircgopt.h" /* Optimizations based on interprocedural graph */ -#include "strength_red.h" /* Strength reduction */ +#include "opt_osr.h" /* Operator Strength Reduction */ +#include "strength_red.h" /* Old (and buggy) Strength reduction */ #include "loop_unrolling.h" /* Do loop unrolling */ #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 */ +#include "tropt.h" /* optimize the type representation */ +#include "condeval.h" /* control flow optimization by conditional evaluation */ + +/* Lowering */ +#include "lower_calls.h" /* lowering of different calls */ +#include "lower_intrinsics.h" /* lowering of intrinsic calls */ +#include "lower_dw.h" /* double word types lowering */ /* Analyses */ #include "irouts.h" /* Graph reversal / out edges. */ @@ -87,6 +101,9 @@ extern "C" { /* 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 "irtypeinfo.h" /* type information for nodes */ #include "interval_analysis.h" #include "field_temperature.h" #include "execution_frequency.h" @@ -108,6 +125,8 @@ extern "C" { #include "irreflect.h" /* reflection */ +#include "seqnumbers.h" /* debug support */ + /* @@@ temporarily for jni builder until preprocessor works. Then it should be sufficient to include instead @@ -145,8 +164,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; @@ -167,18 +187,39 @@ struct _firm_parameter_t { * The architecture dependent opcode settings. * If not set, no architecture dependent operations will be used. */ - arch_ops_info *arch_op_settings; + const 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; }; typedef struct _firm_parameter_t firm_parameter_t; +#define libFirm_VERSION_MAJOR 1 +#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 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. @@ -190,6 +231,19 @@ 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 WITH_LIBCORE +/** + * Read initializations arguments from the .init file. + */ +void firm_init_options(const char *arg_prefix, int argc, const char **argv); +#endif + #ifdef __cplusplus } #endif