bugfix in ircgcons and some additional features
[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 #define DBG_OPT_STG                                                \
20   do {                                                       \
21           ir_node *ons[2];                                         \
22           ons[0] = oldn;                                           \
23           ons[1] = get_Block_cfgpred(oldn, 0);                     \
24           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_straightening); \
25         } while(0)
26
27 #define DBG_OPT_IFSIM                                                 \
28   do {                                                          \
29           ir_node *ons[4];                                            \
30           ons[0] = oldn;                                                 \
31           ons[1] = a;                                                 \
32           ons[2] = b;                                                 \
33           ons[3] = get_Proj_pred(a);                                  \
34           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_if_simplification); \
35         } while(0)
36
37 #define DBG_OPT_ALGSIM1                                               \
38   do {                                                          \
39           ir_node *ons[3];                                            \
40           ons[0] = oldn;                                              \
41           ons[1] = a;                                                 \
42           ons[2] = b;                                                 \
43           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
44         } while(0)
45
46 #define DBG_OPT_ALGSIM2                                               \
47   do {                                                          \
48           ir_node *ons[3];                                            \
49           ons[0] = oldn;                                              \
50           ons[1] = get_unop_op(n);                                    \
51     ons[2] = n;                                                 \
52           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
53         } while(0)
54
55 #define DBG_OPT_ALGSIM3                                               \
56   do {                                                          \
57           ir_node *ons[2];                                            \
58           ons[0] = oldn;                                              \
59           ons[1] = a;                                                 \
60           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
61         } while(0)
62
63 #define DBG_OPT_PHI                                                   \
64   do {                                                          \
65           ir_node *ons[2];                                            \
66           ons[0] = oldn;                                              \
67           ons[1] = first_val;                                         \
68           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_ssa);          \
69         } while(0)
70
71
72 #define DBG_OPT_WAW                                                   \
73   do {                                                          \
74           ir_node *ons[2];                                            \
75           ons[0] = oldn;                                              \
76           ons[1] = n;                                                 \
77           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_write_after_write);\
78         } while(0)
79
80 #define DBG_OPT_WAR                                                   \
81   do {                                                          \
82           ir_node *ons[2];                                            \
83           ons[0] = oldn;                                              \
84           ons[1] = c;                                                 \
85           __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_write_after_read); \
86         } while(0)
87
88 #define DBG_OPT_TUPLE                                                 \
89   do {                                                          \
90           ir_node *ons[3];                                            \
91           ons[0] = oldn;                                              \
92           ons[1] = a;                                                 \
93           ons[2] = n;                                                 \
94           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
95         } while(0)
96
97 #define DBG_OPT_ID                                                \
98   do {                                                          \
99           ir_node *ons[2];                                            \
100           ons[0] = oldn;                                              \
101           ons[1] = n;                                                 \
102           __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
103         } while(0)