X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbespilloptions.h;h=c5a77fd1e2f64241a021e2b2bb4ffb937ff11787;hb=73ae17c0daf7b7779d669eb78f6bad992ad68111;hp=1f1e3834187191ef296169d3539c39849fdfdb0d;hpb=cf1e763f961a2d51d89df2497866902fbae4e366;p=libfirm diff --git a/ir/be/bespilloptions.h b/ir/be/bespilloptions.h index 1f1e38341..c5a77fd1e 100644 --- a/ir/be/bespilloptions.h +++ b/ir/be/bespilloptions.h @@ -1,18 +1,66 @@ /* - * Author: Matthias Braun - * Date: 12.10.2006 - * Copyright: (c) Universitaet Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ -#ifndef BESPILL_OPTIONS_H_ -#define BESPILL_OPTIONS_H_ + +/** + * @file + * @brief Option handling for spiller. + * @author Matthias Braun + * @date 12.10.2006 + * @version $Id$ + */ +#ifndef FIRM_BE_BESPILL_OPTIONS_H +#define FIRM_BE_BESPILL_OPTIONS_H + +#include "bearch.h" +#include "beirg.h" extern int be_coalesce_spill_slots; extern int be_do_remats; -#ifdef WITH_LIBCORE -#include -void be_spill_register_options(lc_opt_entry_t *grp); -#endif +/** + * An entry in the list of spill-algorithms. + */ +typedef struct be_spiller_t { + /** + * The spill function. + * + * @param birg the graph to spill on + * @param cls the register class to spill + */ + void (*spill)(be_irg_t *birg, const arch_register_class_t *cls); +} be_spiller_t; + +/** + * Register a new spill algorithm. + * + * @param name the name of the spill algorithm, + * used to select it + * @param spiller a spill entry + */ +void be_register_spiller(const char *name, const be_spiller_t *spiller); + +/** + * Execute the selected spill algorithm + * + * @param birg the graph to spill on + * @param cls the register class to spill + */ +void be_do_spill(be_irg_t *birg, const arch_register_class_t *cls); #endif