X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firflag.h;h=780580f28d9bbbe44f0e358bf6cac31e78527ad3;hb=1553e92153d3b718a7f5575dcbbe8abbffc579c0;hp=608aa76683ea114687958232c23fd243af1d515e;hpb=c021732d2f0c04113e6afd153a7a9be38e40ca6f;p=libfirm diff --git a/include/libfirm/irflag.h b/include/libfirm/irflag.h index 608aa7668..780580f28 100644 --- a/include/libfirm/irflag.h +++ b/include/libfirm/irflag.h @@ -56,8 +56,8 @@ typedef unsigned optimization_state_t; * If optimize == 0 no optimizations are performed at all. * Default: optimize == 1. */ -FIRM_DLL void set_optimize(int value); -FIRM_DLL int get_optimize(void); +FIRM_API void set_optimize(int value); +FIRM_API int get_optimize(void); /** Enables/Disables constant folding optimization. * @@ -65,7 +65,7 @@ FIRM_DLL int get_optimize(void); * constant expression evaluation (2 + 5 ==> 7, 3 < 2 ==> false) * Default: opt_constant_folding == 1. */ -FIRM_DLL void set_opt_constant_folding(int value); +FIRM_API void set_opt_constant_folding(int value); /** Enables/Disables algebraic simplifications. * @@ -74,17 +74,17 @@ FIRM_DLL void set_opt_constant_folding(int value); * - simplification of tests ( !(a < b) ==> (a >= b)) * Default: opt_algebraic_simplification == 1. */ -FIRM_DLL void set_opt_algebraic_simplification(int value); +FIRM_API void set_opt_algebraic_simplification(int value); /** Enables/Disables common subexpression elimination. * * If opt_cse == 1 perform common subexpression elimination. * Default: opt_cse == 1. */ -FIRM_DLL void set_opt_cse(int value); +FIRM_API void set_opt_cse(int value); /** Returns constant folding optimization setting. */ -FIRM_DLL int get_opt_cse(void); +FIRM_API int get_opt_cse(void); /** Enables/Disables global constant subexpression elimination. * @@ -95,35 +95,7 @@ FIRM_DLL int get_opt_cse(void); * right after a call to local_optimize with global cse turned on. * Default: opt_global_cse == 0. */ -FIRM_DLL void set_opt_global_cse(int value); - -/** Enables/Disables unreachable code elimination. - * - * If set, evaluate conditions of conditional branch and replace the - * branch with a Jmp/Bad Tuple. - * - * If opt_unreachable_code == 1 replace nodes (except Block, - * Phi and Tuple) with a Bad predecessor by the Bad node. - * Default: opt_unreachable_code == 1. - */ -FIRM_DLL void set_opt_unreachable_code(int value); - -/** Enables/Disables control flow optimizations. - * - * Performs Straightening, if simplifications and loop simplifications. - * Sets all separate control flow flags (control_flow_straightening, - * weak_simplification, strong_simplification and critical_edges). - */ -FIRM_DLL void set_opt_control_flow(int value); - -/** Enables/Disables Straightening. */ -FIRM_DLL void set_opt_control_flow_straightening(int value); - -/** Enables/Disables if simplifications in local optimizations. */ -FIRM_DLL void set_opt_control_flow_weak_simplification(int value); - -/** Enables/Disables strong if and loop simplification (in optimize_cf). */ -FIRM_DLL void set_opt_control_flow_strong_simplification(int value); +FIRM_API void set_opt_global_cse(int value); /** Enable/Disable optimization of dynamic method dispatch. * @@ -131,14 +103,8 @@ FIRM_DLL void set_opt_control_flow_strong_simplification(int value); * If the flag is turned on Sel nodes can be replaced by Const nodes representing * the address of a function. */ -FIRM_DLL void set_opt_dyn_meth_dispatch(int value); -FIRM_DLL int get_opt_dyn_meth_dispatch(void); - -/** Enable/Disable type optimization of cast nodes. - * - * Controls the optimizations in tropt.h. Default: on. - */ -FIRM_DLL void set_opt_optimize_class_casts(int value); +FIRM_API void set_opt_dyn_meth_dispatch(int value); +FIRM_API int get_opt_dyn_meth_dispatch(void); /** Restricts the behavior of cast optimization. * @@ -146,22 +112,8 @@ FIRM_DLL void set_opt_optimize_class_casts(int value); * illegal as in (Super)(Sub) (new Super()). Default: * 0 == not suppressed. */ -FIRM_DLL void set_opt_suppress_downcast_optimization(int value); -FIRM_DLL int get_opt_suppress_downcast_optimization(void); - -/** Enable/Disable floating of fragile ops. - * - * This flags enables/disables the floating of fragile operations. - * If this flag is on, fragile operations which are known to NOT raise - * an exception can be place to other basic blocks. - * Otherwise they remain in the block they were created. - */ -FIRM_DLL void set_opt_fragile_ops(int value); - -/** - * Enable/Disable Confirm node removal during local optimization. - */ -FIRM_DLL void set_opt_remove_confirm(int value); +FIRM_API void set_opt_suppress_downcast_optimization(int value); +FIRM_API int get_opt_suppress_downcast_optimization(void); /** * Enable/Disable Null exception in Load and Store nodes only. @@ -174,7 +126,7 @@ FIRM_DLL void set_opt_remove_confirm(int value); * * This flag is enabled by default. */ -FIRM_DLL void set_opt_ldst_only_null_ptr_exceptions(int value); +FIRM_API void set_opt_ldst_only_null_ptr_exceptions(int value); /** * Enable/Disable Selection based Null pointer check elimination. @@ -192,7 +144,7 @@ FIRM_DLL void set_opt_ldst_only_null_ptr_exceptions(int value); * * This flag should be set for Java style languages. */ -FIRM_DLL void set_opt_sel_based_null_check_elim(int value); +FIRM_API void set_opt_sel_based_null_check_elim(int value); /** * Enable/Disable Global Null Pointer Test Elimination. @@ -203,7 +155,7 @@ FIRM_DLL void set_opt_sel_based_null_check_elim(int value); * * This flag should be set for C style languages. */ -FIRM_DLL void set_opt_global_null_ptr_elimination(int value); +FIRM_API void set_opt_global_null_ptr_elimination(int value); /** * Enable/Disable Automatic construction of Sync nodes during @@ -214,51 +166,13 @@ FIRM_DLL void set_opt_global_null_ptr_elimination(int value); * * This flag should be set for Java style languages. */ -FIRM_DLL void set_opt_auto_create_sync(int value); - -/** Enable/Disable normalizations of the firm representation. - * - * This flag guards transformations that normalize the Firm representation - * as removing Ids and Tuples, useless Phis, replacing SymConst(id) by - * Const(entity) and others. - * The transformations guarded by this flag are not guarded by flag - * "optimize". - * Many algorithms operating on Firm can not deal with constructs in - * the non-normalized representation. - * default: ON - * - * @note ATTENTION: not all such transformations are guarded by a flag. - */ -FIRM_DLL void set_opt_normalize(int value); - -/** - * Enable/Disable ConvB() nodes with a "semantic behavior", i.e. a real - * operation that must be executed. - */ -FIRM_DLL void set_opt_allow_conv_b(int value); - -/** Enable/Disable precise exception context. - * - * If enabled, all exceptions form a barrier for values, as in the - * following example: - * - * @code - * a = 1; - * b = 3 / 0; - * a = 2; - * @endcode - * - * If precise exception handling is enabled, an exception handler see a == 1, - * else it might see a == 2. - * Enable this for languages with strict exception order like Java. - */ -FIRM_DLL void set_opt_precise_exc_context(int value); +FIRM_API void set_opt_auto_create_sync(int value); /** Enable/Disable Alias analysis. * * If enabled, memory disambiguation by alias analysis is used. */ -FIRM_DLL void set_opt_alias_analysis(int value); +FIRM_API void set_opt_alias_analysis(int value); /** Enable/Disable closed world assumption. * @@ -266,31 +180,31 @@ FIRM_DLL void set_opt_alias_analysis(int value); * external types or callers exist. * This enables some powerful optimizations. */ -FIRM_DLL void set_opt_closed_world(int value); +FIRM_API void set_opt_closed_world(int value); /** * Save the current optimization state. */ -FIRM_DLL void save_optimization_state(optimization_state_t *state); +FIRM_API void save_optimization_state(optimization_state_t *state); /** * Restore the current optimization state. */ -FIRM_DLL void restore_optimization_state(const optimization_state_t *state); +FIRM_API void restore_optimization_state(const optimization_state_t *state); /** * Switches ALL optimizations off. */ -FIRM_DLL void all_optimizations_off(void); +FIRM_API void all_optimizations_off(void); /** * Possible verification modes. */ -typedef enum _firm_verification_t { - FIRM_VERIFICATION_OFF = 0, /**< do not verify nodes at all */ - FIRM_VERIFICATION_ON = 1, /**< do node verification and assert on error in debug version */ - FIRM_VERIFICATION_REPORT = 2, /**< do node verification, but report to stderr only */ - FIRM_VERIFICATION_ERROR_ONLY = 3 /**< do node verification, but NEVER do assert nor report */ +typedef enum firm_verification_t { + FIRM_VERIFICATION_OFF = 0, /**< do not verify nodes at all */ + FIRM_VERIFICATION_ON = 1, /**< do node verification and assert on error in debug version */ + FIRM_VERIFICATION_REPORT = 2, /**< do node verification, but report to stderr only */ + FIRM_VERIFICATION_ERROR_ONLY = 3 /**< do node verification, but NEVER do assert nor report */ } firm_verification_t; /** Select verification of IR nodes and types. @@ -298,7 +212,7 @@ typedef enum _firm_verification_t { * Per default the verification is in mode NODE_VERIFICATION_ASSERT. * Turn the verification off during development to check partial implementations. */ -FIRM_DLL void do_node_verification(firm_verification_t mode); +FIRM_API void do_node_verification(firm_verification_t mode); #include "end.h"