X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeverify.h;h=72ce8b65017ef674835841b596b3eaa8d4f17877;hb=eba5516120eb38bcae5464e628aa0d2cb8708866;hp=ebfb980084aa8f22b1528178b5b6ca2fc17f02d3;hpb=e9137de01e1ed5e7a8baee8d23a59e82ad634af5;p=libfirm diff --git a/ir/be/beverify.h b/ir/be/beverify.h index ebfb98008..72ce8b650 100644 --- a/ir/be/beverify.h +++ b/ir/be/beverify.h @@ -1,33 +1,47 @@ -/** - * Author: Matthias Braun - * Date: 05.05.2006 - * Copyright: (c) Universitaet Karlsruhe - * License: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. - * CVS-Id: $Id$ +/* + * 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. */ /** - * @file beverify.h - * - * Various verify routines that check a scheduled graph for correctness - * - * @author Matthias Braun + * @file + * @brief Various verify routines that check a scheduled graph for correctness. + * @author Matthias Braun + * @date 05.05.2006 + * @version $Id$ */ -#ifndef BEVERIFY_H_ -#define BEVERIFY_H_ +#ifndef FIRM_BE_BEVERIFY_H +#define FIRM_BE_BEVERIFY_H + +#include "irgraph.h" -#include "bechordal.h" +#include "beirg.h" +#include "bearch.h" /** * Verifies, that the register pressure for a given register class doesn't exceed the limit * of available registers. * - * @param arch_env An architecture environment - * @param cls The register class to check - * @param irg The irg to check - * @return 1 if the pressure is valid, 0 otherwise + * @param birg The backend IRG. + * @param cls The register class to check. + * @param irg The irg to check. + * @return 1 if the pressure is valid, 0 otherwise. */ -int be_verify_register_pressure(const arch_env_t *arch_env, const arch_register_class_t* cls, ir_graph *irg); +int be_verify_register_pressure(const be_irg_t *birg, const arch_register_class_t* cls, ir_graph *irg); /** * Does some sanity checks on the schedule. @@ -35,6 +49,35 @@ int be_verify_register_pressure(const arch_env_t *arch_env, const arch_register_ * @param irg The irg to check * @return 1 if the schedule is valid, 0 otherwise */ -int be_verify_schedule(ir_graph *irg); +int be_verify_schedule(const be_irg_t *birg); + +/** + * Verify spillslots + * + * @param irg The irg to check + * @return 1 if spillslots are valid, 0 otherwise + */ +int be_verify_spillslots(const arch_env_t *arch_env, ir_graph *irg); + +/** + * Verify register allocation: Checks that no 2 live nodes have the same + * register assigned, also checks that each scheduled node has a register + * assigned. + * + * @param birg The birg to check + * @return 1 if verify succeeded, 0 otherwise + */ +int be_verify_register_allocation(const be_irg_t *birg); + +/** + * Verify that out edges are valid. + * + * @param irg The irg to check + * @param 1 if verify succeeded, 0 otherwise + * + * @note: This function requires O(|nodes|^2) memory. Too much for + * the Java Grande benchmark for instance! + */ +int be_verify_out_edges(ir_graph *irg); -#endif /* BEVERIFY_H_ */ +#endif /* FIRM_BE_BEVERIFY_H */