X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbe.h;h=3b6fecdac0e76927df4f0ce57e17af899de4feb6;hb=80a6158fdd766f42ee6c508a773bc114ff1b61f3;hp=3967a6ba6908d98b93cdff2f5d39af28144d6005;hpb=d26125ca5720072a4975d37c0a17f7ad6c18de2d;p=libfirm diff --git a/ir/be/be.h b/ir/be/be.h index 3967a6ba6..3b6fecdac 100644 --- a/ir/be/be.h +++ b/ir/be/be.h @@ -1,8 +1,84 @@ - #ifndef _BE_MAIN_H #define _BE_MAIN_H -void be_init(void); -void be_main(int argc, const char *argv[]); +#include +#include "irarch.h" +#include "archop.h" +#include "lower_dw.h" +#include "dbginfo.h" +#include "ifconv.h" + +#ifdef WITH_LIBCORE +#include +#include +#include +#endif /* WITH_LIBCORE */ + +#define LC_STOP_AND_RESET_TIMER(timer) do { lc_timer_stop(timer); lc_timer_reset(timer); } while(0) + +/** + * This structure contains parameters that should be + * propagated to the libFirm parameter set. + */ +typedef struct backend_params { + /** Additional opcodes settings. */ + const arch_ops_info *arch_op_settings; + + /** Settings for architecture dependent optimizations */ + const arch_dep_params_t *dep_param; + + /** if set, the backend cannot handle DWORD access */ + unsigned do_dw_lowering; + + /** the architecture specific intrinsic function creator */ + create_intrinsic_fkt *arch_create_intrinsic_fkt; + + /** the context parameter for the create intrinsic function */ + void *create_intrinsic_ctx; + + /** backend settings for if-conversion */ + const opt_if_conv_info_t *if_conv_info; +} backend_params; + +/** + * Register the Firm backend command line options. + */ +void be_opt_register(void); + +/** + * Parse one backend argument. + */ +int be_parse_arg(const char *arg); + +/** + * Initialize the Firm backend. Must be run BEFORE init_firm()! + * + * @return libFirm configuration parameters for the selected + * backend + */ +const backend_params *be_init(void); + +/** + * Main interface to the frontend. + */ +void be_main(FILE *file_handle, const char *cup_name); + +/** The type of the debug info retriever function. */ +typedef const char *(*retrieve_dbg_func)(const dbg_info *dbg, unsigned *line); + +/** + * Sets a debug info retriever. + * + * @param func the debug retriever function. + */ +void be_set_debug_retrieve(retrieve_dbg_func func); + +/** + * Retrieve the debug info. + */ +const char *be_retrieve_dbg_info(const dbg_info *dbg, unsigned *line); + +typedef struct _be_main_env_t be_main_env_t; +typedef struct _be_options_t be_options_t; -#endif +#endif /* _BE_MAIN_H */