+#include "beverify.h"
+#include "benode_t.h"
+
+static be_ra_chordal_opts_t options = {
+ BE_CH_DUMP_NONE,
+ BE_CH_SPILL_BELADY,
+ BE_CH_IFG_STD,
+ BE_CH_LOWER_PERM_SWAP,
+ BE_CH_VRFY_WARN,
+};
+
+/** Enable extreme live range splitting. */
+static int be_elr_split = 0;
+
+/** Assumed loop iteration count for execution frequency estimation. */
+static int be_loop_weight = 9;
+
+typedef struct _post_spill_env_t {
+ be_chordal_env_t cenv;
+ double pre_spill_cost;
+} post_spill_env_t;
+
+static be_ra_timer_t ra_timer = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+
+static const lc_opt_enum_int_items_t spill_items[] = {
+ { "belady", BE_CH_SPILL_BELADY },
+ { "morgan", BE_CH_SPILL_MORGAN },
+#ifdef WITH_ILP
+ { "remat", BE_CH_SPILL_REMAT },
+#endif /* WITH_ILP */
+ { NULL, 0 }
+};
+
+static const lc_opt_enum_int_items_t ifg_flavor_items[] = {
+ { "std", BE_CH_IFG_STD },
+ { "fast", BE_CH_IFG_FAST },
+ { "clique", BE_CH_IFG_CLIQUE },
+ { "pointer", BE_CH_IFG_POINTER },
+ { "list", BE_CH_IFG_LIST },
+ { "check", BE_CH_IFG_CHECK },
+ { NULL, 0 }
+};
+
+static const lc_opt_enum_int_items_t lower_perm_items[] = {
+ { "copy", BE_CH_LOWER_PERM_COPY },
+ { "swap", BE_CH_LOWER_PERM_SWAP },
+ { NULL, 0 }
+};
+
+static const lc_opt_enum_int_items_t lower_perm_stat_items[] = {
+ { NULL, 0 }
+};
+
+static const lc_opt_enum_int_items_t dump_items[] = {
+ { "spill", BE_CH_DUMP_SPILL },
+ { "live", BE_CH_DUMP_LIVE },
+ { "color", BE_CH_DUMP_COLOR },
+ { "copymin", BE_CH_DUMP_COPYMIN },
+ { "ssadestr", BE_CH_DUMP_SSADESTR },
+ { "tree", BE_CH_DUMP_TREE_INTV },
+ { "constr", BE_CH_DUMP_CONSTR },
+ { "lower", BE_CH_DUMP_LOWER },
+ { "spillslots", BE_CH_DUMP_SPILLSLOTS },
+ { "appel", BE_CH_DUMP_APPEL },
+ { "all", BE_CH_DUMP_ALL },
+ { NULL, 0 }
+};
+
+static const lc_opt_enum_int_items_t be_ch_vrfy_items[] = {
+ { "off", BE_CH_VRFY_OFF },
+ { "warn", BE_CH_VRFY_WARN },
+ { "assert", BE_CH_VRFY_ASSERT },
+ { NULL, 0 }
+};