3 * File name: ir/ir/irgraph.c
4 * Purpose: Flags to control optimizations, inline implementation.
8 * Copyright: (c) 1998-2004 Universität Karlsruhe
9 * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
15 * Inline implementation of Optimization flags.
17 * @author Michael Beck
25 * current libFIRM optimizations
28 #define E_FLAG(name, value, def) irf_##name = (1 << value),
29 #define I_FLAG(name, value, def) irf_##name = (1 << value),
31 #include "irflag_t.def"
37 extern optimization_state_t libFIRM_opt;
38 extern optimization_state_t libFIRM_verb;
39 extern firm_verification_t opt_do_node_verification;
41 extern int firm_verbosity_level;
43 /** initialises the flags */
44 void firm_init_flags(void);
46 /* generate the getter functions for external access */
47 #define E_FLAG(name, value, def) \
48 static INLINE int _get_opt_##name(void) { \
49 return libFIRM_opt & irf_##name; \
51 static INLINE int get_opt_##name##_verbose(void) { \
52 return libFIRM_verb & irf_##name; \
55 /* generate the getter functions for internal access */
56 #define I_FLAG(name, value, def) \
57 static INLINE int get_opt_##name(void) { \
58 return libFIRM_opt & irf_##name; \
60 static INLINE int get_opt_##name##_verbose(void) { \
61 return libFIRM_verb & irf_##name; \
64 #include "irflag_t.def"
69 static INLINE int _get_firm_verbosity (void) {
70 return firm_verbosity_level;
73 static INLINE int _get_optimize (void) {
74 return get_opt_optimize();
77 static INLINE firm_verification_t
78 get_node_verification_mode(void) {
79 return opt_do_node_verification;
82 #define get_optimize() _get_optimize()
83 #define get_opt_cse() _get_opt_cse()
84 #define get_firm_verbosity() _get_firm_verbosity()
85 #define get_opt_dyn_meth_dispatch() _get_opt_dyn_meth_dispatch()
86 #define get_opt_optimize_class_casts() _get_opt_optimize_class_casts()
87 #define get_opt_suppress_downcast_optimization() _get_opt_suppress_downcast_optimization()
89 extern void firm_init_flags(void);
91 #endif /* _IRFLAG_T_H_ */