3 * File name: ir/ir/iropt_dbg.h
4 * Purpose: Debug makros used in iropt.
5 * Author: Goetz Lindenmaier
9 * Copyright: (c) 2001-2003 Universität Karlsruhe
10 * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
14 /* This file contains makros that generate the calls to
15 update the debug information after a transformation. */
17 #define SIZ(x) sizeof(x)/sizeof((x)[0])
21 * Merge the debug info due to dead code elimination
23 #define DBG_OPT_DEAD \
27 ons[1] = get_Block_cfgpred(oldn, 0); \
28 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_STG); \
29 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_dead_code); \
34 * Merge the debug info due to a straightening optimization
40 ons[1] = get_Block_cfgpred(oldn, 0); \
41 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_STG); \
42 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_straightening); \
46 * Merge the debug info due to an if simplification
48 #define DBG_OPT_IFSIM \
54 ons[3] = get_Proj_pred(a); \
55 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_IFSIM); \
56 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_if_simplification); \
60 * Merge the debug info due to an algebraic_simplification
62 #define DBG_OPT_ALGSIM0 \
64 stat_merge_nodes(&n, 1, &oldn, 1, STAT_OPT_CONST_EVAL); \
65 __dbg_info_merge_pair(n, oldn, dbg_const_eval); \
68 #define DBG_OPT_ALGSIM1 \
74 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM); \
75 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
78 #define DBG_OPT_ALGSIM2 \
82 ons[1] = get_unop_op(n); \
84 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM); \
85 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
88 #define DBG_OPT_ALGSIM3 \
93 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ALGSIM); \
94 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
101 ons[1] = first_val; \
102 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_PHI); \
103 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_ssa); \
107 #define DBG_OPT_WAW \
112 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_WAW); \
113 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_write_after_write);\
116 #define DBG_OPT_WAR \
121 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_WAR); \
122 __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_write_after_read); \
125 #define DBG_OPT_RAW \
130 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_RAW); \
131 __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_read_after_write); \
134 #define DBG_OPT_TUPLE \
140 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_TUPLE); \
141 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode); \
149 stat_merge_nodes(&n, 1, ons, SIZ(ons), STAT_OPT_ID); \
150 __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode); \