X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftr%2Ftrvrfy.h;h=2e3e15666e92197dfebf62da7a671050147dcc93;hb=d0d85962ef52c14950db90e5981a7bea36023ab3;hp=160d4ea0970b88c0d8b1475b9352f53d9dfbedbc;hpb=d6b9cbe1e2cf35e970a2eedea4b2bd368e94b48b;p=libfirm diff --git a/ir/tr/trvrfy.h b/ir/tr/trvrfy.h index 160d4ea09..2e3e15666 100644 --- a/ir/tr/trvrfy.h +++ b/ir/tr/trvrfy.h @@ -1,41 +1,87 @@ - - +/* + * Project: libFIRM + * File name: ir/tr/trvrfy.h + * Purpose: Check types and entities for correctness. + * Author: Michael Beck, Goetz Lindenmaier + * Modified by: + * Created: 29.1.2003 + * CVS-ID: $Id$ + * Copyright: (c) 2003 Universität Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ #ifndef TRVRFY_H #define TRVRFY_H +#include "firm_types.h" + /** * @file trvrfy.h * * Methods to verify the type representations. * - * @author Goetz Lindenmaier + * @author Michael Beck, Goetz Lindenmaier * * Methods to verify the type representations. * Copyright 2003 University of Karlsruhe. * Created 29.1.2003. * - * $Id$ */ -#include "firm.h" - /** - * possible error codes + * possible trvrfy() error codes */ -enum trvrfy_error_codes { - no_error = 0, - error_ent_not_cont = 1, - error_null_mem, +enum trvrfy_error_codes { + no_error = 0, /**< no error */ + error_ent_not_cont, /**< overwritten entity not in superclass */ + error_null_mem, /**< compound contains NULL member */ + error_const_on_wrong_irg, /**< constant placed on wrong IRG */ + error_existent_entity_without_irg, /**< Method entities with pecularity_exist must have an irg */ + error_wrong_ent_overwrites, /**< number of entity overwrites exceeds number of class overwrites */ + error_inherited_ent_without_const, /**< inherited method entity not pointing to existent entity */ + error_glob_ent_allocation, /**< wrong allocation of a global entity */ + error_ent_const_mode, /**< Mode of constant in entity did not match entities type. */ + error_ent_wrong_owner /**< Mode of constant in entity did not match entities type. */ }; +/** + * Checks a type. + * + * @return + * 0 if no error encountered + */ +int check_type(ir_type *tp); + +/** + * Check an entity. Currently, we check only if initialized constants + * are build on the const irg graph. + * + * @return + * 0 if no error encountered + * != 0 a trvrfy_error_codes code + */ +int check_entity(entity *ent); /** * Walks the type information and performs a set of sanity checks. * + * Currently, the following checks are executed: + * - values of initialized entities must be allocated on the constant IRG + * - class types: doesn't have NULL members + * - class types: all overwrites are existent in the super type + * * @return * 0 if graph is correct * else error code. */ int tr_vrfy(void); +/** + * If NDEBUG is defined performs nothing, else calls the tr_vrfy() function. + */ +#ifdef NDEBUG +#define TR_VRFY() 0 +#else +#define TR_VRFY() tr_vrfy() +#endif + #endif /* TRVRFY_H */