Safer Macros.
[libfirm] / ir / ir / iropt_dbg.h
index 79e2fe0..86db855 100644 (file)
@@ -3,87 +3,90 @@
 /* This file contains makros that generate the calls to
    update the debug information after a transformation. */
 
-#define DBG_OPT_STG                                                 \
-        {                                                           \
-         ir_node *ons[2];                                          \
-         ons[0] = oldn;                                               \
-         ons[1] = get_Block_cfgpred(n, 0);                         \
-         __dbg_info_merge_sets(&n, 1, ons, 2, dbg_straightening); \
-       }
+#define SIZ(x)    sizeof(x)/sizeof((x)[0])
+
+#define DBG_OPT_STG                                                \
+  do {                                                       \
+         ir_node *ons[2];                                         \
+         ons[0] = oldn;                                           \
+         ons[1] = get_Block_cfgpred(oldn, 0);                     \
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_straightening); \
+       } while(0)
 
 #define DBG_OPT_IFSIM                                                 \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[4];                                            \
          ons[0] = oldn;                                                 \
          ons[1] = a;                                                 \
          ons[2] = b;                                                 \
          ons[3] = get_Proj_pred(a);                                  \
-         __dbg_info_merge_sets(&n, 1, ons, 4, dbg_if_simplification); \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_if_simplification); \
+       } while(0)
 
 #define DBG_OPT_ALGSIM1                                               \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[3];                                            \
          ons[0] = oldn;                                              \
          ons[1] = a;                                                 \
          ons[2] = b;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 3, dbg_algebraic_simplification); \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
+       } while(0)
 
 #define DBG_OPT_ALGSIM2                                               \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[3];                                            \
          ons[0] = oldn;                                              \
          ons[1] = get_unop_op(n);                                    \
-          ons[2] = n;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 3, dbg_algebraic_simplification); \
-       }
+    ons[2] = n;                                                 \
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
+       } while(0)
 
 #define DBG_OPT_ALGSIM3                                               \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[2];                                            \
          ons[0] = oldn;                                              \
          ons[1] = a;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 2, dbg_algebraic_simplification); \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_algebraic_simplification); \
+       } while(0)
 
 #define DBG_OPT_PHI                                                   \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[2];                                            \
          ons[0] = oldn;                                              \
          ons[1] = first_val;                                         \
-         __dbg_info_merge_sets(&n, 1, ons, 2, dbg_opt_ssa);          \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_ssa);          \
+       } while(0)
 
 
 #define DBG_OPT_WAW                                                   \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[2];                                            \
          ons[0] = oldn;                                              \
          ons[1] = n;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 2, dbg_write_after_write);\
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_write_after_write);\
+       } while(0)
 
 #define DBG_OPT_WAR                                                   \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[2];                                            \
          ons[0] = oldn;                                              \
          ons[1] = c;                                                 \
-         __dbg_info_merge_sets(&c, 1, ons, 2, dbg_write_after_read); \
-       }
+         __dbg_info_merge_sets(&c, 1, ons, SIZ(ons), dbg_write_after_read); \
+       } while(0)
 
 #define DBG_OPT_TUPLE                                                 \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[3];                                            \
          ons[0] = oldn;                                              \
          ons[1] = a;                                                 \
          ons[2] = n;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 3, dbg_opt_auxnode);      \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
+       } while(0)
+
 #define DBG_OPT_ID                                                \
-        {                                                             \
+  do {                                                          \
          ir_node *ons[2];                                            \
          ons[0] = oldn;                                              \
          ons[1] = n;                                                 \
-         __dbg_info_merge_sets(&n, 1, ons, 2, dbg_opt_auxnode);      \
-       }
+         __dbg_info_merge_sets(&n, 1, ons, SIZ(ons), dbg_opt_auxnode);      \
+       } while(0)