clarify some node comments
[libfirm] / ir / opt / opt_manage.h
1 /*
2  * Copyright (C) 2011 Karlsruhe Institute of Technology.  All right reserved.
3  *
4  * This file is part of libFirm.
5  *
6  * This file may be distributed and/or modified under the terms of the
7  * GNU General Public License version 2 as published by the Free Software
8  * Foundation and appearing in the file LICENSE.GPL included in the
9  * packaging of this file.
10  *
11  * Licensees holding valid libFirm Professional Edition licenses may use
12  * this file in accordance with the libFirm Commercial License.
13  * Agreement provided with the Software.
14  *
15  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE.
18  */
19
20 /**
21  * @file
22  * @brief   Optimization wrapper for specifying requirements
23  * @author  Andreas Zwinkau
24  */
25 #ifndef FIRM_OPT_MANAGE_H
26 #define FIRM_OPT_MANAGE_H
27
28 #include "config.h"
29
30 #include <stdbool.h>
31
32 #include "irgraph_t.h"
33
34 typedef struct optdesc_t {
35         /**
36          * The short name of the optimization
37          *
38          * Should not contain spaces, since it is used for the dumper filenames.
39          */
40         const char * const name;
41
42         /**
43          * required irg_state for this optimization
44          */
45         ir_graph_state_t requirements;
46
47         /**
48          * The optimization function itself
49          *
50          * @returns  zero by default; set some flags, if you guarantee some irg_state properties
51          **/
52         ir_graph_state_t (*const optimization)(ir_graph *irg);
53 } optdesc_t;
54
55 /** Apply an optimization to an ir graph.
56  *  Assures preconditions, invalidates afterwards, and runs the verifier.
57  *  Might also dump the irg.
58  */
59 void perform_irg_optimization(ir_graph *irg, optdesc_t *opt);
60
61 #endif