2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @brief Option handling for spiller.
9 * @author Matthias Braun
12 #ifndef FIRM_BE_BESPILL_H
13 #define FIRM_BE_BESPILL_H
17 extern int be_coalesce_spill_slots;
18 extern int be_do_remats;
21 * An entry in the list of spill-algorithms.
23 typedef struct be_spiller_t {
27 * @param irg the graph to spill on
28 * @param cls the register class to spill
30 void (*spill)(ir_graph *irg, const arch_register_class_t *cls);
34 * Register a new spill algorithm.
36 * @param name the name of the spill algorithm,
38 * @param spiller a spill entry
40 void be_register_spiller(const char *name, be_spiller_t *spiller);
43 * Execute the selected spill algorithm
45 * @param irg the graph to spill on
46 * @param cls the register class to spill
48 void be_do_spill(ir_graph *irg, const arch_register_class_t *cls);
51 * Adds additional copies, so constraints needing additional registers to be
52 * solved correctly induce the additional register pressure.
54 void be_pre_spill_prepare_constr(ir_graph *irg,
55 const arch_register_class_t *cls);