X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.h;h=4a65d2ed85a5c3ac4889a578594506f1064eb4db;hb=f7898331f5ad54e43402413c1d369cefe5e95335;hp=b6d718a10e5fe10229a12e53f6df93e1a073c806;hpb=a9806ab3f3ca2930f8d054b4ee6f4d05e51e65c2;p=libfirm diff --git a/ir/common/firm.h b/ir/common/firm.h index b6d718a10..4a65d2ed8 100644 --- a/ir/common/firm.h +++ b/ir/common/firm.h @@ -66,41 +66,53 @@ extern "C" { #include "ircgcons.h" /* construct interprocedural graph */ /* Optimizations */ -#include "irflag.h" /* optimization flags */ -#include "irgopt.h" /* optimize ir */ -#include "reassoc.h" /* optimize ir by reassociation */ -#include "ldstopt.h" /* optimize Load/Store */ -#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 "irflag.h" /* optimization flags */ +#include "irgopt.h" /* optimize ir */ +#include "reassoc.h" /* optimize ir by reassociation */ +#include "ldstopt.h" /* optimize Load/Store */ +#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 "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 */ /* Analyses */ -#include "irouts.h" /* Graph reversal / out edges. */ -#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 "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 "interval_analysis.h" #include "field_temperature.h" #include "execution_frequency.h" /* Support */ -#include "irgmod.h" /* Support to modify ir */ -#include "irgwalk.h" /* Support to walk ir */ -#include "typewalk.h" /* Support to walk type information */ -#include "typegmod.h" /* Support to modify type graph */ -#include "type_identify.h" /* Support for type identification */ -#include "mangle.h" /* Support for mangling ident names. */ - -#include "irarch.h" /* architecture dependant optimizations */ -//#include "modeconv.h" /* architecture dependant mode conversion */ +#include "irtools.h" /* often needed tools */ +#include "irgmod.h" /* Support to modify ir */ +#include "irgwalk.h" /* Support to walk ir */ +#include "typewalk.h" /* Support to walk type information */ +#include "typegmod.h" /* Support to modify type graph */ +#include "type_identify.h" /* Support for type identification */ +#include "mangle.h" /* Support for mangling ident names. */ +#include "tr_inheritance.h" /* Support to handle inheritance. */ + +#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 @@ -113,7 +125,9 @@ extern "C" { #include "irarch.h" -/* Makros that define the old function names we decided to rename. +#include "iredges.h" + +/* Macros that define the old function names we decided to rename. Use for compatibility with old implementations. */ /*#include "old_fctnames.h"*/ @@ -136,8 +150,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; @@ -154,32 +169,25 @@ struct _firm_parameter_t { */ ident_if_t *id_if; - /** - * The factory function for the architecture dependent - * optimizations. - */ - + /** + * The architecture dependent opcode settings. + * If not set, no architecture dependent operations will be used. + */ + arch_ops_info *arch_op_settings; }; - typedef struct _firm_parameter_t firm_parameter_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 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. + * @param params A structure containing the parameters of the libFirm. * - * The parameter func may be NULL. In that case, the original FIRM behavior + * The parameter struct may be NULL. In that case, the original FIRM behavior * is conserved. - * - * @see default_initialize_local_variable_func_t */ void init_firm(const firm_parameter_t *params);