Fixed inlining (wrong substitution :-(, fixed wrong indent, removed global var
[libfirm] / ir / ir / iropt_dbg.h
1 /*
2  * Project:     libFIRM
3  * File name:   ir/ir/iropt_dbg.h
4  * Purpose:     Debug makros used in iropt.
5  * Author:      Goetz Lindenmaier
6  * Modified by:
7  * Created:
8  * CVS-ID:      $Id$
9  * Copyright:   (c) 2001-2003 Universität Karlsruhe
10  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
11  */
12
13
14 /* This file contains makros that generate the calls to
15    update the debug information after a transformation. */
16
17 #define SIZ(x)    sizeof(x)/sizeof((x)[0])
18
19 /**
20  * Merge the debug info due to a straightening optimization
21  */
22 #define DBG_OPT_STG                                                \
23   do {                                                       \
24           ir_node *ons[2];                                         \
25           ons[0] = oldn;                                           \
26           ons[1] = get_Block_cfgpred(oldn, 0);                     \
27           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_STG);    \
28           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_straightening); \
29         } while(0)
30
31 /**
32  * Merge the debug info due to an if simplification
33  */
34 #define DBG_OPT_IFSIM                                                 \
35   do {                                                          \
36           ir_node *ons[4];                                            \
37           ons[0] = oldn;                                                 \
38           ons[1] = a;                                                 \
39           ons[2] = b;                                                 \
40           ons[3] = get_Proj_pred(a);                                  \
41           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_IFSIM);          \
42           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_if_simplification); \
43         } while(0)
44
45 /**
46  * Merge the debug info due to an algebraic_simplification
47  */
48 #define DBG_OPT_ALGSIM0                                                 \
49   do {                                                                  \
50           stat_merge_nodes(&n, 1, &oldn, 1, STAT_OPT_CONST_EVAL);       \
51           __dbg_info_merge_pair(n, oldn, dbg_const_eval);               \
52         } while(0)
53
54 #define DBG_OPT_ALGSIM1                                               \
55   do {                                                          \
56           ir_node *ons[3];                                            \
57           ons[0] = oldn;                                              \
58           ons[1] = a;                                                 \
59           ons[2] = b;                                                 \
60           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM);    \
61           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
62         } while(0)
63
64 #define DBG_OPT_ALGSIM2                                               \
65   do {                                                          \
66           ir_node *ons[3];                                            \
67           ons[0] = oldn;                                              \
68           ons[1] = get_unop_op(n);                                    \
69           ons[2] = n;                                                 \
70           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM);    \
71           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
72         } while(0)
73
74 #define DBG_OPT_ALGSIM3                                               \
75   do {                                                          \
76           ir_node *ons[2];                                            \
77           ons[0] = oldn;                                              \
78           ons[1] = a;                                                 \
79           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM);    \
80           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
81         } while(0)
82
83 #define DBG_OPT_PHI                                                   \
84   do {                                                          \
85           ir_node *ons[2];                                            \
86           ons[0] = oldn;                                              \
87           ons[1] = first_val;                                         \
88           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_PHI);       \
89           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_ssa);   \
90         } while(0)
91
92
93 #define DBG_OPT_WAW                                                   \
94   do {                                                          \
95           ir_node *ons[2];                                            \
96           ons[0] = oldn;                                              \
97           ons[1] = n;                                                 \
98           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_WAW);       \
99           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_write_after_write);\
100         } while(0)
101
102 #define DBG_OPT_WAR                                                   \
103   do {                                                          \
104           ir_node *ons[2];                                            \
105           ons[0] = oldn;                                              \
106           ons[1] = c;                                                 \
107           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_WAR);       \
108           __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_write_after_read); \
109         } while(0)
110
111 #define DBG_OPT_TUPLE                                                 \
112   do {                                                          \
113           ir_node *ons[3];                                            \
114           ons[0] = oldn;                                              \
115           ons[1] = a;                                                 \
116           ons[2] = n;                                                 \
117           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_TUPLE);     \
118           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
119         } while(0)
120
121 #define DBG_OPT_ID                                                \
122   do {                                                          \
123           ir_node *ons[2];                                            \
124           ons[0] = oldn;                                              \
125           ons[1] = n;                                                 \
126           stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ID);        \
127           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
128         } while(0)