34d77b3ca6de367fb0ecc5fa0ddb255a649a24f0
[libfirm] / ir / ir / irflag_t.h
1 /*
2  * Project:     libFIRM
3  * File name:   ir/ir/irgraph.c
4  * Purpose:     Flags to control optimizations, inline implementation.
5  * Author:      Michael Beck
6  * Created:
7  * CVS-ID:      $Id$
8  * Copyright:   (c) 1998-2004 Universität Karlsruhe
9  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
10  */
11
12 /**
13  * @file irflag_t.h
14  *
15  * Inline implementation of Optimization flags.
16  *
17  * @author Michael Beck
18  */
19 #ifndef _IRFLAG_T_H_
20 #define _IRFLAG_T_H_
21
22 #include "irflag.h"
23
24 /**
25  * current libFIRM optimizations
26  */
27 typedef enum {
28 #define E_FLAG(name, value, def)        irf_##name = (1 << value),
29 #define I_FLAG(name, value, def)        irf_##name = (1 << value),
30
31 #include "irflag_t.def"
32         irf_last
33 #undef I_FLAG
34 #undef E_FLAG
35 } libfirm_opts_t;
36
37 extern optimization_state_t libFIRM_opt;
38 extern optimization_state_t libFIRM_verb;
39
40 extern int firm_verbosity_level;
41
42 /** initialises the flags */
43 void firm_init_flags(void);
44
45 /* generate the getter functions for external access */
46 #define E_FLAG(name, value, def)                    \
47 static INLINE int _get_opt_##name(void) {           \
48   return libFIRM_opt & irf_##name;                  \
49 }                                                   \
50 static INLINE int get_opt_##name##_verbose(void) {  \
51   return libFIRM_verb & irf_##name;                 \
52 }
53
54 /* generate the getter functions for internal access */
55 #define I_FLAG(name, value, def)                   \
56 static INLINE int get_opt_##name(void) {           \
57   return libFIRM_opt & irf_##name;                 \
58 }                                                  \
59 static INLINE int get_opt_##name##_verbose(void) { \
60   return libFIRM_verb & irf_##name;                \
61 }
62
63 #include "irflag_t.def"
64
65 #undef I_FLAG
66 #undef E_FLAG
67
68 static INLINE int _get_firm_verbosity (void) {
69         return firm_verbosity_level;
70 }
71
72 static INLINE int _get_optimize (void) {
73   return get_opt_optimize();
74 }
75
76 #define get_optimize()                           _get_optimize()
77 #define get_opt_cse()                            _get_opt_cse()
78 #define get_firm_verbosity()                     _get_firm_verbosity()
79 #define get_opt_dyn_meth_dispatch()              _get_opt_dyn_meth_dispatch()
80 #define get_opt_optimize_class_casts()           _get_opt_optimize_class_casts()
81 #define get_opt_suppress_downcast_optimization() _get_opt_suppress_downcast_optimization()
82
83 #endif /* _IRFLAG_T_H_ */