Safer Macros.
[libfirm] / ir / ir / iropt_dbg.h
1
2
3 /* This file contains makros that generate the calls to
4    update the debug information after a transformation. */
5
6 #define SIZ(x)    sizeof(x)/sizeof((x)[0])
7
8 #define DBG_OPT_STG                                                \
9   do {                                                       \
10           ir_node *ons[2];                                         \
11           ons[0] = oldn;                                           \
12           ons[1] = get_Block_cfgpred(oldn, 0);                     \
13           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_straightening); \
14         } while(0)
15
16 #define DBG_OPT_IFSIM                                                 \
17   do {                                                          \
18           ir_node *ons[4];                                            \
19           ons[0] = oldn;                                                 \
20           ons[1] = a;                                                 \
21           ons[2] = b;                                                 \
22           ons[3] = get_Proj_pred(a);                                  \
23           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_if_simplification); \
24         } while(0)
25
26 #define DBG_OPT_ALGSIM1                                               \
27   do {                                                          \
28           ir_node *ons[3];                                            \
29           ons[0] = oldn;                                              \
30           ons[1] = a;                                                 \
31           ons[2] = b;                                                 \
32           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
33         } while(0)
34
35 #define DBG_OPT_ALGSIM2                                               \
36   do {                                                          \
37           ir_node *ons[3];                                            \
38           ons[0] = oldn;                                              \
39           ons[1] = get_unop_op(n);                                    \
40     ons[2] = n;                                                 \
41           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
42         } while(0)
43
44 #define DBG_OPT_ALGSIM3                                               \
45   do {                                                          \
46           ir_node *ons[2];                                            \
47           ons[0] = oldn;                                              \
48           ons[1] = a;                                                 \
49           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
50         } while(0)
51
52 #define DBG_OPT_PHI                                                   \
53   do {                                                          \
54           ir_node *ons[2];                                            \
55           ons[0] = oldn;                                              \
56           ons[1] = first_val;                                         \
57           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_ssa);          \
58         } while(0)
59
60
61 #define DBG_OPT_WAW                                                   \
62   do {                                                          \
63           ir_node *ons[2];                                            \
64           ons[0] = oldn;                                              \
65           ons[1] = n;                                                 \
66           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_write_after_write);\
67         } while(0)
68
69 #define DBG_OPT_WAR                                                   \
70   do {                                                          \
71           ir_node *ons[2];                                            \
72           ons[0] = oldn;                                              \
73           ons[1] = c;                                                 \
74           __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_write_after_read); \
75         } while(0)
76
77 #define DBG_OPT_TUPLE                                                 \
78   do {                                                          \
79           ir_node *ons[3];                                            \
80           ons[0] = oldn;                                              \
81           ons[1] = a;                                                 \
82           ons[2] = n;                                                 \
83           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
84         } while(0)
85
86 #define DBG_OPT_ID                                                \
87   do {                                                          \
88           ir_node *ons[2];                                            \
89           ons[0] = oldn;                                              \
90           ons[1] = n;                                                 \
91           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
92         } while(0)